2011-04-08 19 views
8

Estoy buscando una manera de obtener una lista o cantidad de trabajos de una impresora en particular. En el mejor de los casos, me gustaría tener un "Objeto de trabajo" que represente un trabajo de impresión y su nombre en la cola de impresión.¿Cómo recupero una lista o número de trabajos de una cola de impresora?

Esto es necesario porque necesito hacer un seguimiento del estado de una impresora para que pueda volver a llenar la cola de impresión con un nuevo lote de documentos sin desbordar la cola de impresión

Gracias de antemano!

Editar: añadido fragmento de código de solución

private int GetNumberOfPrintJobs() 
{ 
    LocalPrintServer server = new LocalPrintServer(); 
    PrintQueueCollection queueCollection = server.GetPrintQueues(); 
    PrintQueue printQueue = null; 

    foreach (PrintQueue pq in queueCollection) 
    { 
     if (pq.FullName == PrinterName) 
      printQueue = pq; 
    } 

    int numberOfJobs = 0; 
    if (printQueue != null) 
     numberOfJobs = printQueue.NumberOfJobs; 

    return numberOfJobs; 
} 

Respuesta

7

Puede utilizar la clase PrintQueue .NET 3.0 en el espacio de nombres System.Printing. Su propiedad NumberOfJobs le dice cuántos trabajos están en cola, GetPrintJobInfoCollection() devuelve detalles sobre todos los trabajos. Tenga en cuenta que no tiene ningún evento que le indique que la recopilación de trabajos cambió, necesita sondear con un temporizador. Una vez un segundo más o menos debería estar bien.

+0

Ya he echado un vistazo a esta. Pero requiere un objeto PrintServer para crear instancias. Estoy usando impresoras que están instaladas localmente. ¿Esto supondría un problema? Pero esta sería sin duda una solución ideal. Ya tengo una construcción while() para sondear mientras imprimo en un hilo y necesito una construcción de bloqueo. Además, esta impresora es muy lenta;) –

+3

Utilice la clase LocalPrintServer. –

+0

¿Podría ser tan obvio? Gracias por mostrarme lo que Google no pudo encontrar :) –

0

se puede utilizar WMI para obtener información sobre los dispositivos del sistema y esas cosas.

see this article

Cuestiones relacionadas