【发布时间】: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