使用C ++捕获windows打印作业

时间:2014-03-13 12:59:58

标签: c++ windows printing spooler

问题

我有一台连接到打印机的Windows XP电脑。这台电脑运行一个软件,我创建和发送打印作业到打印机。最近,打印机死了,我无法获得新的打印机。该程序配置为打印到此特定打印机,这是一个问题。

问题

有没有办法捕获发送到Windows打印后台处理程序的数据?从我发现的,我必须开发一个打印监视器(.dll文件将由spooler.exe读取,如果我错了,请纠正我),但是对于这样的问题,这似乎相当复杂。我一直在搜索Print Spooler API,但GetJob方法从我看到的只返回有关打印作业的信息,而不是打印的实际数据。

我想抓住这些数据,然后在另一个我自己编写的程序中处理它。这不是真正的问题,我更关心的是知道是否有可能从打印假脱机程序中捕获数据,并且如果可能的话可以提示我如何做到这一点。

谢谢。

1 个答案:

答案 0 :(得分:3)

你的问题比你想象的更严重。将假脱机打印机数据发送到特定打印机的任务是调用打印处理器,该处理器位于打印监视器之前的打印机链中。这里的文档:http://msdn.microsoft.com/en-us/library/windows/hardware/ff551771%28v=vs.85%29.aspx

假脱机数据可以是几种不同格式之一,对于其中一些格式,可能无法重定向到不同类型的打印机。你没有提到你正在处理什么类型的打印机。

这是相当严肃的事情:编写和调试其中一个婴儿需要很高的技能和对Windows技术的理解。

编辑:数据处于增强型图元文件格式的可能性很大,您需要利用内置转换器将其转换为新打印机的命令。