打印机状态返回错误值

本文关键字:错误 返回 状态 打印机 | 更新日期: 2023-09-27 18:08:40

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

下面是我试过的代码:

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);
    }

打印机状态返回错误值

检查条件

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

你需要小写的比较,你有打字错误脱机有一个大写锁定 O

比较可能不对…因为语句

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

当打印机在线时返回"0",当由于任何原因(断电、卸载、电缆连接、网络故障等)导致该故障时返回"128"

正确的比较必须:

printer["PrinterState"].ToString().ToLower().Equals("128") for off line

printer["PrinterState"].ToString().ToLower().Equals("0") for online