如何创建自己的XP打印机驱动程序

时间:2010-06-18 04:42:44

标签: windows-xp driver printing

我如何创建自己的XP打印机驱动程序,它将执行以下操作:

  • 打印到文件(可能是XPS 格式)
  • 将此文件放入密码中 受保护的ZIP文件
  • 将zip文件通过电子邮件发送给已配置的 电子邮件地址

4 个答案:

答案 0 :(得分:18)

您需要的不是打印机驱动程序。一个名为打印监视器。它是一个DLL,将在Spooler.exe进程中加载​​。 DLL在初始化阶段为Spooler提供端口的逻辑名称,如LPT1:,FILE:,SPSPort:等。使用打印机驱动程序准备的optput必须以任何方式发送到目标设备。这项工作确实打印了“标准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。 Print Monitor是一个带有一些导出功能的DLL(参见http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx)。我建议您先修改Local Monitor示例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设置)

答案 1 :(得分:3)

虽然我不能提供任何具体建议,但如果我想做你所描述的内容,我要做的第一件事是阅读PDFCreator的来源 - 这是一个可以吐出PDF的Windows打印驱动程序

答案 2 :(得分:2)

合并这些程序,首先是cpri(通过代码访问打印机设备)

用C语言

http://sourceforge.net/projects/cpri/

然后你可以使用

http://sourceforge.net/projects/pdfcreator

获取虚拟打印机以生成pdf,xps格式输出

答案 3 :(得分:0)

我在寻找同样的事情时找到了一个很好的演练:

“使用Ghostscript在Windows中创建虚拟Postscript打印机”

http://www.stat.tamu.edu/~henrik/GSPSprinter/GSPSprinter.html

ghostscript支持的输出设备在这里: http://pages.cs.wisc.edu/~ghost/doc/cvs/Devices.htm(PDF,Postscript,PNG等)。

Example of redirecting printer to a program - using tutorial