Freigeben über


Gewusst wie: Auflisten einer Teilmenge von Druckwarteschlangen

IT-Experten stehen häufig vor der Herausforderung eine Liste der im Unternehmen verfügbaren Drucker mit bestimmten Merkmalen zu erstellen. Diese Funktionalität wird über die GetPrintQueues-Methode eines PrintServer-Objekts und die EnumeratedPrintQueueTypes-Enumeration bereitgestellt.

Beispiel

Im folgenden Codebeispiel wird zunächst ein Array mit Flags erstellt, die die Merkmale der Druckwarteschlangen angeben, die aufgelistet werden sollen. In diesem Beispiel wird nach Druckwarteschlangen gesucht, die lokal auf dem Druckserver installiert und freigegeben sind. Die EnumeratedPrintQueueTypes-Enumeration bietet noch viele weitere Möglichkeiten.

Anschließend erstellt der Code ein LocalPrintServer-Objekt, also eine von PrintServer abgeleitete Klasse. Der lokale Druckserver 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
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()

Sie können dieses Beispiel erweitern, indem Sie die foreach-Schleife verwenden, um jede Druckwarteschlange für weitere Analysen zu durchlaufen. Sie können beispielsweise Drucker heraussuchen, die den zweiseitigen Druck nicht unterstützen, indem Sie die GetPrintCapabilities-Methode der einzelnen Druckschleifen in der Schleife aufrufen und den zurückgegebenen Wert auf das Vorhandensein von Duplexing zu überprüfen.

Weitere Informationen