2010-06-18 7 views
12

Jak mogę stworzyć własny sterownik drukarki XP, który będzie wykonać następujące czynności:Jak stworzyć własne XP sterownik drukarki

  • drukuj do pliku (prawdopodobnie XPS format)
  • umieścić ten plik pod hasłem chroniony plik ZIP
  • e-mail plik zip do skonfigurowanego adres email

Odpowiedz

17

To, czego potrzebujesz, nie jest sterownikiem drukarki. Jeden nazwał go Monitor druku. Jest to biblioteka DLL, która zostanie załadowana do procesu Spooler.exe. Biblioteka DLL przekazuje Buforowi w fazie inicjalizacji logiczne nazwy portów takich jak LPT1 :, PLIK :, SPSPort: itd. Optput przygotowany za pomocą sterownika drukarki musi być wysłany w jakikolwiek sposób do urządzenia docelowego. Ta praca drukuje monitory takie jak "Standardowy port TCP/IP" lub "Port lokalny".

Aby napisać monitor drukarki, należy pobrać i zainstalować zestaw Windows Driver Kit (WDK lub jakiś czas temu DDK patrz http://www.microsoft.com/whdc/devtools/WDK/default.mspx). Więcej informacji na temat pisania monitora drukarki można znaleźć pod numerem http://msdn.microsoft.com/en-us/library/ff563806(v=VS.85).aspx. Monitor drukowania to biblioteka DLL z wyeksportowaną funkcją (patrz http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx). Polecam, aby rozpocząć od modyfikowania LocalMonitor LocalMon, który zostanie wykryty po zainstalowaniu WDK (zobacz http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx).

Najbardziej praktycznym problemem przy pisaniu monitora drukarki jest wymóg pisania prawdziwego wielowątkowego pliku DLL. Musisz być bardzo ostrożny, zrozumieć i używać EnterCriticalSection we wszystkich funkcjach. Do debugowania monitora drukarki powinieneś podłączyć Visual Studio Debugger do Spoolera procesu. Reszta jest taka sama jak przy pisaniu standardowej biblioteki DLL systemu Windows Win32/Win64.

ZAKTUALIZOWANA: Jeszcze jedna mała uwaga. Jeśli nie chcesz, aby sterownik drukarki robił cokolwiek z danymi wysłanymi do drukarki, możesz użyć ogólnego sterownika drukarki. Znajdziesz go w "Generycznej" produkcji, drukarce o nazwie "Generic/Text Only".Zbadać niektóre ustawienia sterownika który was (jak ustawieniami LF CR)

+0

To jest poprawna odpowiedź, zrobiłem takie rzeczy. Ale Ty ** nie chcesz robić niczego więcej niż to konieczne w procesie buforowania: po pobraniu danych, rozpocznij nowy proces, który obsługuje składowanie i wysyłanie wiadomości e-mail. – egrunin

+0

@egrunin: Dobra sugestia, aby bardziej skomplikowane prace w ramach oddzielnych procesów! Napisałem także wiele lat temu o programie Print Monitor i mogę powiedzieć, że najbardziej złożonym problemem jest debugowanie w środowisku wielodostępowym dla wielu użytkowników. Rozpoczęcie oddzielnych procesów może ułatwić debugowanie. – Oleg

+0

Wszystkie linki w tym artykule są martwe. Każda możliwa aktualizacja? – Attaque

3

Chociaż nie mogę zaoferować żadnych konkretnych rad, gdybym chciał zrobić wh opisując, pierwszą rzeczą, którą mógłbym zrobić, jest odczytanie źródła dla PDFCreator - jest to sterownik drukarki Windows, który może wypluć pliki PDF.

+0

Link do kodu źródłowego w tej witrynie nie działa. – CJ7

+0

Oh, strange = \ Może tutaj: http://sourceforge.net/projects/pdfcreator? –

+4

PDFCreator wewnętrznie używa RedMon (http://pages.cs.wisc.edu/~ghost/redmon/) do przechwytywania danych drukowania. Przejdź bezpośrednio do RedMon, jest to również projekt opensource działający jako monitor portu. – Jason