VB怎么检测打印机状态

http://topic.csdn.net/t/20050819/16/4219161.html


 

VB code
 
 
Option Explicit Declare Function MapPhysToLin Lib " WinIo.dll " (ByVal PhysAddr As Long , ByVal PhysSize As Long , ByRef PhysMemHandle) As Long Declare Function UnmapPhysicalMemory Lib " WinIo.dll " (ByVal PhysMemHandle, ByVal LinAddr) As Boolean Declare Function GetPhysLong Lib " WinIo.dll " (ByVal PhysAddr As Long , ByRef PhysVal As Long ) As Boolean Declare Function SetPhysLong Lib " WinIo.dll " (ByVal PhysAddr As Long , ByVal PhysVal As Long ) As Boolean Declare Function GetPortVal Lib " WinIo.dll " (ByVal PortAddr As Integer , ByRef PortVal As Long , ByVal bSize As Byte ) As Boolean Declare Function SetPortVal Lib " WinIo.dll " (ByVal PortAddr As Integer , ByVal PortVal As Long , ByVal bSize As Byte ) As Boolean Declare Function InitializeWinIo Lib " WinIo.dll " () As Boolean Declare Function ShutdownWinIo Lib " WinIo.dll " () As Boolean Declare Function InstallWinIoDriver Lib " WinIo.dll " (ByVal DriverPath As String , ByVal Mode As Integer ) As Boolean Declare Function RemoveWinIoDriver Lib " WinIo.dll " () As Boolean Public IOStat As Boolean ' ************************************************************ ' * 函数名称:GetPrnStat * ' * 功能:根据打印机的内存地址,检测打印机的目前工作状态 * ' * 参数:lptport: 要检测的打印机的端口号,如LPT1: * ' * 返回值:打印机的工作状态值。 * ' * 0:正常 1:缺纸 2:无联系 3:异常(其他错误) * ' * 调用:本模块中的API函数InitializeWinIo和GetPortVal * ' * 备注:检测的内存地址,是在打印端口所在的基地址上加1; * ' * 作者:谷霖 * ' * LPT1口的基地址为&H378;LPT2口的基地址为&H278 * ' ************************************************************ Public Function GetPrnStat(ByVal LptPort As String ) As Long Dim PrnAddr As Long On Error Resume Next If IOStat = False Then IOStat = InitializeWinIo() If IOStat Then If UCase(LptPort) = " LPT1: " Then PrnAddr = & H379 ElseIf UCase(LptPort) = " LPT2: " Then PrnAddr = & H279 End If GetPortVal PrnAddr, GetPrnStat, 1 Else GetPrnStat = & HFF End If GetPrnStat = GetPrnStat And & HF8 Select Case GetPrnStat Case & H68, & H58, & H70 GetPrnStat = 1 ' 缺纸 Case & H78 GetPrnStat = 2 ' 无联系 Case & HD8 GetPrnStat = 0 ' 正常 Case Else GetPrnStat = 3 ' 异常 End Select End Function ' ************************************************************************* ' * 函数功能:检查打印机的状态主函数 * ' * 输入参数:PrintName 要检测的打印机名称 * ' * 输出参数:checkprinterr * ' * 检查结果(0:正常 1:打印机缺纸 2:打印机无联系 3:打印机异常 * ' * 4:没有安装打印机 5:打印机名称错误) * ' ************************************************************************* Public Function CheckPrintErr(ByVal PrintName As String ) As Long ' CheckPrintErr参数说明 ' 0:没有错误 ' 1:打印机无联系 ' 2:打印机缺纸 ' 3:没有安装打印机 Dim printjieguo As Long Dim i As Long , k As Long On Error GoTo ErrCheckPrint If Printers.Count = 0 Then CheckPrintErr = 4 ' 没有安装打印机 Exit Function End If ' 检测发票打印机是否可以联系 For i = 0 To Printers.Count - 1 If (Printers(i).DeviceName = PrintName) Then k = k + 1 Exit For End If Next If k = 0 Then ' 打印机名称错误 CheckPrintErr = 5 Exit Function End If Set Printer = Printers(i) CheckPrintErr = GetPrnStat(Printer.Port) Exit Function ErrCheckPrint: CheckPrintErr = 3 Exit Function End Function

 

转载于:https://www.cnblogs.com/baiefjg/archive/2009/06/14/1502826.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值