private void IsDeviceExist(string status) { //检测硬件设备是否连接成功 ManagementObjectCollection collection = null; bool isExist = false; using (BackgroundWorker bw = new BackgroundWorker()) { bw.DoWork += new DoWorkEventHandler((sender1, e1) => { using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub")) { collection = searcher.Get(); searcher.Dispose(); } }); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler((sender2, e2) => { isExist = false; foreach (ManagementBaseObject device in collection) { //获取包含PID和VID的字符串 string deviceId = (string)device.GetPropertyValue("DeviceID"); //这里的XXX填写自己产品硬件设备的PID和VID,连接硬件后在设备管理器中可以查到 if ("XXX".Equals(deviceId)) { isExist = true; break; } } //未连接硬件设备 if (!isExist) { this.deviceIdLabel.Text = @"00000000"; this.connStatus.Text = @"未连接设备"; this.connStatusImage.Image = global::FlashRecovery.Properties.Resources.未连接设备; if ("out".Equals(status)) { MessageBox.Show("检测到硬件设备断开连接,请重新插入硬件设备恢复软件使用"); } //设置窗体不可操作 CurGlobals.EnableWindow(this.Handle, 0); } else { if (string.IsNullOrEmpty(_deviceId)) { //获取设备ID //... } this.deviceIdLabel.Text = _deviceId; this.connStatus.Text = @"成功连接设备"; this.connStatusImage.Image = global::FlashRecovery.Properties.Resources.成功连接设备; //设置窗体可操作 CurGlobals.EnableWindow(this.Handle, 1); } }); bw.RunWorkerAsync(); } }
private void FlashRecovery_Load(object sender, EventArgs e) { //记录窗体初始宽度 _formWidth = this.Width; //记录窗体初始高度 _formHeight = this.Height; #region 检测是否连接硬件设备 ManagementObjectCollection collection; //获取所有连接的USB设备 using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub")) { collection = searcher.Get(); searcher.Dispose(); } string deviceID = ""; //获取硬件设备ID deviceID //... _deviceId = deviceID; bool isExist = false; //判断产品硬件设备是否连接 foreach (ManagementBaseObject device in collection) { string deviceId = (string)device.GetPropertyValue("DeviceID"); //连接硬件设备 if ("XXX".Equals(deviceId)) { isExist = true; this.connStatus.Text = @"成功连接设备"; this.connStatusImage.Image = global::FlashRecovery.Properties.Resources.成功连接设备; this.deviceIdLabel.Text = deviceID.ToString(); break; } } //未连接硬件设备 if (!isExist) { MessageBox.Show("未检测到硬件设备,请连接硬件设备", "警告", MessageBoxButtons.OK); //设置窗体不可操作 CurGlobals.EnableWindow(this.Handle, 0); } #endregion }