Documente Academic
Documente Profesional
Documente Cultură
Id. de artculo: 202480 - ltima revisin: jueves, 27 de diciembre de 2007 - Versin: 1.1
Descripcin de la tcnica
El trmino "impresora" puede hacer referencia a un dispositivo de hardware, una
cola, un controlador o incluso un puerto. En este artculo, el trmino "impresora" se
define como una cola de impresin local. El ejemplo de cdigo de este artculo
devuelve los estados que el sistema operativo notifica. ste es el mismo estado que
el administrador de trabajos de impresin notifica, que puede comprobar
observando la cola de impresin local.
Por ejemplo, para ver la cola en un equipo que ejecuta Microsoft Windows 98, haga
clic en Inicio, seleccione Configuracin, haga clic en Impresoras y, a
continuacin, haga doble clic en el icono de la impresora cuya cola desee ver.
NOTA: no puede comunicarse directamente con la impresora fsica. No debera
tener que hacerlo porque el sistema operativo debe arbitrar el acceso al hardware.
El cdigo de ejemplo de este artculo examina la cola de impresin local, que
obtiene informacin del monitor del puerto, que a su vez se comunica con el
dispositivo fsico. Para obtener una descripcin ms detallada de cmo funciona
esto, consulte los artculos que se enumeran en la seccin "Referencias" de este
artculo.
Este ejemplo notifica el estado de la impresora y de los trabajos, pero observe que
la informacin del estado de los trabajos es generalmente ms confiable para las
aplicaciones. En teora, debera examinar los estados de la impresora y de los
trabajos por separado, y el cdigo debera deducir el estado "meta" de la cola. Sin
embargo, en la mayor parte de las ocasiones, el cdigo puede confiar en los
estados de los trabajos. Adems, este ejemplo recorre los trabajos y comprueba y
notifica el estado de cada uno. Esto se debe a que un trabajo puede seguir a otro
que notifique un problema, por ejemplo, que se ha quedado sin papel o se ha
bloqueado.
NOTA: el sistema slo comprueba el estado cuando tiene un trabajo que poner en
cola. De lo contrario, la cola se considera "preparada" porque puede aceptar
trabajos, aun cuando el hardware est en estado de error. Por ejemplo, si el ltimo
trabajo que se imprimi us la ltima pgina de papel, el sistema operativo no lo
sabe hasta que el sistema intente imprimir de nuevo.
Adems, aunque hay muchos estados que se pueden notificar, muchos no se
admiten en la prctica. El hardware de la impresora y el monitor del puerto
http://support.microsoft.com/kb/202480/es
14/04/2010
CMO: Determinar el estado de la impresora y del trabajo de impresin desde Visual Basic Page 2 of 8
2.
http://support.microsoft.com/kb/202480/es
14/04/2010
CMO: Determinar el estado de la impresora y del trabajo de impresin desde Visual Basic Page 3 of 8
Option Explicit
Public Declare Function lstrcpy Lib "kernel32" _
Alias "lstrcpyA" _
(ByVal lpString1 As String, _
ByVal lpString2 As String) _
As Long
Public Declare Function OpenPrinter Lib "winspool.drv" _
Alias "OpenPrinterA" _
(ByVal pPrinterName As String, _
phPrinter As Long, _
pDefault As PRINTER_DEFAULTS) _
As Long
Public Declare Function GetPrinter Lib "winspool.drv"
Alias "GetPrinterA" _
(ByVal hPrinter As Long, _
ByVal Level As Long, _
pPrinter As Byte, _
ByVal cbBuf As Long, _
pcbNeeded As Long) _
As Long
Public Declare Function ClosePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) _
As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
_
(Destination As Any, _
Source As Any, _
ByVal Length As Long)
Public Declare Function EnumJobs Lib "winspool.drv"
Alias "EnumJobsA" _
(ByVal hPrinter As Long, _
ByVal FirstJob As Long, _
ByVal NoJobs As Long, _
ByVal Level As Long, _
pJob As Byte, _
ByVal cdBuf As Long, _
pcbNeeded As Long, _
pcReturned As Long) _
As Long
' constants for PRINTER_DEFAULTS structure
Public Const PRINTER_ACCESS_USE = &H8
Public Const PRINTER_ACCESS_ADMINISTER = &H4
' constants for DEVMODE structure
Public Const CCHDEVICENAME = 32
Public Const CCHFORMNAME = 32
http://support.microsoft.com/kb/202480/es
14/04/2010
CMO: Determinar el estado de la impresora y del trabajo de impresin desde Visual Basic Page 4 of 8
3.
4.
5.
6.
http://support.microsoft.com/kb/202480/es
14/04/2010
CMO: Determinar el estado de la impresora y del trabajo de impresin desde Visual Basic Page 5 of 8
Option Explicit
Private Sub Command1_Click()
'Enable the timer to begin printer status checks.
Timer1.Enabled = True
'Enable and disable start and stop buttons.
Command1.Enabled = False
Command2.Enabled = True
Command3.Enabled = True
End Sub
Private Sub Command2_Click()
'Disable timer to stop further printer checks.
Timer1.Enabled = False
'Enable and disable start and stop buttons.
Command1.Enabled = True
Command2.Enabled = False
Command3.Enabled = True
End Sub
Private Sub Command3_Click()
'Clear the status info.
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
Private Sub Form_Load()
'Initialize captions for control buttons.
Command1.Caption = "Start"
Command2.Caption = "Stop"
Command3.Caption = "Clear"
'Clear the status info.
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Command1.Enabled = True
'Disable stop and clear buttons.
Command2.Enabled = False
Command3.Enabled = False
'Set interval for printer status checking to 1/2 second.
Timer1.Enabled = False
Timer1.Interval = 500
End Sub
Private Sub Timer1_Timer()
Dim PrinterStatus As String
Dim JobStatus As String
Dim ErrorInfo As String
http://support.microsoft.com/kb/202480/es
14/04/2010
CMO: Determinar el estado de la impresora y del trabajo de impresin desde Visual Basic Page 6 of 8
7.
8.
9.
10.
Solucionar problemas
El estado exacto que se notifica puede variar con las diferentes impresoras y
controladores.
Visual
Visual
Visual
Visual
Visual
Basic
Basic
Basic
Basic
Basic
5.0
6.0
5.0
6.0
4.0
Enterprise Edition
Edicin empresarial
Professional Edition
Professional Edition
Standard Edition
http://support.microsoft.com/kb/202480/es
14/04/2010
CMO: Determinar el estado de la impresora y del trabajo de impresin desde Visual Basic Page 7 of 8
http://support.microsoft.com/kb/202480/es
14/04/2010
CMO: Determinar el estado de la impresora y del trabajo de impresin desde Visual Basic Page 8 of 8
Necesita ms ayuda?
Contactar con un profesional de soporte tcnico por correo electrnico, online o por telfono
Soporte Microsoft
http://support.microsoft.com/kb/202480/es
2010 Microsoft
14/04/2010