Как получить список или количество заданий из очереди принтера? - PullRequest
10 голосов
/ 08 апреля 2011

Я ищу способ получить список или количество заданий с определенного принтера.В лучшем случае я хотел бы иметь «Объект задания», который представляет одно задание на печать и его имя в очереди на печать.

Это необходимо, поскольку мне нужно отслеживать состояние принтера, чтобы я мог заправлятьочередь печати с новой партией документов без переполнения очереди печати

Заранее спасибо!

Редактировать: добавлен фрагмент кода решения

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 ]

9 голосов
/ 08 апреля 2011

Вы можете использовать класс .NET 3.0 PrintQueue в пространстве имен System.Printing.Его свойство NumberOfJobs сообщает, сколько заданий поставлено в очередь, GetPrintJobInfoCollection () возвращает сведения обо всех заданиях.Помните, что в нем нет событий, которые сообщают вам, что коллекция заданий изменилась, вам нужно опросить с помощью таймера.Раз в секунду или около того должно быть хорошо.

0 голосов
/ 08 апреля 2011

вы можете использовать WMI для получения системной информации об устройствах и прочем.

см. Эту статью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...