【问题标题】:Why is it so difficult to find the printer status in windows?为什么在 Windows 中查找打印机状态如此困难?
【发布时间】:2014-06-18 15:48:01
【问题描述】:

使用 C# - 我正在尝试查找所有本地和在线打印机的列表(即已连接并准备好接受打印请求)

我知道打印机驱动程序可以工作 - 作业只会等到打印机重新联机,但我需要找到那些特定的联机。这些显然对 windows 可用,但 .net 框架似乎并没有准确地公开当前在线的那些。

我正在尝试使用许多不同的方法,但似乎没有一个能准确地工作

// Get a list of available printers.
var printServer = new PrintServer();
var printQueues = printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });
foreach (PrintQueue printQueue in printQueues)
{
    Console.WriteLine(printQueue.IsOffline); // This works for IsOffline, but doesn't tell us those that are online - and it's not an inverse relationship  
}

非常令人沮丧 - 感谢任何帮助。

应该添加我使用的是windows 8.1,并且该解决方案也应该适用于win 7+

编辑:

所以给定以下打印机集合:

我希望看到类似

的东西
Getting all Printers
Send To OneNote 2013 : Online
Pack1 : Offine
Microsoft XPS Document Writer : Online
Fax : Online
EPSONB12B28 (XP-412 413 415 Series) : Offine
Brother MFC-9970CDW Printer : Online

但在我看到的任何状态下,它们总是被报告为在线

【问题讨论】:

  • 您的问题到底是什么?你想知道为什么这么难吗?或者您会对有效的方法感到满意吗?
  • 嗯 - 主要是我想要一种打印机在线状态与 API 调用告诉我的内容相匹配的方法。所有方法都非常适合给我名称和支持的纸张尺寸 - 没有一种方法可以可靠地告诉我打印机当前是否在线
  • 这就是为什么大多数打印制造商都拥有具有双向通信功能的复杂驱动程序的原因。他们以一种安抚的方式处理这件事。您可以尝试 SNMP 来提取更多数据,但需要更详细地了解打印机(即:端口等)

标签: c# .net wpf windows printing


【解决方案1】:

我已经通过本机驱动程序或使用 Windows Management Instrumentation (WMI) 类查询了几乎所有可能的 Windows 设备。

要开始使用,请阅读这篇带有 C# 源代码的文章:http://www.codeproject.com/Articles/80680/Managing-Printers-Programatically-using-C-and-WMI

另外,不是 C# 而是 VB,这里有一些关于同一主题的快速浏览信息:http://msdn.microsoft.com/en-us/library/aa394598(v=vs.85).aspx

完整的 WMI 参考:http://msdn.microsoft.com/en-us/library/aa394572(v=VS.85).aspx

干杯,祝你好运!

【讨论】:

  • 感谢您提供这些 - 我已经仔细阅读了这些相同的文章,虽然它们似乎有我需要的信息,但我无法访问打印机的可用性属性。每次我尝试时,无论我将其转换为什么,它总是为空(在 win8.1、.net 4.5.1 中)
  • 您面临的问题是 WMI 从 SpoolSrv.exe 获取其信息 - WMI 查询报告 Spoolsrv 提供的任何状态。如果 SpoolSrv 为 READY,Win32_Printer 将其导出为“空闲”(PrinterStatus = 3 或 PrinterState = 0)
猜你喜欢
  • 1970-01-01
  • 2019-01-09
  • 2010-11-21
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
相关资源
最近更新 更多