Compartilhar via


Como: Enumerar um subconjunto das filas de impressão

Uma situação comum enfrentada por profissionais de tecnologia da informação (TI) gerenciando um conjunto de impressoras de uma companhia é gerar uma lista de impressoras que possuem certas características. Esta funcionalidade é fornecida pelo método GetPrintQueues de um objeto PrintServer e a enumeração EnumeratedPrintQueueTypes.

Exemplo

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

O código então cria um objeto LocalPrintServer, uma classe derivada de PrintServer. O servidor local de impressão é o computador no qual a aplicação está sendo executada.

O último passo significativo é passar a array para o método GetPrintQueues.

Finalmente, o resultado é apresentado ao usuário.

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

Você pode estender este exemplo tendo o loop foreach que passa por cada fila de impressão para fazer mais análises. Por exemplo, você pode retirar as impressoras que não suportam impressão nos dois lados fazendo o loop chamar o método GetPrintCapabilities de cada fila de impressão e testar o valor retornado para a presença de duplexação. Consulte Criando um exemplo de documento XPS para um exemplo.

Consulte também

Conceitos

Documentos em Windows Presentation Foundation

Visão Geral de Impressão

Referência

GetPrintQueues

PrintServer

LocalPrintServer

EnumeratedPrintQueueTypes

PrintQueue

GetPrintCapabilities

Outros recursos

Exemplos de impressão

Microsoft XPS Document Writer