qt启动后检测u盘插入和拔掉

2023-11-02

工作中,需要检测u盘的插入和拔掉。其余逻辑可以简化。
查了半天,感谢@q62290798

链接在
https://blog.csdn.net/q62290798/article/details/115869367?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1-115869367-blog-100083606.pc_relevant_3mothn_strategy_and_data_recovery&spm=1001.2101.3001.4242.2&utm_relevant_index=4

总结下
1,派生自QAbstractNativeEventFilter类
2,重写nativeEventFilter,通过WM_DEVICECHANGE,DBT_DEVICEARRIVAL,DBT_DEVICEREMOVECOMPLETE判断是否u盘插入和拔出。
3,在main()函数注册

废话不多说,贴代码如下
#pragma once

#include <QtWidgets/QMainWindow>
#include “ui_USBDisck.h”
#include
#include <Windows.h>
#include <Dbt.h>
#include <qdir.h>
#include <qdesktopwidget.h>
#include <qprocess.h>
#include <qcheckbox.h>
#include <qabstractnativeeventfilter.h>

class USBDisck : public QMainWindow, public QAbstractNativeEventFilter
{
Q_OBJECT

public:
USBDisck(QWidget *parent = Q_NULLPTR);

private:
Ui::USBDisckClass ui;

private:
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);

};

#include “USBDisck.h”
#include
#include <QtCore/QCoreapplication.h>

USBDisck::USBDisck(QWidget *parent)
QMainWindow(parent)
{
ui.setupUi(this);
}

bool USBDisck::nativeEventFilter(const QByteArray & eventType, void * message, long * result)
{
MSG* msg = reinterpret_cast<MSG*> (message);
int msgType = msg->message;
if (msgType == WM_DEVICECHANGE)
{
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)msg->lParam;
switch (msg->wParam)
{
case DBT_DEVICEARRIVAL:
{
qDebug() << “usb arrived!”;
}
break;

	case DBT_DEVICEREMOVECOMPLETE:
	{
		qDebug() << "Remove usb";
	}
	break;
	default:
		break;
	}
}
return false;

}

#include “USBDisck.h”
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
USBDisck w;
w.show();
a.installNativeEventFilter(&w);
return a.exec();
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt启动后检测u盘插入和拔掉 的相关文章

随机推荐

  • Python--读写CSV文档

    CSV是英文Comma Separate Values 逗号分隔值 的缩写 顾名思义 文档的内容是由 分隔的一列列的数据构成的 CSV文档是一种编辑方便 可视化效果极佳的数据存储方式 而Python中有着非常强大的库可以处理这种文档 所以
  • 计算机文件丢失系统无法启动,文件损坏或丢失windows无法启动_windows无法启动文件损坏解决方法...

    由于文件损坏或丢失造成windows无法启动 出现这种情况一般是非正常关机或者是病毒破坏或者是加载了你安装的其它软件的文件出问题 一般人就直接重新装系统去解决 但是有些电脑上有重要的数据和程序不能直接去重新安装系统 那么就需要不同的问题处理
  • 简单描述下微信小程序的目录结构

    微信小程序的目录结构通常包括以下主要部分 这是一个典型的微信小程序的目录结构 具体项目可能会有一些变化 但通常都包含类似的核心文件和文件夹 小程序开发者需要按照这个结构组织项目代码和资源 app js 小程序的主入口文件 用于定义小程序的全
  • 使用线性回归构建波士顿房价预测模型

    使用线性回归构建波士顿房价预测模型 描述 波士顿房价数据集统计了波士顿地区506套房屋的特征以及它们的成交价格 这些特征包括周边犯罪率 房间数量 房屋是否靠河 交通便利性 空气质量 房产税率 社区师生比例 即教育水平 周边低收入人口比例等
  • 机器学习实战—支持向量机

    文章目录 一 简介 1 1 定义 二 线性SVM分类 2 1 简介 2 2 软间隔分类 2 3 初步使用Sk learn接口 三 非线性SVM分类 3 1 简介 3 2 scikit learn实现 3 3 多项式核 解决非线性问题技术一
  • simulink的相关东西

    1 Random Integer Generator M ary 表示 产生的值在0到M 1之间 Sample time 当仿真时间设置为t时 产生的数据量为t sample time samples per frame 以帧为单位输出时
  • 解决虚拟机或物理机ping不通网关故障的方法与思路

    基本思路 确定问题缩小范围 先外部后内部 利用排除法 类比法 替换法 隔离法 将故障范围逐渐缩小到某一点 谨慎做出结论 下结论前先三思 想到所有可能存在问题的点 特别是与别人讨论和描述问题时更应该注意 记录问题 做好文档备案工作 如记录故障
  • vc6中使用com组件

    计算机世界报 第47期 D20 随着Internet和Intranet应用的飞速发展 COM Component Object Model 组件对象模型 以其巨大的潜力渗透到软件学科的各个领域 在Windows操作平台下 众多以COM形式提
  • python之pandas数据导入

    pandas数据导入 学习python最好的学习方法就是带着自己的工作需求或者目标去学习 pandas库不多介绍 先放一些最基础的内容帮助学习 pandas导入 导出数据是非常方便的 可以快速的导入现在常见的excel csv txt 以下
  • JSP之Cookie实现购物车

    1 设置cookie 设置cookie Cookie cookie new Cookie TOM 111 设置有效期 默认秒为单位 cookie setMaxAge 7 24 60 60 添加cookie到客户端 response addC
  • php免杀教程【绝对原创】

    这个绝对原创 首发 个人认为免杀大致分为这几个方面 1 关键字拆分 比如assert 可以写成 a ss e r t 这样 2 可变变量 引用 可变函数 可变变量 比如 a POST x b a eval b 引用 比如 a POST x
  • 吴恩达深度学习课程编程作业(1-2)

    Part 1 Python Basics with Numpy optional assignment 1 Building basic functions with numpy Numpy is the main package for
  • VMware安装Ubuntu18.04

    如下图所示 点击红框部分 创建虚拟机 如下所示 选择自定义 点击下一步 继续下一步 如下所示 红框部分选择Ubuntu18 04的系统镜像 点击下一步 如下所示 填写用户名和密码 点击下一步 自定义修改虚拟机名称和安装位置 或者默认安装 点
  • 使用alibaba的组件sentinel时,测试sentinel dashboard的实时监控功能,在不断刷新页面后,实时监控的图表不显示?

    问题 我是使用的虚拟机开启的sentinel dashboard 虚拟机中的sentinel dashboard一直在运行 nacos也是启动了的 看了一下虚拟机中的sentinel dashboard 发现出现报错信息 提示我连接超时 解
  • MATLAB 基础与通信系统仿真

    文章目录 第 1 章 MATLAB 基础与通信系统仿真 1 1 MATLAB 简介 1 1 1 MATLAB 的起源 1 1 2MATLAB 的特点 1 2 MATLAB 程序设计 1 2 1 MATLAB 工作环境 1 2 2 MATLA
  • Pytorch框架实战——102类花卉分类

    本篇博文为 唐宇迪 计算机视觉实训营第二天 Pytorch框架实战课程的个人笔记 代码来自 qiuzitao深度学习之PyTorch实战 十 与视频教学流程记录一致 课程详情可参考该篇 下文数据集及对应json文件 链接 https pan
  • 人工智能入门路径

    人工智能是一门涵盖广泛 知识面深 应用广泛的技术领域 那么通往人工智能的路径是什么呢 以下是一些入门人工智能的步骤和资源 学习基础数学和编程知识 人工智能涉及到许多数学和计算机科学的基础知识 如线性代数 微积分 概率论 数据结构和算法等 因
  • [人工智能-深度学习-69]:数据集 - 目标检测常见公开数据集之PASCAL VOC

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122165644 目录 前言 第1章
  • 教妹学Java(十八):break 关键字详解

    你好呀 我是沉默王二 一枚颜值与才华俱在的程序员 本篇教程通过我和三妹对话的形式来谈一谈 Java 中的 break 关键字 教妹学 Java 没见过这么又去的标题吧 语不惊人死不休 没错 标题就是这么酷炫 毕竟面向对象编程 专栏现在定价只
  • qt启动后检测u盘插入和拔掉

    工作中 需要检测u盘的插入和拔掉 其余逻辑可以简化 查了半天 感谢 q62290798 链接在 https blog csdn net q62290798 article details 115869367 utm medium distr