我想检测打印机是否在线/离线之前试图打印。 如果它处于脱机状态 - 打印对话框将不可见。如何检测连接的USB打印机是打开还是关闭?
的Win32 API中的“OpenPrinter”等,似乎在后台打印队列中,而不是 打印机本身的工作,并且使打印机脱机后一个 文档发送将只报告,whichis为时已晚。
问题: 如何判断打印机是否脱机/联机而不发送打印输出?
编辑:
Offline - printer is turned off
OnLine - printer is turned On
我想检测打印机是否在线/离线之前试图打印。 如果它处于脱机状态 - 打印对话框将不可见。如何检测连接的USB打印机是打开还是关闭?
的Win32 API中的“OpenPrinter”等,似乎在后台打印队列中,而不是 打印机本身的工作,并且使打印机脱机后一个 文档发送将只报告,whichis为时已晚。
问题: 如何判断打印机是否脱机/联机而不发送打印输出?
编辑:
Offline - printer is turned off
OnLine - printer is turned On
我不认为这是可能的。
正如您已经发现这是使用假脱机程序抽象出来的,并且假脱机程序状态并不总是反映打印机状态。
所以这是在Windows中的设计。
如果您只有一种特定的打印机类型,您可以查询它是否连接到USB。
http://stackoverflow.com/questions/4838033/getting-the-port-name-of-a-connected-usb-device –
实际上,即使连接了多台打印机,您也可以进行查询。 – 0xC0000022L
当然,我的意思是如果程序必须在不同系统上查询多种打印机类型,它可能会变得更加复杂。 –
想必您知道打印机的名称或其他相关详细信息。
好,然后只需使用EnumPrinters
与PRINTER_INFO_2
和检查PRINTER_STATUS_OFFLINE
(或您想任何其他状态避免)。
或者,您可以尝试使用SetupDi*
函数(aka Setup API)来确定在此刻是否连接了与打印机匹配的USB设备。
+1探测USB匹配设备是很好的方向。也许这需要一个新的职位。 – menjaraz
在线/离线对于这个问题的意义是什么?离线是否意味着断开连接,或者是否还有其他可能需要这种方式的条件? – 0xC0000022L