Практическое руководство. Перечисление подмножества очередей печати
ИТ-специалистам, отвечающим за управление корпоративными принтерами, регулярно приходится сталкиваться с необходимостью создания списка принтеров с определенными характеристиками. Эта функция предоставляется методом 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
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();
// 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
Dim enumerationFlags() As EnumeratedPrintQueueTypes = {EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Shared}
Dim printServer As New LocalPrintServer()
'Use the enumerationFlags to filter out unwanted print queues
Dim printQueuesOnLocalServer As PrintQueueCollection = printServer.GetPrintQueues(enumerationFlags)
Console.WriteLine("These are your shared, local print queues:" & vbLf & vbLf)
For Each printer As PrintQueue In printQueuesOnLocalServer
Console.WriteLine(vbTab & "The shared printer " & printer.Name & " is located at " & printer.Location & vbLf)
Next printer
Console.WriteLine("Press enter to continue.")
Console.ReadLine()
Этот пример можно расширить с помощью цикла foreach
, который выполняет последующий отбор, проходя по каждой очереди печати. Например, можно отобрать принтеры, которые не поддерживают двустороннюю печать, с помощью цикла, вызывающего метод GetPrintCapabilities каждой очереди печати, и проверяя возвращаемое значение на наличие дуплексирования.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по