【发布时间】:2011-03-05 06:42:37
【问题描述】:
我将如何创建我自己的 XP 打印机驱动程序,它将执行以下操作:
- 打印到文件(可能是 XPS 格式)
- 将此文件放入密码 受保护的 ZIP 文件
- 通过电子邮件将 zip 文件发送到已配置的 电子邮件地址
【问题讨论】:
标签: windows-xp driver printing
我将如何创建我自己的 XP 打印机驱动程序,它将执行以下操作:
【问题讨论】:
标签: windows-xp driver printing
您需要的不是打印机驱动程序。有人将其命名为 Print Monitor。它是一个 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)。我建议您从修改本地监视器示例 LocalMon 开始,您可以在安装 WDK 后找到完整的源代码(请参阅http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx)。
编写打印机监视器最实际的问题是需要编写一个真正的多线程DLL。您必须非常小心,理解并在所有功能中使用EnterCriticalSection。对于打印机监视器的调试,您应该将 Visual Studio Debugger 连接到进程 Spooler。其余与编写标准windows Win32/Win64 DLL运行相同。
已更新:再补充一点。如果您不希望打印机驱动程序对发送到打印机的数据执行任何操作,则可以使用通用打印机驱动程序。您将在“通用”制造下找到它,打印机名称为“通用/纯文本”。检查您拥有的一些驱动程序设置(如 CR LF 设置)
【讨论】:
虽然我无法提供任何具体建议,但如果我想做你所描述的事情,我要做的第一件事就是阅读PDFCreator 的源代码——它是一个可以输出 PDF 的 Windows 打印驱动程序。
【讨论】:
结合这些程序,首先是 cpri(通过您的代码访问打印机设备)
C语言
http://sourceforge.net/projects/cpri/
那么你可以使用
http://sourceforge.net/projects/pdfcreator
获取虚拟打印机生成pdf、xps格式输出
【讨论】:
我在寻找同样的东西时发现了一个很好的演练:
“使用 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 等)。
【讨论】: