【问题标题】:Programatically getting printer queue at the printer以编程方式在打印机上获取打印机队列
【发布时间】:2018-03-09 13:05:40
【问题描述】:

我使用 Foxit Reader 将大量文档打印到打印机上。在某些时候,打印机开始“优化”文档队列,从而搞砸了我的打印顺序(并且没有停用它的选项)。

所以,我需要来自打印机的反馈,告诉我“我的队列中有 10 个文档”或“我还有 100 页要打印”,以便我可以等待进一步的打印命令。

打印后台处理程序不会缓冲我的文档,因此查询它对我没有任何帮助。

有什么方法可以实现吗?

【问题讨论】:

  • 可能,你试过什么?可能有几种方法,你试过了吗?搜索与 Windows 打印机相关的 API?快速谷歌搜索将我指向msdn.microsoft.com/en-us/library/windows/desktop/…
  • @bradbury9: 文档没有缓冲在 windows 的打印后台处理程序中,它们在打印机本身上缓冲。因此,查询窗口打印后台处理程序是没有用的。还有哪些其他方法?我一个都不知道。谷歌搜索也对我没有帮助。
  • 一个愚蠢的方法 - 你可以扫描假脱机目录并在它为空时启动新文档。

标签: c# windows printing


【解决方案1】:

我发现有一个名为SNMP 的东西,您可以在其中查询网络中的许多不同设备。

我了解到,有一个名为 SnmpSharpNet (also available on Nuget) 的库可以帮助您查询数据 - 最简单的方法如下所示(查询打印的总页数):

SimpleSnmp snmp = new SimpleSnmp("192.168.1.3", "public");

if (!snmp.Valid)
    return;

Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver1, new string[] { ".1.3.6.1.2.1.43.10.2.1.4.1.1" });

如果你想查询不同的数据谷歌“OID”。

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 2013-04-29
    • 2012-12-19
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2011-08-24
    • 2014-05-07
    • 1970-01-01
    相关资源
    最近更新 更多