我想检测打印机是否在线/离线之前尝试打印。 如果它处于脱机状态 - 打印对话框将不可见。
Win32 API的“OpenPrinter”等似乎可以在假脱机程序队列上运行 比打印机本身,并且只会离线报告打印机 AFTER a 文件被发送,这太迟了。
问题: 如何在不发送打印件的情况下判断打印机是否处于离线/在线状态?
编辑:
Offline - printer is turned off
OnLine - printer is turned On
答案 0 :(得分:4)
据推测,您知道打印机的名称或其他详细信息。
那么,只需将EnumPrinters
与PRINTER_INFO_2
一起使用,然后检查PRINTER_STATUS_OFFLINE
(或任何其他您希望避免的状态)。
或者,您可以尝试使用SetupDi*
函数(也称为Setup API)来确定此时是否连接了与打印机匹配的USB设备。
答案 1 :(得分:0)
我认为这不可能。
正如您已经发现的那样,这是使用假脱机程序抽象的,假脱机程序状态并不总是反映打印机状态。
所以这是Windows中的设计。
如果您只有一种特定的打印机类型,则可以查询它是否已连接到USB。