Итак, я создал этот тест:
Код: Выделить всё
// 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));
}
}
Код: Выделить всё
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