Ramon escribió:
>
> Hola de nuevo compañeros de la lista
>
> Mi pregunta es como puedo interrumpir, a traves de las apis de windows
> un trabajo que se està imprimiendo o està en cola.
>
> Gracias de antemano..
Para implementar el clásico botón de "cancelar" mientras se imprime, usa el método
Printer.KillDoc. Si lo que quieres es cancelar un trabaja después de haberlo mandado a la
cola de impresión, es más complicado, ya que tienes que saber previamente qué trabajo es.
Creo que hay una función del API llamada SetJob, pero su uso es en conjunto con otras
funciones y un pelín "complicadilla".
Espero que con esto se solucione tu problema. Un saludo.
Hola Ramón:
Para cancelar un trabajo que está actualmente imprimiéndose, debe llamarse a la
función de la API: AbortDoc(), pasándole como parámetro el hDC del objeto
Printer.
Esta función devolverá un número igual o mayor a cero si se ha cancelado el
trabajo y un número menor de cero si no puede cancelarse.
Ej:
If AbortDoc(Printer.hDC) < 0 Then
MsgBox "No se pudo cancelar el trabajo"
End If
La declaración de esta función es:
Declare Function AbortDoc% Lib "GDI" (ByVal hDC%)
La próxima vez que intentemos usar el objeto Printer después de haber usado
AbortDoc, obtendremos un mensaje de error, y seguidamente ya podremos volver a
usar el objeto Printer. Por ello, se aconseja usar una función para abortar la
impresión, provocando a continuación el error mencionado para que el objeto
Printer vuelva a estar disponible.
Un ejemplo de esta función, podría ser:
Public Function AbortaImpresion(ByVal hDC As Integer) As Boolean
Dim bAbortaImpresion As Boolean
On Error GoTo SiError
bAbortaImpresion = False
' Intentar abortar la impresión del documento actual
If AbortDoc(Printer.hDC) > 0 Then
bAbortaImpresion = True
End If
' Después de llamar a AbortDoc, la primera vez que intentemos acceder al
' objeto Printer, dará siempre en un error, y después ya podremos usar
' el objeto Printer.
' Por eso, forzamos aquí el error.
On Error Resume Next
Printer.EndDoc
On Error GoTo SiError
Salir:
AbortaImpresion = bAbortaImpresion
Exit Function
SiError:
bAbortaImpresion = False
GoTo Salir
End Function
Espero haberte si do ayuda.
Un Saludo.
Juan Antonio.
Ramon escribió:
>
> Hola de nuevo compañeros de la lista
>
> Mi pregunta es como puedo interrumpir, a traves de las apis de windows
> un trabajo que se està imprimiendo o està en cola.
>
> Gracias de antemano..
--
Mensaje enviado a la velocidad de 0.00001 bits /seg. a través de Tortu-Arrakis.
---------------------------------------------------------------------------------------------------
Ley de Murphy
La experiencia es una cosa que no tienes hasta después de haberla necesitado
E-Mail: Mailto:jatubio@arrakis.es (Juan Antonio Tubío)
Un saludo desde Córdoba (España).
---------------------------------------------------------------------------------------------------