Was Sie brauchen, ist kein Druckertreiber. Einer nannte es Print Monitor. Es ist eine DLL, die in Spooler.exe Prozess geladen wird. Die DLL gibt dem Spooler in der Initialisierungsphase logische Namen von Ports wie LPT1 :, FILE :, SPSPort: usw. Das mit einem Druckertreiber erstellte Optput muss auf beliebige Weise an ein Zielgerät gesendet werden. Diese Arbeit druckt Monitore wie "Standard TCP/IP Port" oder "Local Port".
Um den Druckermonitor zu schreiben, müssen Sie Windows Driver Kit herunterladen und installieren (WDK oder vor einiger Zeit DDK siehe http://www.microsoft.com/whdc/devtools/WDK/default.mspx). Weitere Informationen zum Schreiben des Druckermonitors finden Sie unter http://msdn.microsoft.com/en-us/library/ff563806(v=VS.85).aspx. Print Monitor ist eine DLL mit einer exportierten Funktion (siehe http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx). Ich empfehle Ihnen, mit der Änderung von LocalMon am lokalen Monitor zu beginnen, die Sie nach der Installation von WDK finden (siehe http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx).
Das praktischste Problem beim Schreiben des Druckermonitors ist die Anforderung, eine echte Multithread-DLL zu schreiben. Sie müssen sehr vorsichtig sein, verstehen und EnterCriticalSection
in allen Funktionen verwenden. Zum Debuggen des Druckermonitors sollten Sie Visual Studio Debugger mit dem Prozessspooler verbinden. Der Rest ist das gleiche wie das Schreiben einer Standard Windows Win32/Win64 DLL.
AKTUALISIERT: Noch eine kleine Bemerkung. Wenn Sie nicht möchten, dass der Druckertreiber irgendetwas mit den an den Drucker gesendeten Daten macht, können Sie den generischen Druckertreiber verwenden. Sie finden es unter "Generic", Drucker mit dem Namen "Generic/Text Only".Untersuchen Sie einige Treibereinstellungen, die Sie (wie CR LF-Einstellungen) hat
Das ist die richtige Antwort, ich habe solche Dinge getan. Aber Sie ** möchten nicht mehr als notwendig innerhalb des Spooler-Prozesses tun: Nachdem Sie die Daten greifen, starten Sie einen neuen Prozess, der das Zippen und E-Mail-Versand durchführt. – egrunin
@egrunin: Guter Vorschlag, um komplexere Arbeit in einem separaten Prozess zu machen! Ich habe auch vor vielen Jahren einen Print Monitor geschrieben und ich kann sagen, dass das komplexeste Problem das Debuggen in einer Multithread-Multiuser-Umgebung ist. Das Starten der separaten Prozesse kann das Debuggen erleichtern. – Oleg
Alle Links in diesem Artikel sind tot. Irgendein mögliches Update? – Attaque