Dela via


Gör så här: Räkna upp en delmängd av utskriftsköer

En vanlig situation för IT-experter som hanterar en företagsomfattande uppsättning skrivare är att skapa en lista över skrivare med vissa egenskaper. Den här funktionen tillhandahålls av GetPrintQueues-metoden för ett PrintServer-objekt och EnumeratedPrintQueueTypes uppräkning.

Exempel

I exemplet nedan börjar koden med att skapa en matris med flaggor som anger egenskaperna för de utskriftsköer som vi vill visa. I det här exemplet letar vi efter utskriftsköer som installeras lokalt på utskriftsservern och delas. EnumeratedPrintQueueTypes uppräkning ger många andra möjligheter.

Koden skapar sedan ett LocalPrintServer-objekt, en klass som härleds från PrintServer. Den lokala utskriftsservern är den dator där programmet körs.

Det sista viktiga steget är att skicka matrisen till metoden GetPrintQueues.

Slutligen visas resultaten för användaren.

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

Du kan utöka det här exemplet genom att låta foreach-loopen som stegar genom varje utskriftskö utföra ytterligare screening. Du kan till exempel skärma ut skrivare som inte stöder dubbelsidig utskrift genom att låta loopen anropa varje utskriftskös GetPrintCapabilities metod och testa det returnerade värdet för förekomsten av duplexering.

Se även