Cómo detecta VB el estado de la impresoraOptionExplicit declara la función MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr AsLong, ByVal PhysSize AsLong, ByRef PhysMemHandle) AsLong declara la función UnmapPhysicalMemory Lib "WinIo.dll" ( ByVal PhysMemHandle , ByVal LinAddr) AsBoolean declara la función GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr AsLong, ByRef PhysVal AsLong) AsBoolean declara la función SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr AsLong, ByVal PhysVal AsLong) AsBoolean declara la función GetPortVal Lib "WinIo. dll" (ByVal PortAddr AsInteger, ByRef PortVal AsLong, ByVal bSize AsByte) Función de declaración AsBoolean SetPortVal Lib "WinIo.dll" (ByVal PortAddr AsInteger, ByVal PortVal AsLong, ByVal bSize AsByte) Función de declaración AsBoolean InitializeWinIo Lib "WinIo .dll" () AsBoolean declara la función ShutdownWinIo Lib "WinIo.dll" () AsBooleandll" () AsBoolean declara la función InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath AsString, ByVal Mode AsInteger) AsBoolean declara la función RemoveWinIoDriver Lib "WinIo .dll" () AsBooleanPublic IOStat AsBoolean '****************************************** ******* *********** '* Nombre de la función: GetPrnStat * '* Función: Detectar el estado de funcionamiento actual de la impresora en función de la dirección de memoria de la impresora * '* Parámetro: lptport: El número de puerto de la impresora que se va a detectar, como LPT1:* Valor de retorno: el valor del estado de funcionamiento de la impresora.
Desplácese hacia abajo hasta las funciones PI InitializeWinIo y GetPortVal * '* Nota: La dirección de memoria que se detectará es la dirección base donde se encuentra el puerto de impresión más 1 * '* Autor: Gu Lin * '* La dirección base del puerto LPT1 es; el puerto &H378 LPT2 La dirección base es &H278 * '****************** ******************** ******* *******************PublicFunction GetPrnStat(ByVal LptPort AsString) AsLongDim PrnAddr AsLongOnErrorResumeNextIf IOStat =FalseThen IOStat = InitializeWinIo() If IOStat ThenIf UCase(LptPort) = "LPT1:" ThenPrnAddr =&H379 ElseIf UCase(LptPort) ="LPT2:"Then PrnAddr =&H279 EndIf GetPortVal PrnAddr, GetPrnStat, 1Else GetPrnStat =&HFF EndIf GetPrnStat = GetPrnStat And &HF8 SelectCase GetPrnStat Case&H68, &H58, &H70 rnStat =1'Fuera de papel Caso GetPrnStat = 2'Sin condición de contacto&HD8 GetPrnStat =0'Condición normalElse GetPrnStat =3'Excepción EndSelectEnd Function'************************** ********** **************************************** ******** '* Función: Verificar funciones principales del estado de la impresora * '* Parámetro de entrada: PrintName Nombre de la impresora a verificar * '* Parámetro de salida: checkprinterr * '* Verificar resultado (0: Normal 1: Impresora apagada de papel 2: Impresora no conectada 3: Anomalía en la impresora * '* 4: La impresora no está instalada 5: El nombre de la impresora es incorrecto) * '* El nombre de la impresora es incorrecto * '*********** ********** ************* **************************** **************PublicFunction CheckPrintErr(ByVal PrintName AsString) AsLong 'Descripción del parámetro CheckPrintErr'0: Sin error'1: La impresora no está conectada'2: La impresora se ha quedado sin papel'3 : La impresora no está instaladaDim printjieguo AsLongDim i AsLong, k AsLongOnErrorGoTo ErrCheckPrint If Printers.Count =0Then CheckPrintErr = 4'La impresora no está instaladaExitFunctionEndIf 'Compruebe si se puede contactar con la impresora de facturasFor i =0To Printers.Count -1If (Printers(i ).DeviceName = PrintName) Then k = k +1ExitForEndIfNextIf k = 0Then 'Error de nombre de impresora CheckPrintErr =5ExitFunctionEndIfSet Printer = Impresoras(i) CheckPr