2010-06-18 63 views
12

我將如何創建自己的XP打印機驅動程序將執行以下操作:如何創建自己的XP打印機驅動程序

  • 打印到文件(可能XPS 格式)
  • 把這個文件放到一個密碼 受保護的ZIP文件
  • 電子郵件的ZIP文件來配置的 電子郵件地址

回答

17

,你需要的不是一個打印機驅動程序。一個叫做Print Monitor。它是一個DLL,它將在Spooler.exe進程中加載​​。 DLL在初始化階段爲LPT1:,FILE :, SPSPort等端口的邏輯名稱提供後臺處理程序:使用打印機驅動程序準備的選擇輸出必須以任何方式發送到目標設備。這項工作可以打印「標準TCP/IP端口」或「本地端口」等監視器。

要寫出你需要下載和安裝Windows驅動程序工具包(WDK或前一段時間看到DDK http://www.microsoft.com/whdc/devtools/WDK/default.mspx)打印機監控。有關編寫打印機監視器的更多信息,請參閱http://msdn.microsoft.com/en-us/library/ff563806(v=VS.85).aspx。打印監視器是一個具有一些導出功能的DLL(請參閱http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx)。我建議您首先修改本地監視器示例LocalMon,它是在安裝WDK之後找到的完整源代碼(請參閱http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx)。

的與打印機監控的寫作最實際的問題就是寫一個真正的多線程DLL的要求。你必須非常小心,理解並在你的所有功能中使用EnterCriticalSection。對於打印機監視器的調試,您應該將Visual Studio Debugger連接到進程後臺處理程序。其餘部分與編寫運行的標準Windows Win32/Win64 DLL相同。

修訂:一個更小的話。如果您不希望打印機驅動程序對發送給打印機的數據執行任何操作,則可以使用通用打印機驅動程序。您可以在「Generic」製造商名下找到它,名稱爲「Generic/Text Only」。檢查你有(像CR LF設置)某些驅動程序設置

+0

這是正確的答案,我做過這樣的事情。但是你不希望在後臺處理程序中做更多的事情:在你獲取數據之後,開始一個新的進程來完成壓縮和電子郵件。 – egrunin 2010-06-29 00:56:47

+0

@egrunin:建議在獨立的流程中進行更復雜的工作!我多年前也寫了一個Print Monitor,我可以說最複雜的問題是在多線程多用戶環境中進行調試。啓動單獨的進程可以使調試更容易。 – Oleg 2010-06-29 08:14:25

+0

這篇文章中的所有鏈接都是死的。任何可能的更新? – Attaque 2014-03-13 11:58:52

3

雖然我不能提供任何具體的建議,如果我想要做WH在你描述的時候,我要做的第一件事是通過PDFCreator的源碼讀取 - 這是一個可以吐出PDF的Windows打印驅動程序。

+0

的鏈接,在該網站的源代碼不起作用。 – CJ7 2010-06-18 05:41:56

+0

哦,奇怪= \也許在這裏:http://sourceforge.net/projects/pdfcreator? – 2010-06-18 12:43:37

+4

PDFCreator在內部使用RedMon(http://pages.cs.wisc.edu/~ghost/redmon/)來捕獲打印數據。直接轉到RedMon,它也是一個開源項目,可用作端口監視器。 – Jason 2010-06-23 17:42:31

相關問題