Share via


Cómo: 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 en toda la empresa es generar una lista de impresoras que tienen ciertas características. El método GetPrintQueues de un objeto PrintServer y la enumeración EnumeratedPrintQueueTypes proporcionan esta característica.

Ejemplo

En el ejemplo siguiente, el código empieza por crear 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 enumeración EnumeratedPrintQueueTypes proporciona muchas otras posibilidades.

A continuación, el código crea un objeto LocalPrintServer, 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 importante consiste en pasar la matriz al método GetPrintQueues.

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

Para ampliar este ejemplo, puede hacer que el bucle foreach que recorre cada cola de impresión realice más filtrado. Por ejemplo, puede filtrar las impresoras que no admiten la impresión a doble cara haciendo que el bucle llame al método GetPrintCapabilities de cada cola de impresión y pruebe el valor devuelto para la presencia de la impresión a doble cara.

Vea también