2010-06-18 59 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

相关问题