Hoe: Een subset van afdrukwachtrijen opsommen
Een veelvoorkomende situatie van it-professionals die een bedrijfsbrede set printers beheren, is het genereren van een lijst met printers met bepaalde kenmerken. Deze functionaliteit wordt geleverd door de GetPrintQueues methode van een PrintServer-object en de opsomming EnumeratedPrintQueueTypes.
Voorbeeld
In het onderstaande voorbeeld begint de code met het maken van een matrix met vlaggen waarmee de kenmerken van de afdrukwachtrijen worden opgegeven die we willen weergeven. In dit voorbeeld zijn we op zoek naar afdrukwachtrijen die lokaal op de afdrukserver zijn geïnstalleerd en worden gedeeld. De opsomming EnumeratedPrintQueueTypes biedt vele andere mogelijkheden.
De code maakt vervolgens een LocalPrintServer object, een klasse die is afgeleid van PrintServer. De lokale afdrukserver is de computer waarop de toepassing wordt uitgevoerd.
De laatste belangrijke stap is het doorgeven van de matrix aan de GetPrintQueues methode.
Ten slotte worden de resultaten aan de gebruiker gepresenteerd.
// 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()
U kunt dit voorbeeld uitbreiden door de foreach
-loop te gebruiken die elke afdrukwachtrij verder screent. U kunt bijvoorbeeld printers filteren die geen dubbelzijdig afdrukken ondersteunen door in de lus de GetPrintCapabilities-methode van elke afdrukwachtrij aan te roepen en te testen of de geretourneerde waarde aangeeft dat dubbelzijdig afdrukken beschikbaar is.
Zie ook
.NET Desktop feedback