C# Посчитать кол-во не подключенных и проблемных устройств
Снимок http://joxi.net/n2YLoRjHZxYe5m.jpg
На фотографии видна часть, но я все таки скопирую код сюда :
ManagementObjectSearcher Devices =
new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity");
foreach (ManagementObject mo in Devices.Get())
{
ConnectedDiveces += "\r\n" + "---------------------------------------------------------" + "\r\n" +
"Name: " + mo["Caption"] + "\r\n" + "ID: " + mo["DeviceID"] + "\r\n" + "Manufacturer: " +
mo["Manufacturer"] + "\r\n" + "Plug and Play: " + mo["Present"] + "\r\n" + "Status: " + mo["Status"];
}
Так я достаю всю информацию о подключенных девайсах на материнской плате. То ли мозги вскипели, не знаю, не могу сделать.
- Мне нужно посчитать кол-во всех подключенных устройств в цифрах.
- Нужно найти те устройства, у которых Status != OK и Present = FALSE и выдать отдельно только их. И + к этому отдельно посчитать и выдать их кол-во ( то есть кол-во проблемных устройств )
Спасибо вам заранее большое за помощь!
Ответы (1 шт):
Автор решения: Kunoichi
→ Ссылка
Возможно этот код Вам поможет
ManagementObjectSearcher Devices = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity");
var allDevices = new List<string>();
var defectiveDevices= new List<string>();
foreach (ManagementObject device in Devices.Get())
{
var deviceString = "\r\n" + "---------------------------------------------------------" + "\r\n" +
"Name: " + device["Caption"] + "\r\n" + "ID: " + device["DeviceID"] + "\r\n" + "Manufacturer: " +
device["Manufacturer"] + "\r\n" + "Plug and Play: " + device["Present"] + "\r\n" + "Status: " + device["Status"];
allDevices.Add(deviceString);
if(device["Status"] != "OK" && device["Present"] == "FALSE")
{
defectiveDevices.Add(deviceString);
}
}
Console.WriteLine($"Total devices: {allDevices.Count}");
Console.WriteLine($"Total defective devices: {defectiveDevices.Count}");
Console.WriteLine();
foreach(var defectiveDevice in defectiveDevices)
{
Console.WriteLine(new string('-', 50));
Console.WriteLine(defectiveDevice);
}