资源简介
1.使用nativeEvent事件获取相关信息
2.界面是一个QDialog,设备vid pid 序列号已提取好,将显示在上面
3.附带源码,同时静态编译的了一个应用程序,可直接运行
4.测试环境为qt5.3.2+vs2013
5.给需要的人作参考,更多功能请自行拓展,不喜勿下哦!
代码片段和文件信息
#include “dialog.h“
#include “ui_dialog.h“
#include
#include
#include
Dialog::Dialog(QWidget *parent) :
QDialog(parent)
ui(new Ui::Dialog)
{
registerDevice();
ui->setupUi(this);
setWindowtitle(QStringLiteral(“优盘探测工具v1.0 (By-Mr.Luo)“));
setWindowFlags(Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint);
setFixedSize(350 210);
ui->lineEditPid->setReadOnly(true);
ui->lineEditProduct->setReadOnly(true);
ui->lineEditSerialNum->setReadOnly(true);
ui->lineEditVendorID->setReadOnly(true);
ui->lineEditVid->setReadOnly(true);
ui->lineEditProductVersion->setReadOnly(true);
ui->label_6->setAlignment(Qt::AlignRight);
QPalette pa;
pa.setColor(QPalette::WindowTextQt::red);
ui->label_6->setPalette(pa);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::registerDevice()
{
const GUID GUID_DEVINTERFACE_LIST[] = {
{ 0xA5DCBF10 0x6530 0x11D2 { 0x90 0x1F 0x00 0xC0 0x4F 0xB9 0x51 0xED } }
{ 0x53f56307 0xb6bf 0x11d0 { 0x94 0xf2 0x00 0xa0 0xc9 0x1e 0xfb 0x8b } }};
HDEVNOTIFY hDevNotify;
DEV_BROADCAST_DEVICEINTERFACE NotifacationFiler;
ZeroMemory(&NotifacationFilersizeof(DEV_BROADCAST_DEVICEINTERFACE));
NotifacationFiler.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotifacationFiler.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
for(int i=0;i {
NotifacationFiler.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];//GetCurrentUSBGUID();//m_usb->GetDriverGUID();
hDevNotify = RegisterDeviceNotification((HANDLE)this->winId()&NotifacationFilerDEVICE_NOTIFY_WINDOW_HANDLE);
if(!hDevNotify)
{
qDebug() << QStringLiteral(“注册失败!“) < }
}
}
bool Dialog::nativeEvent(const QByteArray &eventType void *message long *result)
{
Q_UNUSED(eventType);
Q_UNUSED(result);
MSG* msg = reinterpret_cast(message);
int msgType = msg->message;
if(msgType==WM_DEVICECHANGE)
{
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) //优盘
{
QString USBDisk = QString(this->FirstDriveFromMask(lpdbv ->dbcv_unitmask));
qDebug() << QString(QStringLiteral(“已检测到USB设备插入--盘符:<%1>“)).arg(USBDisk);
ui->label_6->setText(QString(QStringLiteral(“已检测到USB设备插入--盘符:<%1>“)).arg(USBDisk));
}
if(lpdbv->dbcv_flags == DBTF_MEDIA) { //光盘
qDebug() << “CD_Arrived“;
}
}
if(lpdb->dbch_devicetype = DBT_DEVTYP_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5987 2018-01-31 13:46 USBWatchTest\dialog.cpp
文件 536 2016-04-22 17:11 USBWatchTest\dialog.h
文件 4386 2016-04-22 16:55 USBWatchTest\dialog.ui
文件 175 2016-04-22 00:30 USBWatchTest\main.cpp
文件 373 2016-04-22 00:30 USBWatchTest\USBWatchTest.pro
目录 0 2018-01-31 13:56 USBWatchTest
文件 9756672 2018-01-31 13:53 USBWatchTest.exe
----------- --------- ---------- ----- ----
9768129 7
相关资源
- QT5.5入门与项目实战
- 基于FFmpeg4.0.2的AAC编码器
- mp4_play.zip
- 使用Qt编写的视频监控系统支持Qt4-Q
- Qt 多线程连接数据库——数据库
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 串口调试助手 Qt5版源码
- Qt5的多线程小程序,实现按钮开关线
- Ubuntu16.04中配置Qt5.9.1和OpenCV3.4.0过程
- Qt pdf poppler
- 基于Qt5的串口调试助手
- Qt类关系图
- PyQt5编写的大数据应用-高速公路违章
- QT5.9.0实现的QWidget版富文本编辑器
- Qt5版NeHe OpenGL教程6-10
- QT5下实现基于TCP发送和接接收文件
- PyQt5_gpl-5.11.3.zip
- qtribbon可用
- qt5串口简单实现图片、pdf文件的传输
- qt5.8实现rtsp流播放
- QT5检测USB设备
- Qt5.5 开发 Creo3.0 案例
-
Qt5.8 QMediaPla
yer 音乐播放器 - qt5之学生管理系统
- qt5-qtwebkit-5.6.2-1.el7.x86_64.rpm
- Qt5 for windows plugin dll
- qt5_V4L2_Camera 实现摄像头实时画面显示
- qml模仿实现的qt creator
- Qt5实战项目之
- qt5音乐播放器更新版 源码
评论
共有 条评论