QT5 检测 usb设备插拔
来源:互联网 发布:java运行出现antbuild 编辑:程序博客网 时间:2024/04/30 04:28
// GUID_DEVINTERFACE_USB_DEVICE { 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } }, /注册插拔事件 HDEVNOTIFY hDevNotify; DEV_BROADCAST_DEVICEINTERFACE NotifacationFiler; ZeroMemory(&NotifacationFiler,sizeof(DEV_BROADCAST_DEVICEINTERFACE)); NotifacationFiler.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); NotifacationFiler.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; for(int i=0;i<sizeof(GUID_DEVINTERFACE_LIST)/sizeof(GUID);i++) { NotifacationFiler.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];//GetCurrentUSBGUID();//m_usb->GetDriverGUID(); hDevNotify = RegisterDeviceNotification((HANDLE)this->winId(),&NotifacationFiler,DEVICE_NOTIFY_WINDOW_HANDLE); if(!hDevNotify) { int Err = GetLastError(); qDebug() << "注册失败" <<endl; } //else } bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result){ MSG* msg = reinterpret_cast<MSG*>(message); int msgType = msg->message; if(msgType==WM_DEVICECHANGE) { //qDebug() << "Event DEVICECHANGE Happend" << endl; PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)msg->lParam; switch (msg->wParam) { case DBT_DEVICEARRIVAL://插入设备 if(lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME) { PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb; if(lpdbv->dbcv_flags ==0) { //插入u盘 QString USBDisk = QString(this->FirstDriveFromMask(lpdbv ->dbcv_unitmask)); qDebug() << "USB_Arrived and The USBDisk is: "<<USBDisk ; ui->textBrowser->append("USB_Arrived and The USBDisk is " + USBDisk); } } if(lpdb->dbch_devicetype = DBT_DEVTYP_DEVICEINTERFACE) { PDEV_BROADCAST_DEVICEINTERFACE pDevInf = (PDEV_BROADCAST_DEVICEINTERFACE)lpdb; QString strname = QString::fromWCharArray(pDevInf->dbcc_name,pDevInf->dbcc_size); // ui->textBrowser->append("插入设备 :" + strname); } break; case DBT_DEVICEREMOVECOMPLETE://拔出设备 qDebug() << "设备移除" <<endl; if(lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME) { PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb; if(lpdbv->dbcv_flags == 0) { //qDebug() << "USB_Removed"; ui->textBrowser->append("USB_Remove"); } } if(lpdb->dbch_devicetype = DBT_DEVTYP_DEVICEINTERFACE) { PDEV_BROADCAST_DEVICEINTERFACE pDevInf = (PDEV_BROADCAST_DEVICEINTERFACE)lpdb; qDebug()<< "移除设备(name):" << pDevInf->dbcc_name; //qDebug()<< "移除设备(guid):" << pDevInf->dbcc_classguid; qDebug()<< "移除设备(size):" << pDevInf->dbcc_size; } break; } } return false;}
0 0
- QT5 检测 usb设备插拔
- QT5 检测 usb设备插拔
- usb驱动之设备插拔检测
- Windows平台下Qt4与Qt5检测USB设备插拔
- 再论检测usb口的设备插拔
- 一个可靠的USB设备插拔检测
- vc检测usb设备的拔插状态
- Qt Usb插拔检测
- android USB插拔检测
- QT 检测USB插拔
- android USB插拔检测
- 监控USB设备插拔
- 监控USB设备插拔
- 动态检测设备拔插
- Wince 检测 SD卡/USB 拔插
- Wince下检测SD/USB插拔
- Wince 检测 SD卡/USB 拔插
- Wince 检测 SD卡/USB 拔插
- 13.Spring学习笔记_通过注解配置Bean(by尚硅谷_佟刚)
- 肖特基二极管和快恢复二极管区别
- 常见的非阻塞队列
- Spring+Websocket实现消息的推送
- ViewPage的无限循环(五)
- QT5 检测 usb设备插拔
- openwrt下的 软件包的make分析
- java除法 保留两位小数
- 2016_S&P_Beauty and the Beast: Diverting modern web browsers to build unique browser fingerprints翻译
- win7 访问linuxsamba“ 此账户并未得到从这个工作站登录的授权
- javascript中定义变量var,const,let简单的区别
- Apache Solr入门教程(初学者之旅)
- vue+ElementUI实现订单页动态添加产品效果
- jquery中attr和prop的区别