2013-04-11 2 views
0

네트워크 프린터의 상태를 얻으려고합니다. 이 link에 WMI 코드를 시도했습니다. 그러나 네트워크 케이블을 제거하더라도 항상 다른 부분으로 이동합니다. 여기 프린터 상태가 틀린 값을 반환합니다.

내가 노력 코드입니다 :

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

당신이 낮은 경우에 비교를 필요 조건 밖으로

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

에 대한 오프라인

printer["PrinterState"].ToString().ToLower().Equals("0")에 대한

printer["PrinterState"].ToString().ToLower().Equals("128")을하고 :해야? 당신은 왜 그것이 항상 else 파트를 때릴 지 알게됩니다. – V4Vendetta

+0

+1 좋은 관찰입니다. 하지만 그 가치를 인쇄했습니다. 항상 거짓입니다. – Zigma

+0

@ V4Vendetta 안녕하세요 질문이 수정되었습니다. 지금 상태를 확인하십시오 – Zigma

답변

1

확인, 당신은 오타가 오프라인이 캡이O 잠금이 있습니다

1

비교가 올바르지 않을 수 있습니다. '원인 :

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

반환 "0"프린터가 "128"때 인해 장애 (등 전원 차단, 제거, 케이블 conection에, 네트워크 문제,) 어떤 이유로

오른쪽 비교 라인이며, `다음 Offline` 당신이`ToLower`이 라인