设为首页 加入收藏

TOP

QT 监听 USB 设备 插入、拔出动作
2015-07-24 05:32:09 来源: 作者: 【 】 浏览:7
Tags:监听 USB 设备 插入 拔出 动作

参考网上资料,通过QT 实现


#ifndef WIDGET_H
#define WIDGET_H
 
#include 
  
   

#include <
   windows.h>
#include 
   
     class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); protected: bool winEvent(MSG *msg, long *result); private: //UsbConfig usbConfig; char FirstDriveFromMask (ULONG unitmask); }; #endif // WIDGET_H 
   
  



#include "qt_Watch/qwidget.h"
#include 
  
   

#include 
   
     #include 
    
      Widget::Widget(QWidget *parent) : QWidget(parent) { setWindowFlags(Qt::Window); //窗口以Window为父窗口 } Widget::~Widget() { } bool Widget::winEvent(MSG *msg,long *result) { int msgType = msg->message; if(msgType == WM_DEVICECHANGE) { qDebug() << "收到事件 " ; PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)msg->lParam; switch(msg->wParam) { case DBT_DEVICETYPESPECIFIC: { qDebug() << "DBT_DEVICETYPESPECIFIC " ; break; } 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: "<
     
       dbch_devicetype == DBT_DEVTYP_VOLUME) { PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb; if (lpdbv -> dbcv_flags == 0) { qDebug() << "USB_设备移除"; } } qDebug() << "DBT_DEVICEREMOVECOMPLETE" ; break; } } return false; } char Widget::FirstDriveFromMask (ULONG unitmask) { char i; for (i = 0; i < 26; ++i) { if (unitmask & 0x1) break; unitmask = unitmask >> 1; } return (i + 'A'); } 
     
    
   
  

#include 
  
   
#include "qt_Watch/qwidget.h"

int main(int argc,char ** argv)
{
	QApplication app(argc,argv);

	Widget widget;
	widget.show();

	return app.exec();
}
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 2955 Brackets 下一篇[ACM] POJ 1046 Color Me Less

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: