Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda con cola de impresion ....

Estas en el tema de Ayuda con cola de impresion .... en el foro de Visual Basic clásico en Foros del Web. Estimados tengo el siguiente problema... Resulta que estoy haciendo una aplicacion de impresiones en visual basic 6 donde trabajo con la cola de impresion, la ...
  #1 (permalink)  
Antiguo 17/04/2009, 11:51
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Exclamación Ayuda con cola de impresion ....

Estimados tengo el siguiente problema...
Resulta que estoy haciendo una aplicacion de impresiones en visual basic 6 donde trabajo con la cola de impresion, la idea es tener la impresora en pausa y en un laboratorio si alguien manda a imprimir algo que llegue a la cola de impresion. De ahi estoy rescatando los datos y los discrimino segun nombre de usuario, y ya hasta el momento tengo eso, por ejemplo rescato nombre del documento, impresora, cantidad hojas, y posicion en la cola.
Pero mi problema es que al rescatar los datos tengo un boton con la opcion de imprimir, donde mi idea es de alguna forma cambiar el estado de la cola de ese trabajo de "Pausado" a "Imprimiendo", y para saber que trabajo tiene que cambiar de estado seria con la posicion del trabajo. Eso no logro encontrar, una forma de cambiar el estado de la cola de impresion por vb6.
Tambien necesito una forma para rescatar el tipo de papel, ya que en la cola de impresion no sale ese dato....
Si alguien pudiera ayudarme se lo agradezco caleta, ya que e buscado y no encuentro como hacerlo...

Saludos
  #2 (permalink)  
Antiguo 27/05/2009, 00:58
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Ayuda con cola de impresion ....

Hola

Prueba con esto:

Public Sub Pausar_Reanudar_Impresora(i As Integer)
Dim strComando As String

If i = 1 Then
'PAUSAR
strComando = "cscript c:\windows\system32\prnqctl.vbs -z -p " & """" & Printer.DeviceName & """"
Else
'REANUDAR
strComando = "cscript c:\windows\system32\prnqctl.vbs -m -p " & """" & Printer.DeviceName & """"
End If

Shell strComando

End Sub


Un saludo

Mónica.
  #3 (permalink)  
Antiguo 27/05/2009, 08:19
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con cola de impresion ....

Gracias por responder, pero encontre otra forma como manipular la cola de impresion.
Si alguien necesitara lo mismo que me avise para publicar la forma...
  #4 (permalink)  
Antiguo 27/05/2009, 21:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con cola de impresion ....

Hola, sebaxd.

Si puedes publicarla es mejor, así si alguien llega al tema através del buscador ya encontrará ambas opciones.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 28/05/2009, 08:25
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con cola de impresion ....

hay va.....

funcimpr = JOB_CONTROL_RESUME ' pa continuar impresion

funcimpr =JOB_CONTROL_DELETE' pa pausar

KillPrintJob (Impresora), (Numero_trabajo), (funcimpr)




---------------------------------------
'en un modulo

Option Explicit
Declare Function EnumPorts Lib "winspool.drv" Alias "EnumPortsA" (ByVal pName As String, ByVal Level As Long, lpbPorts As Byte, ByVal cbBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Type PORT_INFO_2
pPortName As Long
pMonitorName As Long
pDescription As Long
fPortType As Long
Reserved As Long
End Type
Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" ( _
hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Declare Function CopyPointer2String Lib "KERNEL32" _
Alias "lstrcpyA" ( _
ByVal NewString As String, ByVal OldString As Long) As Long
Public Const PORT_TYPE_NET_ATTACHED = &H8
Public Const PORT_TYPE_READ = &H2
Public Const PORT_TYPE_REDIRECTED = &H4
Public Const PORT_TYPE_WRITE = &H1
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
Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Type JOB_INFO_1
JobId As Long
pPrinterName As Long
pMachineName As Long
pUserName As Long
pDocument As Long
pDatatype As Long
pStatus As Long
Status As Long
Priority As Long
Position As Long
TotalPages As Long
PagesPrinted As Long
Submitted As SYSTEMTIME
End Type
Type PRINTER_DEFAULTS
pDatatype As Long
pDevMode As Long
DesiredAccess As Long
End Type
Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Const JOB_STATUS_DELETING = &H4
Public Const JOB_STATUS_ERROR = &H2
Public Const JOB_STATUS_OFFLINE = &H20
Public Const JOB_STATUS_PAPEROUT = &H40
Public Const JOB_STATUS_PAUSED = &H1
Public Const JOB_STATUS_PRINTED = &H80
Public Const JOB_STATUS_PRINTING = &H10
Public Const JOB_STATUS_SPOOLING = &H8
Public Const JOB_STATUS_USER_INTERVENTION = 1024
Public Const MIN_PRIORITY = 1
Public Const MAX_PRIORITY = 99
Public Const DEF_PRIORITY = 1

'**** declaracion para imprimir o eliminar un trabajo de la cola de impresion
'Private Type PRINTER_DEFAULTS
' pDatatype As String
'pDevMode As Long
'DesiredAccess As Long
'End Type

'Private Declare Function OpenPrinter Lib "winspool.drv" _
' Alias "OpenPrinterA" (ByVal pPrinterName As String, _
' phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long

'Private Declare Function ClosePrinter Lib "winspool.drv" _
' (ByVal hPrinter As Long) As Long

Public Enum PrinterAccessRights
PRINTER_ACCESS_ADMINISTER = &H4
PRINTER_ACCESS_USE = &H8
PRINTER_ALL_ACCESS = &HF000C
End Enum

Private Declare Function SetJob Lib "winspool.drv" Alias _
"SetJobA" (ByVal hPrinter As Long, _
ByVal JobId As Long, _
ByVal Level As Long, _
pJob As Long, _
ByVal Command As Long) As Long



Public Enum PrintJobControlCommands
JOB_CONTROL_PAUSE = 1
JOB_CONTROL_RESUME = 2
JOB_CONTROL_CANCEL = 3
JOB_CONTROL_RESTART = 4
JOB_CONTROL_DELETE = 5
JOB_CONTROL_SENT_TO_PRINTER = 6
JOB_CONTROL_LAST_PAGE_EJECTED = 7
End Enum


Public Sub KillPrintJob(ByVal PrinterDeviceName As String, ByVal idJob As Long, funcion As String)

Dim lRet As Long
Dim mhPrinter As Long
Dim paAll As PRINTER_DEFAULTS

paAll.DesiredAccess = PRINTER_ALL_ACCESS
Call OpenPrinter(PrinterDeviceName, mhPrinter, paAll)
If mhPrinter <> 0 Then
lRet = SetJob(mhPrinter, idJob, 0, 0, funcion)
Call ClosePrinter(mhPrinter)
End If
End Sub
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 01:50.