Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

再次求助: 获取系统中某打印机的状态:是否为【脱机】?

litao  发表于:2014-10-08 21:46:03  
复制

花了2天时间,查找了一大堆东东。很多东西看着很好! 效果太差了!


特再次请大能指点:检查打印机的状态,是否为【脱机】?

因为,我需要程序立即打印报表,如果打印机脱机就没法实现!

很多时候,用户会乱接打印机,(一台电脑接几个打印机,却一个都没打开;一会又把数据线碰掉了),终端的打印机很混乱,必须要检测各个打印机的状态。


 

Top
litao 发表于:2014-10-08 21:51:09

我找了一段 代码,说是能检测打印机的状态,实际就是逗你玩!

空闲的时候返回:【等待】;打印的时候返回:【等待】;拔掉数据线还是返回:【等待】;关机的时候返回:【等待】

只有删除打印机,它才安静了!

‘-------------------------------
Sub WMI枚举打印机状态()
Dim strMsg As String
'取得WMI服务
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
'查找系统所有打印服务(这是集合)
Set colPrinters = objWMI.ExecQuery("Select * from Win32_Printer")
    
strMsg = ""
'遍历
For Each objx In colPrinters
    strMsg = strMsg & "打印机名: " & objx.Name & vbCrLf
    strMsg = strMsg & "本地打印机: " & objx.Location & vbCrLf
    Select Case objx.PrinterStatus
        Case 1
            strList = "其它状态"
        Case 2
            strList = "不明"
        Case 3
            strList = "等待"
        Case 4
            strList = "打印中..."
        Case 5
            strList = "开机"
    End Select
    strMsg = strMsg & "打印机状态: " & strList & vbCrLf
Next

MsgBox strMsg
End Sub



litao 发表于:2014-10-09 11:08:55


问题解决:

通过检查【Win32_Printer】的 Attributes 属性 的(二进制 1024) 位的状态【PRINTER_ATTRIBUTE_WORK_OFFLINE】: 1为脱机,0为联机

‘========================

http://www.accessoft.com/blog/?userID=37995



竹笛 发表于:2014-10-09 11:39:53
祝贺通过自已的努力解决了,并谢谢您的分享!

总记录:3篇  页次:1/1 9 1 :