如何检测连接的USB打印机是打开还是关闭?

时间:2011-11-17 12:32:53

标签: windows delphi winapi usb

我想检测打印机是否在线/离线之前尝试打印。 如果它处于脱机状态 - 打印对话框将不可见。

Win32 API的“OpenPrinter”等似乎可以在假脱机程序队列上运行 比打印机本身,并且只会离线报告打印机 AFTER a 文件被发送,这太迟了。

问题: 如何在不发送打印件的情况下判断打印机是否处于离线/在线状态?

编辑:

Offline - printer is turned off
OnLine  - printer is turned On

2 个答案:

答案 0 :(得分:4)

据推测,您知道打印机的名称或其他详细信息。

那么,只需将EnumPrintersPRINTER_INFO_2一起使用,然后检查PRINTER_STATUS_OFFLINE(或任何其他您希望避免的状态)。

或者,您可以尝试使用SetupDi*函数(也称为Setup API)来确定此时是否连接了与打印机匹配的USB设备。

答案 1 :(得分:0)

我认为这不可能。

正如您已经发现的那样,这是使用假脱机程序抽象的,假脱机程序状态并不总是反映打印机状态。

所以这是Windows中的设计。

如果您只有一种特定的打印机类型,则可以查询它是否已连接到USB。