Поделиться через


Практическое руководство. Перечисление подмножества очередей печати

Обновлен: Ноябрь 2007

Обычной ситуацией, возникающей у специалистов по информационным технологиям, управляющих множеством принтеров компании, является получение списка принтеров, имеющих определенные характеристики. Эта функциональная возможность обеспечивается методом GetPrintQueues объекта PrintServer и перечислением EnumeratedPrintQueueTypes.

Пример

В примере ниже код начинается с создания массива флагов, определяющих характеристики очередей печати, которые требуется внести в список. В этом примере выполняется поиск очередей печати, которые установлены локально на сервере печати и являются общими. Перечисление EnumeratedPrintQueueTypes предоставляет множество других возможностей.

Затем в коде создается объект класса LocalPrintServer, производного от PrintServer. Локальный сервер печати является компьютером, на котором запущено приложение.

Последний значительный этап заключается в передаче массива методу GetPrintQueues.

Наконец, результаты предоставляются пользователю.

// Specify that the list will contain only the print queues that are installed as local and are shared
EnumeratedPrintQueueTypes[] enumerationFlags = {EnumeratedPrintQueueTypes.Local,
                                                EnumeratedPrintQueueTypes.Shared};

LocalPrintServer printServer = new LocalPrintServer();

//Use the enumerationFlags to filter out unwanted print queues
PrintQueueCollection printQueuesOnLocalServer = printServer.GetPrintQueues(enumerationFlags);

Console.WriteLine("These are your shared, local print queues:\n\n");

foreach (PrintQueue printer in printQueuesOnLocalServer)
{
    Console.WriteLine("\tThe shared printer " + printer.Name + " is located at " + printer.Location + "\n");
}
Console.WriteLine("Press enter to continue.");
Console.ReadLine();
// Specify that the list will contain only the print queues that are installed as local and are shared
array<System::Printing::EnumeratedPrintQueueTypes>^ enumerationFlags = {EnumeratedPrintQueueTypes::Local,EnumeratedPrintQueueTypes::Shared};

LocalPrintServer^ printServer = gcnew LocalPrintServer();

//Use the enumerationFlags to filter out unwanted print queues
PrintQueueCollection^ printQueuesOnLocalServer = printServer->GetPrintQueues(enumerationFlags);

Console::WriteLine("These are your shared, local print queues:\n\n");

for each (PrintQueue^ printer in printQueuesOnLocalServer)
{
   Console::WriteLine("\tThe shared printer " + printer->Name + " is located at " + printer->Location + "\n");
}
Console::WriteLine("Press enter to continue.");
Console::ReadLine();

Этот пример кода может быть расширен с помощью цикла foreach, который проходит по каждой очереди печати для дальнейшей блокировки. Например, можно блокировать принтеры, которые не поддерживают двустороннюю печать, вызвав в цикле метод GetPrintCapabilities каждой очереди печати и проверив возвращаемое значение на наличие блока двусторонней печати. Пример см. в разделе Пример создания документа XPS.

См. также

Основные понятия

Документы в Windows Presentation Foundation

Общие сведения о печати

Ссылки

GetPrintQueues

PrintServer

LocalPrintServer

EnumeratedPrintQueueTypes

PrintQueue

GetPrintCapabilities

Другие ресурсы

Примеры печати

Средство для записи XPS-документов (Майкрософт)