gpt4 book ai didi

c++ - 检查是否连接了打印机

转载 作者:可可西里 更新时间:2023-11-01 13:28:40 31 4
gpt4 key购买 nike

在 Windows 中(在 Windows CE 中工作)是否有一种方法可以检查打印机是否已连接并与 C++ 中的 LPT1 通信?


[编辑]更多信息:

我们目前正在使用通用的 Windows CE 打印机驱动程序 - pcl.dll - 将其传递到 CreateDC 中,以获取打印机的 DC。

我们不能调用 PrintDlg()显示打印对话框,因为它“看起来太复杂了”,但我们也不能用 PD_RETURNDEFAULT 调用它因为我们不想使用默认打印机。所以,我们手动设置一个 DEVMODE传递给 CreateDC 的结构。

在我们拥有 DC 之后,我们调用 GetDeviceCaps() 来获取打印机的信息(例如页面宽度等),然后调用 StartPage()/EndPage()/ExtTextOut() 打印。

但是,如果没有连接打印机,程序会卡住大约一分钟,然后出现“中止/重试/失败?”对话框(我不知道这个过程中的哪一点卡住)。当您尝试打印时,其他软件不会卡住,因此必须有一种方法来防止这种情况...

最佳答案

当您在 Windows 中使用打印机时,您实际上不应该直接使用端口,而是通过打印机驱动程序接口(interface)。这淘汰了有关如何沟通的知识,并为您提供了一个适用于所有打印机(无论品牌和端口如何)的工具箱。

Windows API 为您提供了许多从驱动程序中提取额外信息的可能性。在我 14 年的打印机开发过程中,Microsoft 从未添加过对丰富打印机状态的支持(尽管我不知道他们是否在 Windows 7 中更改了它)。我们和许多其他打印机开发人员一样,不得不扩展打印机驱动程序以向应用程序提供更多信息。

您应该询问您的打印机开发商他们是否有 Windows CE 驱动程序。我不确定插入/拔出并行打印机时是否生成了 DEVICE_CHANGE 消息。它适用于 USB 打印机(无需在注册表中乱搞)。

您可以阅读有关打印子系统的更多信息 here

关于c++ - 检查是否连接了打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3727294/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com