Compartir a través de


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 el conjunto de impresoras de toda la compañía es generar una lista de impresoras que tienen determinadas características. El método GetPrintQueues de un objeto PrintServer y la enumeración EnumeratedPrintQueueTypes proporcionan esta funcionalidad.

Ejemplo

En el ejemplo siguiente, el código comienza creando una matriz de marcadores que especifican las características de las colas de impresión que deseamos mostrar en la lista. En este ejemplo, se buscan las colas de impresión que están instaladas localmente en el servidor de impresión y son compartidas. 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 significativo consiste en pasar la matriz al método GetPrintQueues.

Por último, se presentan los resultados al usuario.

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

Puede extender este ejemplo haciendo que el bucle foreach que recorre todas las colas de impresión realice un filtrado mayor. Por ejemplo, podría dejar fuera las impresoras que no admitan la impresión a dos caras haciendo que el bucle llame al método GetPrintCapabilities de cada cola de impresión y pruebe el valor devuelto correspondiente a la presencia de la impresión a dos caras.

Vea también

Referencia

GetPrintQueues

PrintServer

LocalPrintServer

EnumeratedPrintQueueTypes

PrintQueue

GetPrintCapabilities

Conceptos

Documentos en WPF

Información general sobre impresión

Otros recursos

Escritor de documentos XPS de Microsoft