如果要说什么请用winapi、捕获打印机句柄什么之类的言语而又没有具体实例的话,免开尊口。我觉的这样说的人都挺不负责任的。先谢谢了。

解决方案 »

  1.   

    '引用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为打印机服务器
    -------------------转载的例子