Ce dont vous avez besoin n'est pas un pilote d'imprimante. On l'a appelé Print Monitor. C'est une DLL, qui sera chargée dans le processus Spooler.exe. La DLL donne à Spooler lors de la phase d'initialisation des noms logiques de ports tels que LPT1 :, FILE :, SPSPort: etc. L'optput préparé avec un pilote d'imprimante doit être envoyé de n'importe quelle manière vers un périphérique de destination. Ce travail imprime des moniteurs tels que "Port TCP/IP standard" ou "Port local".
Pour écrire un moniteur d'imprimante, vous devez télécharger et installer le Kit de pilotes Windows (WDK ou DDK il y a quelque temps, voir http://www.microsoft.com/whdc/devtools/WDK/default.mspx). Pour plus d'informations sur l'écriture d'un moniteur d'imprimante, voir http://msdn.microsoft.com/en-us/library/ff563806(v=VS.85).aspx. Print Monitor est une DLL avec une fonction exportée (voir http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx). Je vous recommande de commencer par modifier l'exemple de Local Monitor LocalMon, le sod source complet que vous trouvez après l'installation de WDK (voir http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx).
Le problème le plus pratique avec l'écriture de moniteur d'imprimante est l'exigence d'écriture d'une DLL multithread réel. Vous devez être très prudent, comprendre et utiliser EnterCriticalSection
dans toutes vos fonctions. Pour le débogage du moniteur de l'imprimante, vous devez connecter Visual Studio Debugger au spouleur du processus. Le reste est le même que l'écriture d'une DLL Windows Win32/Win64 standard en cours d'exécution.
MISE À JOUR: Encore une petite remarque. Si vous ne voulez pas que le pilote d'imprimante fasse quoi que ce soit avec les données envoyées à l'imprimante, vous pouvez utiliser un pilote d'imprimante générique. Vous le trouverez sous "Generic" fabrication, imprimante avec le nom "Generic/Text Only".Examinez certains paramètres du pilote qui vous a (comme les paramètres CR LF)
C'est la bonne réponse, j'ai fait des choses comme ça. Mais vous ** ne voulez pas en faire plus que nécessaire dans le processus de spouleur: après avoir récupéré les données, démarrez un nouveau processus qui effectue le zipping et l'envoi par courrier électronique. – egrunin
@egrunin: Bonne suggestion pour faire un travail plus complexe dans un processus séparé! J'ai aussi écrit il y a plusieurs années un Print Monitor et je peux dire que le problème le plus complexe est le débogage dans un environnement multi-thread multi-utilisateur. Le démarrage des processus séparés peut faciliter le débogage. – Oleg
Tous les liens dans cet article sont morts. Toute mise à jour possible? – Attaque