Condividi tramite


Procedura: Enumerare un sottogruppo di code di stampa

Una situazione comune affrontata dai professionisti IT (Information Technology) che gestiscono un set di stampanti a livello aziendale consiste nel generare un elenco di stampanti con determinate caratteristiche. Questa funzionalità viene fornita dal metodo GetPrintQueues di un oggetto PrintServer e dall'enumerazione EnumeratedPrintQueueTypes.

Esempio

All'inizio dell'esempio seguente, il codice crea una matrice di flag che specificano le caratteristiche delle code di stampa da elencare. In questo esempio, stiamo cercando code di stampa installate localmente sul server di stampa e condivise. L'enumerazione EnumeratedPrintQueueTypes offre molte altre possibilità.

Il codice crea quindi un oggetto LocalPrintServer, una classe derivata da PrintServer. Il server di stampa locale è il computer in cui è in esecuzione l'applicazione.

L'ultimo passaggio significativo consiste nel passare la matrice al metodo GetPrintQueues.

Infine, i risultati vengono presentati all'utente.

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

È possibile estendere questo esempio facendo in modo che il ciclo foreach scorra attraverso ogni coda di stampa per eseguire un ulteriore screening. Ad esempio, è possibile filtrare le stampanti che non supportano la stampa a due lati facendo in modo che il ciclo chiami il metodo GetPrintCapabilities di ogni coda di stampa e testare il valore restituito per la presenza di duplex.

Vedere anche