Получить принтеры подключены / доступны - PullRequest
1 голос
/ 29 мая 2019

Запустив следующий код, я всегда получаю ничего за «Доступность».Как я могу получить информацию, если принтер подключен к сети или отключен?В настройках Windows это отображается, но не моим кодом:

    {        
        ManagementScope scope = new ManagementScope(@"\root\cimv2");
        scope.Connect();

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

        foreach (ManagementObject printer in searcher.Get())
        {
            string printerName = printer["Name"].ToString().ToLower();
            Console.WriteLine("Printer :" + printerName);

            PrintProps(printer, "Caption");
            PrintProps(printer, "ExtendedPrinterStatus");
            PrintProps(printer, "Availability");
            PrintProps(printer, "Default");
            PrintProps(printer, "DetectedErrorState");
            PrintProps(printer, "ExtendedDetectedErrorState");
            PrintProps(printer, "ExtendedPrinterStatus");
            PrintProps(printer, "LastErrorCode");
            PrintProps(printer, "PrinterState");
            PrintProps(printer, "PrinterStatus");
            PrintProps(printer, "Status");
            PrintProps(printer, "WorkOffline");
            PrintProps(printer, "Local");
        }
    }

    static void PrintProps(ManagementObject o, string prop)
    {
        try { Console.WriteLine(prop + "|" + o[prop]); }
        catch (Exception e) { Console.Write(e.ToString()); }
    }

1 Ответ

0 голосов
/ 30 мая 2019

Проблема, с которой я столкнулся, заключалась в том, что нужно различать сетевые / wlan-подключенные принтеры и USB-проводные принтеры:

   PrintProps(printer, "WorkOffline"); // works only for usb wired printers
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...