Verificar estado Impresora |
Responder |
Autor | |
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Tema: Verificar estado Impresora Enviado: 02/Septiembre/2020 a las 12:36 |
Buenas!! Tengo estas dos funciones que en windows 7 funcionan correctamente y hacen lo que tienen que hacer, pero en windows 10 no va la funcion IsPrinterOff.
No da error, ni dice nada...el que si dice es el propio windows 10, no se puede imprimir el documento xxxx.... Hay alguna solucion????
Function Imprimir(strNumImpresora As Integer, strInforme As String) 'Le pasamos como parametro numero de impresora de tbImpresoras e informe On Error GoTo Err_Imprimir Dim varImpresora As String varImpresora = DLookup("NombreImpresora", "tbImpresoras", "NumImpresora=" & strNumImpresora & "") '************************** 'En windows 10 no salta la funcion 'Le paso funcion para ver si esta encendida If IsPrinterOff(varImpresora) = True Then 'MsgBox "OffLine" MsgBox "Parece que la impresora esta apagada.", vbInformation Exit Function End If '****************************** Set Application.Printer = Application.Printers(varImpresora) DoCmd.OpenReport strInforme, acViewNormal Exit_Imprimir: Exit Function Err_Imprimir: If Err.Number = 5 Then MsgBox "Es posible que la impresora de tickets este apagada,mal configurada o no este instalada.", vbExclamation Else MsgBox Err.Description End If Resume Exit_Imprimir End Function Public Function IsPrinterOff(Optional Printer As String) As Boolean 'En windows 10 no salta la funcion 'Devuelve true si esta apagada o no lista!!!!!! 'Si no ponemos que impresora es pilla la predeterminada Dim strWhere As String If LenB(Printer) Then strWhere = "Name = '" & Replace(Printer, "'", "\'") & "'" Else strWhere = "Default = TRUE" End If IsPrinterOff = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_Printer WHERE " & strWhere & " AND WorkOffline = TRUE").Count End Function |
|
javier.mil
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador Unido: 10/Agosto/2005 Localización: España Estado: Sin conexión Puntos: 4812 |
Enviado: 02/Septiembre/2020 a las 20:18 |
Buenas , Prueba con el siguiente codigo , con Windows 8.1 funciona Private Function funTest()
If funImpresoraOnLine = False Then MsgBox "La impresora esta encendida", vbInformation Else MsgBox "La impresora esta apagada", vbExclamation End If End Function Public Function funImpresoraOnLine(Optional PonImpresora As String = "Default") As Boolean Dim strWhere As String Dim objWMI As Object Dim objPrinters As Object Dim objPrinter As Object Set objWMI = GetObject("winmgmts:\\.\root\CIMV2") If LCase$(PonImpresora) = "default" Then strWhere = "Default = True" Else strWhere = "Name = '" & PonImpresora & "'" End If Set objPrinters = objWMI.ExecQuery("SELECT * FROM Win32_Printer WHERE " & strWhere) For Each objPrinter In objPrinters DoEvents funImpresoraOnLine = objPrinter.WorkOffline Exit For Next Close_Local: Set objPrinter = Nothing Set objPrinters = Nothing Set objWMI = Nothing End Function |
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 02/Septiembre/2020 a las 22:56 |
Perfecto
Lo he dejado asi, solo con esta funcion Public Function FunImpresoraOnLine(Optional PonImpresora As String = "Default") As Boolean 'Devuelve True es apagada. Le podemos pasar como argumento la impresoram si no pillara la predeter,onada Dim strWhere As String Dim objWMI As Object Dim objPrinters As Object Dim objPrinter As Object Set objWMI = GetObject("winmgmts:\\.\root\CIMV2") If LCase$(PonImpresora) = "default" Then strWhere = "Default = True" Else strWhere = "Name = '" & PonImpresora & "'" End If Set objPrinters = objWMI.ExecQuery("SELECT * FROM Win32_Printer WHERE " & strWhere) For Each objPrinter In objPrinters DoEvents FunImpresoraOnLine = objPrinter.WorkOffline Exit For Next Close_Local: Set objPrinter = Nothing Set objPrinters = Nothing Set objWMI = Nothing End Function Y para llamar a la funcion 'Le paso funcion para ver si esta encendida y como parametro el nombre de la impresora If FunImpresoraOnLine("NombreImpresora") = True Then 'Si devuelve true es apagada MsgBox "Parece que la impresora esta apagada.", vbExclamation, "Apagada" Exit Function End If Se puede cerrar Saludos y gracias
Editado por rokoko - 02/Septiembre/2020 a las 22:59 |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |