Gewusst wie: Auflisten einer Teilmenge von Druckwarteschlangen
IT-Experten, die für die unternehmensweite Verwaltung von Druckern verantwortlich sind, müssen häufig eine Liste von Druckern erstellen, die bestimmte Eigenschaften aufweisen. Diese Funktionalität wird von der GetPrintQueues-Methode eines PrintServer-Objekts und der EnumeratedPrintQueueTypes-Enumeration bereitgestellt.
Beispiel
In den folgenden Beispielen wird durch den Code zunächst ein Array von Flags erstellt, die die Eigenschaften der aufzulistenden Druckwarteschlangen angeben. In diesem Beispiel wird nach Druckwarteschlangen gesucht, die lokal auf dem Druckerserver installiert und freigegeben sind. Die EnumeratedPrintQueueTypes-Enumeration stellt viele andere Möglichkeiten bereit.
Im Code wird dann ein LocalPrintServer-Objekt erstellt, eine von PrintServer abgeleitete Klasse. Der lokale Druckerserver ist der Computer, auf dem die Anwendung ausgeführt wird.
Der letzte wichtige Schritt besteht darin, das Array an die GetPrintQueues-Methode zu übergeben.
Abschließend werden dem Benutzer die Ergebnisse präsentiert.
' 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()
// 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();
Sie können dieses Beispiel erweitern, indem Sie die foreach-Schleife verwenden, die jede Druckwarteschlange durchläuft und weitere Prüfungen ausführt. Sie könnten z. B. Drucker aussortieren, die das doppelseitige Drucken nicht unterstützen, indem die Schleife jede GetPrintCapabilities-Methode der Druckwarteschlange aufruft und den zurückgegebenen Wert auf Duplexdruck prüft.