0

我正在尝试获取网络打印机的状态。正如这个链接所说,我尝试了 WMI 代码。但是即使我拔掉了网线,它总是会转到其他部分。

这是我尝试过的代码:

ManagementObjectSearcher searcher = new 
             ManagementObjectSearcher("SELECT * FROM Win32_Printer");

string printerName = "";

foreach (ManagementObject printer in searcher.Get())
{
    printerName = printer["Name"].ToString().ToLower();

    if (printer["WorkOffline"].ToString().ToLower().Equals("true") && printer["Default"].ToString().ToLower().Equals("true"))

    {
       string s = "Printer  offline" + printerName;
       listBox1.Items.Add(s);
    }
    else
    {
        // printer is not offline
        //   Console.WriteLine("Your Plug-N-Play printer is connected.");

        string s = "Printer found and is online " + printerName;
        listBox1.Items.Add(s);
    }
4

2 回答 2

1

检查条件

printer["PrinterState"].ToString().ToLower().Equals("Offline")
// this would mean offline == Offline which would be false

你需要小写的比较,你有一个错字离线有一个Caps Lock O

于 2013-04-11T06:19:06.370 回答
1

比较可能是不正确的......因为声明

ConsoleWriteLine(printer["PrinterState"].ToString());

打印机在线时返回“0”,由于任何原因(断电、卸载、电缆连接、网络故障等)出现此故障时返回“128”

正确的比较必须是:

printer["PrinterState"].ToString().ToLower().Equals("128")用于离线

printer["PrinterState"].ToString().ToLower().Equals("0")对于在线

于 2017-09-08T16:21:36.643 回答