我正在寻找一种从特定打印机获取作业列表或数量的方法。在最佳情况下,我希望有一个“作业对象”,它代表一个打印作业及其在打印队列中的名称。
这是必需的,因为我需要监视打印机的状态,以便可以用新一批的文档重新填充打印队列,而不会导致打印后台处理程序溢出
提前致谢!
编辑:添加了解决方案的代码片段
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()返回所有作业的详细信息。请注意,它没有任何事件可通知您作业集合已更改,因此需要使用计时器进行轮询。一秒钟左右应该没事。