Saludos cordiales estimado Extremo:
Yo también hice esa prueba, lo que me funciono, es lo siguiente:
En la configuración de la impresora normalmente esta que todo documento pase por el spooler, cambio el parámetro a que imprima directamente en la impresora, entonces cuando selecciono la impresora en VFP, me devuelve error si no esta encendida.
Entonces desde tu manejador de errores podes decidir que hacer.
Bendiciones.
Carlos Alfaro
Creo que eso va a ser un poco difícil ya que en estos tiempos los SO tiene una cola de impresión, así la impresora esta apagada estos se almacena hasta que se encienda la impresora. Pero te pregunto para que necesitas saber si la impresora esta encendida?Saludos
VFP Unlimited - Canal de Youtube
El 24 de noviembre de 2017, 07:07, extremo<protech.ventas@gmail.com> escribió:CarlosGracias por responder. Hice tu sugerencia pero no me cambia los estados, otra cosa que sucede es que el programa se queda esperando la impresión del reporte. Me faltará algún seteo?Bendiciones
El miércoles, 22 de noviembre de 2017, 12:30:19 (UTC-4), extremo escribió:Hay alguna forma de saber si la impresora esta encendida?Los codigos SYS(2040) y sys(13) no funcionan, aun cuando la impresora esta desconectada del PC me arroja READY.Bendiciones
&& Enumera impresoras y estadostrComputer = "."objWMIService = Getobject("winmgmts:"+ "{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2")colInstalledPrinters = objWMIService.ExecQuery("SELECT * FROM Win32_Printer")For Each objPrinter In colInstalledPrinters ?"Name: " + objPrinter.Name Do Case Case objPrinter.PrinterStatus = 1 strPrinterStatus = "Other" Case objPrinter.PrinterStatus = 2 strPrinterStatus = "Unknown" Case objPrinter.PrinterStatus = 3 strPrinterStatus = "Idle" Case objPrinter.PrinterStatus = 4 strPrinterStatus = "Printing" Case objPrinter.PrinterStatus = 5 strPrinterStatus = "Warmup" Endcase ? "Printer Status: " + strPrinterStatusNext
&& Enumera los trajos de impresion de cada impresora
lcComputer = "."loWMIService = Getobject("winmgmts:{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")colPrintQueues = loWMIService.ExecQuery ("Select * from Win32_PerfFormattedData_Spooler_PrintQueue Where Name <> '_Total'")For Each loPrintQueue In colPrintQueues ?"Name: " + loPrintQueue.Name ?"Current jobs: " + transform(loPrintQueue.Jobs)NextGracias estimado Gregori, pero como me daba error, investigue y a la variable strComputer le falta un punto debe quedar asi:
strComputer = “.”
Me va ayudar mucho.
Aprovecho de comentar que en donde dos clientes que ocurre que el spooler de Windows devuelve que la impresora no esta lista, pero como no funciona el sys(13), el programa se loquea y pierde la asignación de variables, voy a probar este código, veo muchas posibilidades que sea lo solución.
Lo que me llama la atención, en la única prueba que he hecho con éxito, es que tarda unos segundos en dar la respuesta, voy a seguir investigando con este recurso.
Que tengan feliz dia.
Carlos Alfaro
From: publice...@googlegroups.com [mailto:publice...@googlegroups.com] On Behalf Of Gregori Arjona Toledo
Sent: viernes, 24 de noviembre de 2017 07:11 a.m.
To: Comunidad de Visual Foxpro en Español
Subject: [vfp] Re: Saber si la impresora esta encendida
Utiliza este codigo para ver el estado de cada impresora instalada:
&& Enumera impresoras y estado
strComputer = ""
objWMIService = Getobject("winmgmts:"+ "{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2")
No logro que funcione para ver los trabajos de impresión de cada impresora, me muestra el siguiente error:
Código de error OLE 0x80041017: Código de estado de COM desconocido.
Seguir buscando cual es la causa.
Buen día.
Carlos Alfaro
