Я кодировал с C # в Visual Studio, Windows формы приложения. Я хочу видеть pid и vid USB, когда он подключен. Я написал этот код, но в foreach (ManagementObject service in s.Get())
есть ошибка. В s.Get()
часть. Он работает в Form1_Load
части, но застревает в WNDProc
.
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if(m.Msg == WM_DEVICECHANGE)
switch ((int)m.WParam)
{
case DBT_DEVICEARRIVAL:
listBox1.Items.Add("New Device Connected");
ManagementObjectSearcher s = new ManagementObjectSearcher("@SELECT * FROM Win32_USBHub");
foreach (ManagementObject service in s.Get())
{
listBox1.Items.Add(service);
}
string[] ports = SerialPort.GetPortNames();
Console.WriteLine("The following serial ports were found:");
foreach (string port in ports)
{
Console.WriteLine(port);
listBox1.Items.Add(port);
}
break;
case DBT_DEVICEREMOVECOMPLETE:
listBox1.Items.Add("Device Removed");
break;
}