using System.Management;
public class Mainform()
{
ManagementEventWatcher watcher;
public Formload()
{
//创建ManagmentEventWatcher 对象
watcher = new ManagmentEventWatcher("SELECT *FROM Win32_DeviceChangeEvent WHERE EventType = 2 or EventType = 3");
//添加设备变化事件处理程序
watcher.EventArrived += Watcher_EventArrived;
//开始监听
watcher.Start();
}
}
private void Watcher_EventArrived(object sender,EventArrivedEventArgs e)
{
//清空listBox
this.comComboBoxEdit.Properties.Items.Clear();
//更新COM号列表
string[] comports = System.IO.Ports.SerialPort.GetPortNames();
foreach(string comPort in comports)
{
this.comComboBoxEdit.Properties.Items.Add(comPort);
}
if(!Communicator.GetInstance().Com.IsOpen)//COM口被打开不更新COM号
{
this.comComboBoxEdit.SelectedIndex = this.comComBoxEdit.Properties.Items.Count-1;
}
}
C#实时检测COM口设备变化,并更新COM口列表
于 2024-01-12 17:25:30 首次发布