Resumen Cómo interrumpir impresión   (2 mensajes )

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).
---------------------------------------------------------------------------------------------------




Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com