示例#1
0
        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();
            }
        }
示例#2
0
        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
        }