如何从打印机队列中检索列表或作业数?
我正在寻找一种从特定打印机获取列表或作业数量的方法。 在最好的情况下,我希望有一个“作业对象”代表一个打印作业及其在打印队列中的名称。
这是必需的,因为我需要监视打印机的状态,这样我就可以用新的一批文件重新填充打印队列而不会溢出打印假脱机程序
提前致谢!
编辑:添加解决方案的代码片段
private int GetNumberOfPrintJobs() { LocalPrintServer server = new LocalPrintServer(); PrintQueueCollection queueCollection = server.GetPrintQueues(); PrintQueue printQueue = null; foreach (PrintQueue pq in queueCollection) { if (pq.FullName == PrinterName) printQueue = pq; } int numberOfJobs = 0; if (printQueue != null) numberOfJobs = printQueue.NumberOfJobs; return numberOfJobs; }
您可以在System.Printing命名空间中使用.NET 3.0 PrintQueue类。 其NumberOfJobs属性告诉您排队的作业数,GetPrintJobInfoCollection()返回所有作业的详细信息。 请注意,它没有任何事件告诉您作业集合已更改,您需要使用计时器进行轮询。 一秒钟左右应该没问题。
您可以使用WMI获取有关设备和内容的系统信息。
看到这篇文章
- 在New AppDomain中加载程序集而不将其加载到Parent AppDomain中
- 当另一个线程/进程使用独占锁时,是否可以绕过C#中的文件锁?
- OpenFilePicker无法在Windows Phone 8上运行(不支持指定的方法)
- Thread.CurrentPrincipal.Identity vs HttpContext.User.Identity
- 使用平衡组的正则表达式
- 如何在选中时更改System.Windows.Forms.ToolStripButton高亮/背景颜色?
- OpenXML替换所有文档中的文本
- 是否可以使FolderBrowserDialog的默认路径显示在库而不是实际磁盘中?
- 使用中的产量回报