La Web del Programador: Comunidad de Programadores
 
    Pregunta:  5440 - ESTADO DE LA IMRESORA EN NT
Autor:  Alejandro Cepeda Pirela
Tengo una aplicacion en VB6 que imprime directamente al puerto con Open "LPT1" For OutPut As #1, esto funciona perfectamente en NT. pero como puedo chequear si la impresora se encuentra en linea.

  Respuesta:  A. Z.
Usa las funciones del archivo winspoll.drv tales como:
1.getprinter. el argumento de salida pPrinter es una tipo de estructura PRINTER_INFO_2, en donde hay un campo que se llama Status. Dicho campo maneja los siguientes valores:
Const JOB_STATUS_PAUSED = &H1
Const JOB_STATUS_ERROR = &H2
Const JOB_STATUS_DELETING = &H4
Const JOB_STATUS_SPOOLING = &H8
Const JOB_STATUS_PRINTING = &H10
Const JOB_STATUS_OFFLINE = &H20
Const JOB_STATUS_PAPEROUT = &H40
Const JOB_STATUS_PRINTED = &H80
2.getjob

Public Declare Function GetPrinter Lib \"winspool.drv\" Alias \"GetPrinterA\" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As Long

Public Declare Function GetJob Lib \"winspool.drv\" Alias \"GetJobA\" (ByVal hPrinter As Long, ByVal JobId As Long, ByVal Level As Long, pJob As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long

Si queres ejemplos, tenes que buscarlos en la RED.
Espero que esto te sirva de Luz.