EndDocPrinter 在没有 Shell 的情况下休眠 3 秒 (explorer.exe)

发布于 2024-09-13 07:26:39 字数 531 浏览 5 评论 0原文

在调试时,当 POS 具有默认 Windows shell (explorer.exe) 时,它会成功打印,但如果我们用我们的程序或任何其他程序(例如 cmd.exe)替换默认 Windows shell,并且我们使用相同的功能进行打印,它在 EndDocPrinter 调用上休眠大约 3 秒。

在 12 秒内打印 3 张票是不可接受的,我现在不知道要测试什么。

一个解决方法是启动没有任务栏(蓝色底栏)的标准 shell,但显然不可能使其从 Windows 会话的开始到结束都隐藏。

这不是驱动程序的问题,因为我们使用打印机驱动程序和一些标准打印机驱动程序(仅通用文本、hplaserjet4 等)对其进行测试。

使用 Windows XP Embedded、Windows Embedded 2009、Windows XP Professional 开发 POS。

使用 OpenPrinter、StartDocPrinter、StartPagePrinter、WritePrinter、EndPagePrinter 和 EndDocPrinter 函数打印文档

On Debug, when the POS has the default windows shell (explorer.exe) it prints sucessfully, but if we replace the default windows shell with our program or any other program (for example cmd.exe) and we print with the same functions, it sleeps on the EndDocPrinter call about 3 secs.

Is unnaceptable to print 3 tickets in 12 secs, and i have no idea what to test now.

An a workarround will be to start the standard shell without taskbar (blue bottom bar), but apparently it is not posible to make it hidden from start to end of the windows session.

It is not a problem of the driver, cause we test it with our printer driver and some standard printer drivers as generic text only, hplaserjet4, etc.

Developing a POS with Windows XP Embedded, Windows Embedded 2009, Windows XP Proferssional.

Printing a Documents with the OpenPrinter, StartDocPrinter, StartPagePrinter, WritePrinter, EndPagePrinter and EndDocPrinter Functions

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鹿港巷口少年归 2024-09-20 07:26:39

我反汇编了EndDocPrinter,它似乎试图找到一个类名为PrintTray_Notify_WndClass的窗口。使用该名称注册一个新类并创建一个隐藏窗口消除了延迟。这是一个丑陋的解决方法,随时都可能崩溃。仅在 XP SP3 中测试。

当然,在完成所有这些工作之后,我用谷歌搜索了 PrintTray_Notify_WndClass 并发现了这个:
http://social.msdn .microsoft.com/Forums/en-US/embeddedwindowscomponents/thread/ecff648f-fc01-477c-ba3b-b92272c4f3a4

I disassembled EndDocPrinter, and it seems to try to find a window with classname PrintTray_Notify_WndClass. Registering a new class with that name and creating a hidden window got rid of the delay. This is an ugly workaround that can break at any time. Tested only in XP SP3.

Of course, after all that work I googled PrintTray_Notify_WndClass and found this:
http://social.msdn.microsoft.com/Forums/en-US/embeddedwindowscomponents/thread/ecff648f-fc01-477c-ba3b-b92272c4f3a4

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文