在调试时,当POS具有默认的Windows shell(explorer.exe)时,它会成功打印,但是如果我们用我们的程序或任何其他程序(例如cmd.exe)替换默认的Windows shell,我们将使用相同的功能,它在EndDocPrinter调用中休眠大约3秒。
在12秒内打印3张票是不可能的,我不知道现在要测试什么。
一个workarround将启动没有任务栏的标准shell(蓝色底部栏),但显然从Windows会话的开始到结束隐藏它是不可行的。
这不是驱动程序的问题,因为我们使用我们的打印机驱动程序和一些标准打印机驱动程序测试它只作为通用文本,hplaserjet4等。
使用Windows XP Embedded,Windows Embedded 2009,Windows XP Proferssional开发POS。
使用OpenPrinter,StartDocPrinter,StartPagePrinter,WritePrinter,EndPagePrinter和EndDocPrinter函数打印文档
答案 0 :(得分:0)
我反汇编了EndDocPrinter,它似乎试图找到一个类名为PrintTray_Notify_WndClass的窗口。注册具有该名称的新类并创建隐藏窗口可以消除延迟。这是一个丑陋的解决方法,可以随时破解。仅在XP SP3中测试。
当然,在完成所有这些工作之后,我用Google搜索PrintTray_Notify_WndClass并发现了这个: http://social.msdn.microsoft.com/Forums/en-US/embeddedwindowscomponents/thread/ecff648f-fc01-477c-ba3b-b92272c4f3a4