Как определить, какие принтеры подключены с помощью WMIC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как определить, какие принтеры подключены с помощью WMI

Сообщение Anonymous »

Я пытался найти способ выяснить, какие из установленных принтеров «подключены». После некоторого поиска в Google я решил, что мне нужно погрузиться в WMI.

Итак, я создал этот тест:

Код: Выделить всё

// Struct to store printer data in.
public struct MyPrinter
{
public string Availability;
public string ExtendedPrinterStatus;
public string Name;
public string PrinterStatus;
public string Status;
public string StatusInfo;

public MyPrinter(string a, string eps, string n, string ps, string s, string si)
{
Availability = a;
ExtendedPrinterStatus = eps;
Name = n;
PrinterStatus = ps;
Status = s;
StatusInfo = si;
}
}

var installedPrinters = new string[numPrinters];
PrinterSettings.InstalledPrinters.CopyTo(installedPrinters, 0);

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

foreach (var printer in searcher.Get())
{
if (installedPrinters.Contains(printer["Name"].ToString()))
{
var availability = (printer["Availability"] ?? "").ToString();
var extendedPrinterStatus = (printer["ExtendedPrinterStatus"] ?? "").ToString();
var name = (printer["Name"] ?? "").ToString();
var printerStatus = (printer["PrinterStatus"] ?? "").ToString();
var status = (printer["Status"] ?? "").ToString();
var statusInfo = (printer["StatusInfo"] ?? "").ToString();

data.Add(new MyPrinter(availability, extendedPrinterStatus, name, printerStatus, status, statusInfo));
}
}
У меня 6 принтеров, из которых 2 — сетевые. Я запускал это со всеми подключенными принтерами, и все результаты выглядели так:

Код: Выделить всё

Availability = "" // printer["Availability"] = null
ExtendedPrinterStatus = "2" // 2 = Unknown
Name = "{printer name here}"
PrinterStatus = "3" // 3 = Idle
Status = "Unknown"
StatusInfo = "" // Null
Таким образом, единственная разница между принтерами — это имя.
Я запустил сценарий еще раз, но на этот раз отключил свой ноутбук от сети. Таким образом, в этом случае 2 принтера больше не были подключены.

Странно (для меня) то, что результаты оказались точно такими же.

Я провел этот тест, чтобы выяснить, какое поле мне нужно использовать в моем случае.

Итак, в В конце концов, я так и не смог понять, как определить, подключен принтер или нет.
Итак мне бы хотелось найти способ определить установленные и подключенные принтеры на C#. Если есть способ сделать это без использования классов WMI, меня тоже устраивает, если он работает.

Подробнее здесь: https://stackoverflow.com/questions/132 ... -using-wmi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Перечислите принтеры в виде таблицы, которые подключены к одной сети.
    Anonymous » » в форуме IOS
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Другие принтеры работают медленно, если на одном принтере возникает ошибка печати.
    Гость » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • Красивые принтеры GDB в Almalinux 8
    Anonymous » » в форуме Linux
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Лучший способ реализовать собственные красивые принтеры
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Ограничьте принтеры во время печати в Android
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»