C#: получить подробную информацию о принтере

У меня есть принтер Brother RJ-4030, подключенный к кабелю и установленный по умолчанию. и я бегу Windows 7 64 бит и Visual Studio 2013

в основном, я хочу знать как можно больше информации о принтере.

я пробовал 2 метода, первый с использованием Win32_Printer структура:

  private void testPrinterAttrbiutes(params string[] printerAtt)
  {
      var printerQuerry = new ManagementObjectSearcher("SELECT * FROM Win32_Printer where Default=True");

      foreach (var printer in printerQuerry.Get())
      {          
          foreach (var attribute in printerAtt)
          {
              var result = printer.GetPropertyValue(attribute);
              Debug.WriteLine(attribute + " " + result);
          }

      }

   }

и вызывается с такими параметрами: " Status", "ExtendedPrinterStatus", "Availability", "PrinterState", "PrinterStatus", "WorkOffline"

Во втором методе я использовал PrintQueue класс как так

private void printQuere()
        {
            LocalPrintServer localPrintServer = new LocalPrintServer();
            PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();
            defaultPrintQueue.Refresh();
          //  List<bool> printerStatus = new List<bool>();
            System.Collections.Specialized.ListDictionary printerStatus = new System.Collections.Specialized.ListDictionary();
            printerStatus.Add("Name", defaultPrintQueue.Name);
            printerStatus.Add("IsBusy", defaultPrintQueue.IsBusy);
            printerStatus.Add("IsDirect", defaultPrintQueue.IsDirect);
            printerStatus.Add("IsInError" , defaultPrintQueue.IsInError);
            printerStatus.Add("IsNotAvailable" , defaultPrintQueue.IsNotAvailable);
            printerStatus.Add("IsOffline" , defaultPrintQueue.IsOffline);
            printerStatus.Add("IsOutOfMemory" ,defaultPrintQueue.IsOutOfMemory);
            printerStatus.Add("IsPaused", defaultPrintQueue.IsPaused);
            printerStatus.Add("IsPendingDeletion", defaultPrintQueue.IsPendingDeletion);
            printerStatus.Add("IsPowerSaveOn", defaultPrintQueue.IsPowerSaveOn);
            printerStatus.Add("IsServerUnknown", defaultPrintQueue.IsServerUnknown);
            printerStatus.Add("IsShared", defaultPrintQueue.IsShared);
            printerStatus.Add("IsWaiting", defaultPrintQueue.IsWaiting);



            foreach (System.Collections.DictionaryEntry item in printerStatus)
            {
                Debug.WriteLine(item.Key + " " + item.Value);
            }


        }

Я попробовал 4 принтера, заявленных:

(1) подключен кабель питания

(2) кабель питания отключен

(3) кабель питания отключен

(4) отключен кабель питания

Второй метод (с использованием PrintQueue) дал мне ложь для всех свойств независимо от того, какое состояние из вышеупомянутого было проверено

первый метод (с использованием Win32_Printer) дал мне этот результат (для всех тестов)

Состояние Неизвестно ExtendedPrinterStatus 2(Неизвестно) Доступность PrinterState 0 PrinterStatus 3 (Idle)

и WorkOffline дал мне false для теста (1) и true для тестов (2)-(4)

Есть ли другой способ получить информацию о принтере?

Я что-то пропустил?

Есть ли способ проверить, поддерживает ли мой принтер отправку сигналов в мою программу?

0 ответов

Другие вопросы по тегам