Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como deb Imprimir en VB6??

Estas en el tema de Como deb Imprimir en VB6?? en el foro de Programación General en Foros del Web. Hola Que tal!!! Estoy desarrollando un programa de venta de entradas y necesito imprimir en el momento de la venta la entrada. Mi problema es ...
  #1 (permalink)  
Antiguo 27/11/2004, 06:50
 
Fecha de Ingreso: noviembre-2004
Mensajes: 8
Antigüedad: 20 años
Puntos: 0
Exclamación Como deb Imprimir en VB6??

Hola Que tal!!!

Estoy desarrollando un programa de venta de entradas y necesito imprimir en el momento de la venta la entrada. Mi problema es que no se como conocer el estado de la impresora, ya que el objeto Printer no me da esta informacion. Como debo hacer para poder conocer si la impresora esta lista para imprimir o si esta apagada o esta sin hojas. Ademas seria importante saber si puedo imprimir sin tener que utilizar la cola de impresion del sistema operativo.
  #2 (permalink)  
Antiguo 27/11/2004, 17:07
 
Fecha de Ingreso: noviembre-2003
Ubicación: A Coruña
Mensajes: 89
Antigüedad: 21 años
Puntos: 0
Si usas un formulario atraves de un datareport usas el metodo

Private Sub DataReport_Initialize()

Me.PrintReport True

end sub

asi es como si imprimieses con cualquier programa, si usas el Printer, no se como controlar todo eso, nunca lo he probado.
  #3 (permalink)  
Antiguo 29/11/2004, 06:09
 
Fecha de Ingreso: noviembre-2004
Mensajes: 8
Antigüedad: 20 años
Puntos: 0
El problema que tengo es que no se que debo hacer para conocer cual es el estado en el que se encuentra la impresora, es decir, antes de mandar a imprimir quisiera saber si la impresora esta prendida o apagada, si tiene o no hojas y si esta o no lista para imprimir. Ademas, si fuera posible, seria mejor mandar a imprimir sin pasar por el administrador de impresion que el sistema operativo tiene.
  #4 (permalink)  
Antiguo 29/11/2004, 13:02
Avatar de hmtech  
Fecha de Ingreso: agosto-2003
Ubicación: Puerto Rico
Mensajes: 332
Antigüedad: 21 años, 3 meses
Puntos: 0
prueba este ejemplo a ver si te funciona.


' Cómo detectar el estado de un impresora local

'Las funciones de la API de Windows para comprobar el estado
'de una impresora requieren que haya un documento en el spooler.
'Esta restricción obliga, en la mayoría de los casos, a mandar
'un trabajo de impresión para detectar el estado de la impresora.
'Para evitar este incoveniente se puede abrir el puerto de
'la impresora (normalmente lpt1) con CreateFile y tratarlo como un
'puerto de comunicaciones normal. La API ClearCommError permite
'detectar errores en el puerto.

'El siguiente ejemplo muestra cómo examinar el estado de una
'impresora (este método sólo funciona para impresoras locales)

'Cree un nuevo proyecto.
'Añada un módulo de proyecto.
'Copie el siguiente código en el módulo de proyecto:

Public Const GENERIC_WRITE = &H40000000
Public Const GENERIC_READ = &H80000000
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const CREATE_ALWAYS = 2
Public Const OPEN_ALWAYS = 4
Public Const INVALID_HANDLE_VALUE = -1

Public Type COMSTAT
Filler1 As Long
Filler2 As Long
Filler3 As Long
Filler4 As Long
Filler5 As Long
Filler6 As Long
Filler7 As Long
Filler8 As Long
Filler9 As Long
Filler10 As Long
End Type

Declare Function CreateFile Lib "kernel32" _
Alias "CreateFileA" (ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _
ByVal lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) _
As Long

Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Declare Function ClearCommError Lib "kernel32" (ByVal hFile As Long, lpErrors As Long, _
lpStat As COMSTAT) As Long

Public Const CE_BREAK = &H10 ' break condition
Public Const CE_PTO = &H200 ' printer timeout
Public Const CE_IOE = &H400 ' printer I/O error
Public Const CE_DNS = &H800 ' device not selected
Public Const CE_OOP = &H1000 ' out of paper

'Coloque un botón en el formulario y copie el siguiente código:

Private Sub Command1_Click()
Dim mHandle As Long
Dim lpErrors As Long
Dim x As COMSTAT

mHandle = CreateFile("lpt1", GENERIC_WRITE Or GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)

If mHandle < 0 Then
MsgBox "error de apertura del puerto " & mHandle Else
If ClearCommError(mHandle, lpErrors, x) = False Then
MsgBox "Error en ClearCommError" End If End If

If lpErrors And CE_BREAK Then
MsgBox "Error genérico" End If

If lpErrors And CE_PTO Then
MsgBox "Timeout de impresora" End If

If lpErrors And CE_IOE Then
MsgBox "Error de entrada/salida" End If

If lpErrors And CE_DNS Then
MsgBox "Dispositivo no seleccionado" End If

If lpErrors And CE_OOP Then
MsgBox "Sin papel" End If

CloseHandle mHandle
End Sub

'Ejecute la aplicación y pulse el botón para comprobar
'el estado de la impresora.


Saludos
hmtech
__________________
"...todos los días hay que luchar por que ese amor a la humanidad viviente se transforme en hechos concretos, en actos que sirvan de ejemplo, de movilización."
Che Guevara
  #5 (permalink)  
Antiguo 27/05/2008, 05:28
 
Fecha de Ingreso: mayo-2007
Mensajes: 3
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Como deb Imprimir en VB6??

En la instrucción:

If ClearCommError(mHandle, lpErrors, x) = False Then
MsgBox "Error en ClearCommError" End If End If

Siempre me da FALSE. Sabeis porque se puede dar el caso???
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:59.