如何从打印机队列中检索列表或作业数?

时间:2011-04-08 09:58:46

标签: c# .net printing queue

我正在寻找一种从特定打印机获取列表​​或作业数量的方法。在最好的情况下,我希望有一个“作业对象”,它代表一个打印作业及其在打印队列中的名称。

这是必需的,因为我需要监控打印机的状态,以便我可以使用新的一批文件重新填充打印队列而不会溢出打印假脱机程序

提前致谢!

编辑:添加了解决方案的代码片段

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;
}

2 个答案:

答案 0 :(得分:9)

您可以在System.Printing命名空间中使用.NET 3.0 PrintQueue类。其NumberOfJobs属性告诉您排队的作业数,GetPrintJobInfoCollection()返回所有作业的详细信息。请注意,它没有任何事件告诉您作业集合已更改,您需要使用计时器进行轮询。一秒钟左右应该没问题。

答案 1 :(得分:0)

您可以使用WMI获取有关设备和内容的系统信息。

see this article