2011-11-17 29 views
7

Quiero detectar si una impresora está en línea/fuera de línea ANTES intentando imprimir. Si está fuera de línea, el cuadro de diálogo de impresión no será visible.¿Cómo detectar si una impresora USB conectada está encendida o apagada?

"OpenPrinter" de la API de Win32 etc. parecen funcionar en la cola de cola de impresión, en lugar que la propia impresora, y sólo reportará la impresora fuera de DESPUÉS se envía un documento , quees demasiado tarde.

PREGUNTA: ¿Cómo puedo saber si una impresora está fuera de línea/en línea sin enviarle una copia impresa?

EDIT:

Offline - printer is turned off 
OnLine - printer is turned On 
+0

¿Qué significa en línea/fuera de línea para los fines de esta pregunta? ¿Desconectado significa desconectado, o hay alguna otra condición que desee atrapar de esta manera? – 0xC0000022L

Respuesta

0

No creo que esto es posible.

Como ya descubrió, esto se abstrae con la cola de impresión y el estado de la cola de impresión no siempre refleja el estado de la impresora.

Esto es por diseño en Windows.

Si solo tiene un tipo de impresora específico, puede consultar si está conectado al USB.

+0

http://stackoverflow.com/questions/4838033/getting-the-port-name-of-a-connected-usb-device –

+0

Actualmente puede consultar esto incluso con varias impresoras conectadas. – 0xC0000022L

+0

Claro, quise decir que si el programa tiene que consultar múltiples tipos de impresoras en diferentes sistemas, podría ser más complicado. –

4

Probablemente conozca el nombre de la impresora u otros detalles al respecto.

Bueno, entonces sólo tiene que utilizar EnumPrinters con PRINTER_INFO_2 y comprobar si hay PRINTER_STATUS_OFFLINE (o cualquier otra condición que desea evitar ).

Alternativamente, podría intentar utilizar las funciones SetupDi* (también conocida como API de configuración) para averiguar si el dispositivo USB que coincide con la impresora está conectado en este momento.

+0

+1 Probar el dispositivo de coincidencia USB es una buena dirección para seguir. Tal vez eso requiera una nueva publicación. – menjaraz

Cuestiones relacionadas