Partilhar via


Como: enumerar um subconjunto de filas de impressão

Uma situação comum enfrentada por profissionais de tecnologia da informação (TI) que gerenciam um conjunto de impressoras em toda a empresa é gerar uma lista de impressoras com determinadas características. Essa funcionalidade é fornecida pelo método GetPrintQueues de um objeto PrintServer e pela enumeração EnumeratedPrintQueueTypes.

Exemplo

No exemplo abaixo, o código começa criando uma matriz de sinalizadores que especificam as características das filas de impressão que queremos listar. Neste exemplo, estamos procurando filas de impressão instaladas localmente no servidor de impressão e compartilhadas. A enumeração EnumeratedPrintQueueTypes oferece muitas outras possibilidades.

Em seguida, o código cria um objeto LocalPrintServer, uma classe derivada de PrintServer. O servidor de impressão local é o computador no qual o aplicativo está sendo executado.

A última etapa significativa é passar a matriz para o método GetPrintQueues.

Finalmente, os resultados são apresentados ao utilizador.

// 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()

É possível estender este exemplo fazendo com que o loop foreach, que percorre cada fila de impressão, realize uma filtragem adicional. Por exemplo, você pode excluir impressoras que não suportam impressão frente e verso fazendo com que o loop chame o método GetPrintCapabilities de cada fila de impressão e teste o valor retornado para a presença de duplexação.

Ver também