http://www.codeproject.com/csharp/printeroffline.aspHow to Check if your Printer is Connected, using C#
PrinterStatus on local and network printers
http://www.dotnet247.com/247reference/msgs/45/229078.aspx
vb.net的,照着修改
add reference to System managementImports System.Management
    Private Enum PrinterStatus
        PrinterIdle = 3
        PrinterPrinting = 4
        PrinterWarmingUp = 5
    End Enum    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strPrintServer As String
        strPrintServer = "localhost"
        Dim WMIObject As String, PrinterSet As Object, Printer As Object
        WMIObject = "winmgmts://" & strPrintServer
        PrinterSet = GetObject(WMIObject).InstancesOf("win32_Printer")
        For Each Printer In PrinterSet
            MsgBox(Printer.Name & ":  " & PrinterStatusToString(Printer.PrinterStatus))
        Next Printer
    End Sub
    Private Function PrinterStatusToString(ByVal ps As PrinterStatus) As String
        Dim s As String
        Select Case ps
            Case PrinterStatus.PrinterIdle
                s = "waiting (idle)"
            Case PrinterStatus.PrinterPrinting
                s = "printing"
            Case PrinterStatus.PrinterWarmingUp
                s = "warming up"
            Case Else   
                s = "unknown state"
        End Select
        PrinterStatusToString = s
    End Function

解决方案 »

  1.   

    public string GetPrinterStatus ()
            {
                string printStatus = "No default printer installed";
                ManagementObjectCollection printers = new ManagementClass( "Win32_Printer" ).GetInstances();
                foreach( ManagementObject printer in printers )
                {
                    // if ( printer["Default"] ) { //this works only in WinXP version
                    // an alternative to "PrinterStatus" would be "Availability"
                    switch ( printer["PrinterStatus"].ToString() )
                    {
                        case "1": printStatus = "Other"; break;
                        case "2": printStatus = "Unknown"; break;
                        case "3": printStatus = "Idle"; break;
                        case "4": printStatus = "Printing"; break;
                        case "5": printStatus = "Warmup"; break;
                        case "6": printStatus = "Stopped"; break;
                        case "7": printStatus = "Offline"; break;
                    }
    //                }
                }
                this.PrinterStatus = printStatus;
                return printStatus;
            }
      

  2.   

    谢谢 net_lover(孟子E章) :但好像,没纸了; 还是缺纸了这样详细的状态没办法取得。可以吗?