'引用windows scripting host object model 'Check Printers at 5 minutes intervals Private Sub BKWait(HowManySecs) ' pause for HowManySecs seconds Dim EndWait EndWait = DateAdd("s", HowManySecs, Now) While Now < EndWait Wend End Sub Sub PrintMon(host As String) Dim WScript As New IWshShell_Class Dim i As Integer Set c = GetObject("WinNT://" & host & ",computer") c.Filter = Array("PrintQueue") MsgBox "Check Printers on " & host For Each pq In c If pq.Status > 0 Then CheckPrinter (pq) Next BKWait (180) '延时3分钟 DoEvents Call PrintMon(host) End Sub 'Display Printer status for non-normal conditions Sub CheckPrinter(obj) MsgBox "Print Queue Name: " & obj.Name MsgBox "Printer Model:" & obj.model MsgBox "Printer Location:" & obj.Location Select Case obj.Status Case 1 MsgBox "打印队列暂停." Case 2 MsgBox "打印队列被删除." Case 3 MsgBox "打印机错误." Case 4 MsgBox "纸堵塞在打印机中." Case 5 MsgBox "打印机缺纸." Case 6 MsgBox "打印机设置为手工进纸." Case 7 MsgBox "打印机错误." Case 8 MsgBox "打印机下线." Case 256 MsgBox "打印机I/O活动." Case 512 MsgBox "打印机忙." Case 1024 MsgBox "打印机正在打印." Case 2048 MsgBox "打印机输出盒满." Case 4096 MsgBox "打印机不可用." MsgBox 8192 MsgBox "打印机等待." Case 16384 MsgBox "打印机正在处理." Case 32768 MsgBox "打印机正在初始化." Case 65536 MsgBox "打印机正在加热." Case 131072 MsgBox "Printer is low on toner." Case 262144 MsgBox "Printer is out of toner." Case 524288 MsgBox "打印机纸未接上." Case 1048576 MsgBox "用户干预打印机." Case 2097152 MsgBox "打印机内存用尽." Case 4194304 MsgBox "打印机仓门打开." Case 8388608 MsgBox "打印机未知错误." Case 16777216 MsgBox "打印机处于省电模式." Case Else MsgBox "Printer is changing states or has error." MsgBox "Status:" & CStr(pq.Status) End Select End Sub Private Sub Form_Load() Dim host As String label: host = InputBox("请输入打印机服务器所在组(域)名:(eg:3623/lysra)", "=====Printer Monitor=====") If host = "" Then GoTo labelCall PrintMon(host) End Sub '假设3623工作组中LySra为打印机服务器 -------------------转载的例子
'Check Printers at 5 minutes intervals
Private Sub BKWait(HowManySecs)
' pause for HowManySecs seconds
Dim EndWait
EndWait = DateAdd("s", HowManySecs, Now)
While Now < EndWait
Wend
End Sub
Sub PrintMon(host As String)
Dim WScript As New IWshShell_Class
Dim i As Integer
Set c = GetObject("WinNT://" & host & ",computer")
c.Filter = Array("PrintQueue")
MsgBox "Check Printers on " & host
For Each pq In c
If pq.Status > 0 Then CheckPrinter (pq)
Next
BKWait (180) '延时3分钟
DoEvents
Call PrintMon(host)
End Sub
'Display Printer status for non-normal conditions
Sub CheckPrinter(obj)
MsgBox "Print Queue Name: " & obj.Name
MsgBox "Printer Model:" & obj.model
MsgBox "Printer Location:" & obj.Location
Select Case obj.Status
Case 1
MsgBox "打印队列暂停."
Case 2
MsgBox "打印队列被删除."
Case 3
MsgBox "打印机错误."
Case 4
MsgBox "纸堵塞在打印机中."
Case 5
MsgBox "打印机缺纸."
Case 6
MsgBox "打印机设置为手工进纸."
Case 7
MsgBox "打印机错误."
Case 8
MsgBox "打印机下线."
Case 256
MsgBox "打印机I/O活动."
Case 512
MsgBox "打印机忙."
Case 1024
MsgBox "打印机正在打印."
Case 2048
MsgBox "打印机输出盒满."
Case 4096
MsgBox "打印机不可用."
MsgBox 8192
MsgBox "打印机等待."
Case 16384
MsgBox "打印机正在处理."
Case 32768
MsgBox "打印机正在初始化."
Case 65536
MsgBox "打印机正在加热."
Case 131072
MsgBox "Printer is low on toner."
Case 262144
MsgBox "Printer is out of toner."
Case 524288
MsgBox "打印机纸未接上."
Case 1048576
MsgBox "用户干预打印机."
Case 2097152
MsgBox "打印机内存用尽."
Case 4194304
MsgBox "打印机仓门打开."
Case 8388608
MsgBox "打印机未知错误."
Case 16777216
MsgBox "打印机处于省电模式."
Case Else
MsgBox "Printer is changing states or has error."
MsgBox "Status:" & CStr(pq.Status)
End Select
End Sub
Private Sub Form_Load()
Dim host As String
label: host = InputBox("请输入打印机服务器所在组(域)名:(eg:3623/lysra)", "=====Printer Monitor=====")
If host = "" Then GoTo labelCall PrintMon(host)
End Sub
'假设3623工作组中LySra为打印机服务器
-------------------转载的例子