Compartir a través de


Procedimiento para enumerar un subconjunto de colas de impresión

Una situación común a la que se enfrentan los profesionales de la tecnología de la información (TI) que administran un conjunto de impresoras de toda la empresa es generar una lista de impresoras que tienen ciertas características. Esta funcionalidad se proporciona mediante el método GetPrintQueues de un objeto PrintServer y la enumeración EnumeratedPrintQueueTypes.

Ejemplo

En el ejemplo siguiente, el código comienza creando una matriz de marcas que especifican las características de las colas de impresión que queremos enumerar. En este ejemplo, buscamos colas de impresión instaladas localmente en el servidor de impresión y que se comparten. La EnumeratedPrintQueueTypes enumeración proporciona muchas otras posibilidades.

A continuación, el código crea un LocalPrintServer objeto , una clase derivada de PrintServer. El servidor de impresión local es el equipo en el que se ejecuta la aplicación.

El último paso significativo es pasar la matriz al GetPrintQueues método .

Por último, los resultados se presentan al usuario.

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

Puede ampliar este ejemplo haciendo que el bucle foreach que recorre cada cola de impresión, realice un filtrado adicional. Por ejemplo, puede filtrar las impresoras que no admiten la impresión a doble cara haciendo que el bucle llame al método de GetPrintCapabilities de cada cola de impresión y verifique si el valor devuelto indica la presencia de la función dúplex.

Consulte también