【问题标题】:How to create own XP printer driver如何创建自己的XP打印机驱动程序
【发布时间】:2011-03-05 06:42:37
【问题描述】:

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

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

【问题讨论】:

    标签: windows-xp driver printing


    【解决方案1】:

    您需要的不是打印机驱动程序。有人将其命名为 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 设置)

    【讨论】:

    • 这是正确答案,我做过这样的事情。但是您不想在后台处理程序进程中做任何不必要的事情:获取数据后,启动一个执行压缩和发送电子邮件的新进程。
    • @egrunin:在单独的进程中进行更复杂的工作的好建议!多年前我还写了一个打印监视器,我可以说最复杂的问题是在多线程多用户环境中调试。启动单独的进程可以使调试更容易。
    • 本文中的所有链接都已失效。任何可能的更新?
    • @Attaque: 当前版本的WDK可以从here下载。 Print Monitor 的文档目前是here。 WDK 中 LOCALMON 示例的参考是 here。几年后,这些链接可能会因原因而断开。可以在 Internet 上搜索我在回答中使用的术语(如“打印机监视器”或“端口监视器”)。
    • 链接已重新启动并运行。可能是我的联系。我很抱歉。
    【解决方案2】:

    虽然我无法提供任何具体建议,但如果我想做你所描述的事情,我要做的第一件事就是阅读PDFCreator 的源代码——它是一个可以输出 PDF 的 Windows 打印驱动程序。

    【讨论】:

    • PDFCreator 在内部使用 RedMon(pages.cs.wisc.edu/~ghost/redmon) 来捕获打印数据。直接去 RedMon,它也是一个开源项目,用作端口监视器。
    • @Jason:+1 - 我特别推荐 redmon。事实上,您应该将其作为答案提交。
    【解决方案3】:

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

    C语言

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

    那么你可以使用

    http://sourceforge.net/projects/pdfcreator

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

    【讨论】:

      【解决方案4】:

      我在寻找同样的东西时发现了一个很好的演练:

      “使用 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 等)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-16
        • 2010-12-01
        • 1970-01-01
        • 2021-12-07
        • 2012-06-28
        • 2013-03-25
        • 1970-01-01
        相关资源
        最近更新 更多