【问题标题】:How to detect if a connected USB printer is on or off?如何检测连接的 USB 打印机是打开还是关闭?
【发布时间】:2011-11-17 12:32:52
【问题描述】:

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

Win32 API 的“OpenPrinter”等似乎在后台处理程序队列上工作,而不是 比打印机本身,并且只会在之后报告打印机脱机 文件已发送,为时已晚。

问题: 如何在不向其发送打印输出的情况下判断打印机是否离线/在线?

编辑:

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

【问题讨论】:

  • 在线/离线对于这个问题意味着什么?离线是否意味着断开连接,或者您可能希望以这种方式捕获任何其他情况?

标签: windows delphi winapi usb


【解决方案1】:

大概您知道打印机的名称或有关它的其他详细信息。

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

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

【讨论】:

  • +1 探测 USB 匹配设备是一个很好的方向。也许这需要一个新帖子。
【解决方案2】:

我认为这是不可能的。

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

所以这是 Windows 设计的。

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

【讨论】:

  • 其实连多台打印机都可以查询。
  • 当然,我的意思是如果程序必须查询不同系统上的多种打印机类型,它可能会变得更加复杂。
猜你喜欢
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2011-11-20
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多