基于MFC的U盘检测

2023-10-27

以下代码可以用于U盘的检测,以及其它的设备变更的消息检测,程序可以运行于后台。

1.新建一个基于对话框的程序,Dlg类的CPP文件中的MESSAGE_MAP中加入:

ON_WM_DEVICECHANGE()

2.Dlg类的头文件DECLARE_MESSAGE_MAP前加入声明:

afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );

3.Dlg类cpp文件中添加函数实现:

BOOL CXXXDlg::OnDeviceChange(UINT nEventType, DWORD dwData)
{
    if( nEventType == DBT_DEVICEARRIVAL )    
    {
        //Do something
        MessageBox("U盘插入!","",NULL);
        
    }
    
    if( nEventType == DBT_DEVICEREMOVECOMPLETE)        
    {
        //Do something
        MessageBox("U盘弹出!","",NULL);
    }
    return TRUE;    
}
CWnd::OnDeviceChange
afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );

参数: 
nEventType 事件类型。有关可能取值的描述参见说明部分。  
dwData 包含了与事件有关的数据的结构的地址。它的含义依赖于给定的事件。
 
说明:
框架调用这个函数以通知应用程序或设备驱动程序,设备或计算机的硬件配置发生了改变。
对于提供了软件控制功能,如弹出和锁定的设备,操作系统通常发送一条DBT_DEVICEREMOVEPENDING消息,以便使应用程序和设备驱动程序停止对设备的使用。
如果操作系统强行清除了一个设备,它可能不会发送DBT_DEVICEQUERYREMOVE消息。
nEvent参数可以是下列值之一:
DBT_DEVICEARRIVAL 已经加入了一个设备,现在可以使用。  
DBT_DEVICEQUERYREMOVE 允许清除被请求的设备。任何应用程序都可以拒绝这个请求并取消清除操作。  
DBT_DEVICEQUERYREMOVEFAILED 清除设备的请求被取消了。  
DBT_DEVICEREMOVEPENDING 设备将要被清除。不能拒绝。  
DBT_DEVICEREMOVECOMPLETE 设备已经被清除。  
DBT_DEVICETYPESPECIFIC 与设备有关的事件。  
DBT_CONFIGCHANGED 当前配置发生了变化。  
DBT_DEVNODES_CHANGED 设备节点发生了变化。
注意
框架调用这个成员函数以允许你的应用程序处理一个Windows消息。传递给你的成员函数的参数反映了接收到消息时框架接收到的参数。如果你调用了这个函数的基类实现,则该实现将使用最初传递给消息的参数(而不是你提供给这个函数的参数)。

【参考】:

http://www.myexception.cn/vc-mfc/1402787.html

http://blog.163.com/wanghuajie@126/blog/static/45231286201021531313467/

http://www.cnblogs.com/over140/archive/2010/05/03/1726263.html

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

基于MFC的U盘检测 的相关文章

  • DirectUI 的真相是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个 Windows 桌面应用程序 它需要一个很棒的 UI 我现在使用Visual Studio和MFC 后来听说DirectU
  • 如何向现有 Win32 C++ 项目添加 MFC 支持?

    我正在创建一个 C 应用程序 它使用 Qt 创建 GUI 但是 我需要使用依赖于 MFC 的第三方库 用于 CString 等 无论如何 是否可以将 MFC 添加到我的应用程序中以允许我使用这个库 或者我需要自己重写它 I saw 这个问题
  • 具有透明背景的CWnd

    我想创建一个基于 CWnd 的类 它将引入具有透明背景的控件 只要内容是静态的 创建一个控件并用透明背景绘制其内容对我来说没什么大不了的 问题是当我想创建一个内容不断变化的控件时 这是因为我不知道如何用父背景删除控件的内容 一般情况下可能不
  • 升级后的 MFC 应用程序看起来仍然很旧

    我有一个用 VC6 编写的 MFC 应用程序 我已将其升级到 VS2015 并且它可以构建并运行 该应用程序是一个主可执行文件 其中包含许多包含对话框的 DLL 然而应用仍然looks就像用 VC6 构建的一样 所有 GUI 组件都没有 W
  • MFC:如何减少OnInitialUpdate()滚动的时间成本?

    我需要打印多行数据 每行都可以进行文本换行 因此高度会有所不同 要进行滚动 我需要导出总高度 由于每条线可能有不同的高度 我只能遍历每条线来累加高度 如下所示 void CMyScrollView OnInitialUpdate for a
  • 使用 CSplitterWnd 在 CChildFrame 中创建多个视图

    我正在使用 MFC MDI 我需要创建如下视图 我的 ChildWnd 分为两部分 它们是LeftView CView 和RightView CScrollView LeftView 分为两部分 TreeView 和 FormView 我怎
  • AfxGetAppName() 返回垃圾字符

    我的应用程序中有以下代码行 CString strAppName AfxGetAppName 有时会充满strAppName出现了垃圾字符 我不明白为什么 有人有主意吗 TIA 如果你改变的话这是可能的m pszAppName手动 在应用程
  • 创建非托管常规 MFC DLL 并从托管 C++ .NET 应用程序调用它时出现问题

    我有几个关于 DLL 的问题 我尝试了很多 但无法获得完整的图片 大多数示例都是用 C 等编写的 使用 VS2005 中的向导 我创建了一个非托管 MFC 常规 DLL 由于剩余代码 必须是 MFC 然后我尝试将其导入 VS2005 管理的
  • 当窗口未最大化时缺少 WM_NCLBUTTONUP 消息的奇怪问题

    我有一个处理 WM NCLBUTTONUP 消息的窗口 以便处理标题栏中自定义按钮的点击 当窗口最大化时 这非常有效 但当窗口未最大化时 WM NCLBUTTONUP 消息永远不会到达 不过我确实收到了 WM NCLBUTTONDOWN 消
  • MFC:如何在一个函数中捕获对话框每个控件的设置焦点

    我有 n 个对话框 它们具有相同的基本对话框 每个对话框都有自己的控件 编辑框 组合框 列表控件 etc 在基本对话框中 如何设置每个控件的焦点消息 例如 给出一个消息框 text Hello I got focus my ID is d
  • 如何调整 CWnd 内 WPF 控件的大小?

    我正在托管 WPFUserControlMFC 内部CWnd 它工作得很好 我现在需要弄清楚如何与其父控件一起调整控件的大小 我已经迷上了OnSize我正在打电话GetWindowRect并将结果设置为我的控件 如下所示 void CChi
  • 如何将命名管道字符串从非托管代码空间发送到托管代码空间?

    我似乎遇到了命名管道 101 问题 我有一个非常简单的设置来连接从 C 非托管应用程序传输到 C 托管应用程序的单工命名管道 管道已连接 但我无法通过管道发送 消息 除非我关闭似乎刷新缓冲区并传递消息的句柄 就好像消息被屏蔽了一样 我尝试颠
  • 错误 C2248: 'CObject::CObject' : 无法访问类 'CObject' afxwin.h 中声明的私有成员

    我试图让班级负责在灰色背景上放置一些文本 Score h pragma once class Score public Score Score void UpdateScore int points void UpdateLives int
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 具有键唯一性和按位置排序的 MFC 字典集合

    看着表上http msdn microsoft com en us library y1z022s1 28v vs 80 29 aspx core collection shape features http msdn microsoft
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str
  • CComboBox DDX_CBString 行为令人困惑

    我在对话框中使用 ComboBox 控件为用户提供一些有用的值 例如 10 20 100 400 800 但让用户根据需要插入准确的值 经过很长时间我发现 如果我输入值40在 Combobox 中 Combobox 始终在 UpdataDa
  • 如何中止使用 wininet 发送的请求?

    我有一个 MFC 应用程序 用于向相应的服务器发送 post 请求 这是一个http请求 用于上传文件 但有要求中止发送的请求 就像用户正在发送一个大文件一样 用户应该能够在请求完成之前取消请求 我正在使用 wininet api Http
  • MFC CImage alpha 混合出错

    我必须在图片控件上呈现由两个 PNG 文件组成的图像 其中顶部图像在某些位置具有透明像素 结果应该是plotter png 与 bar png 顶部重叠显示为 注意条上奇怪的白色轮廓 但应该是 我为它编写的代码很简单 CImage imag
  • 使用什么 API 在现有 MFC 应用程序中添加 HTTP 客户端支持?

    我最近接到一项任务 要添加与以下内容交互的能力网络地图服务 http en wikipedia org wiki Web Map Service到现有的 MFC 应用程序 我需要客户端 HTTP API 根据我的研究 领先的候选人似乎是CA

随机推荐

  • ald计算机应用,ALD 文件扩展名: 它是什么以及如何打开它?

    ALD 疑难解答 打开 ALD 文件的问题 Microsoft Dynamics AX 未安装 双击你的 ALD 文件会提示消息 os 无法打开 ALD 文件 如果是这样 这通常意味着你没有为 os 安装 Microsoft Dynamic
  • 资讯汇总230330

    230330 21 50 农业农村部部署防御大风降温雨雪天气工作 农业农村部网站消息 据中国气象局预计 3月30日夜间至4月5日 较强冷空气将自西向东影响我国 新疆北部 内蒙古中东部最低气温降至 12 3 甘肃 山西 陕西部分山区气温降至0
  • pytdx 获取板块指数_是否可以获得板块指数8806XX成分股?

    这些就是 数据文件中有 hq cache tdxzsbase cfg 我从通达信金融终端行情软件中 Level 2版 华泰证券的免费的券商版也可以看到 8806xx的板块名称和8804xx的有重复的 但是成分股不一样 yutiansut 油
  • LightPicture精致图床PHP系统源码+功能强大

    正文 高性能 精致 扁平化 多样化储存式的企业化图床程序 支持第三方云储存 本地 阿里云 OSS 腾讯云 COS 七牛云 支持多桶储存 可同时添加多个对象存储桶管理 多图上传 拖拽上传 粘贴上传 上传预览 全屏预览 一键复制图片外链 多用户
  • Bootstrap Select使用

    阅读目录 一 组件开源地址以及API说明 二 组件效果示例 三 使用示例 1 基础示例 2 其他效果示例 3 组件取值赋值 4 组件其他用法 5 组件封装 四 源码下载 五 总结 正文 前言 之前分享过两篇bootstrap下拉框的组件 J
  • 测试篇(一):需求、BUG、测试用例、开发模型和测试模型、配置管理和软件测试

    目录 一 什么是需求 1 1 需求的概念 1 2 用户需求 1 3 软件需求 二 什么是测试用例 2 1 测试用例的概念 三 什么是BUG 3 1 BUG 软件错误 的概念 四 开发模型 4 1 软件生命周期 4 2 瀑布模型 4 3 螺旋
  • 【前端】CSS垂直居中的7种方法

    文章目录 line height 绝对定位 margin auto flex 绝对定位 margin 负值 定位 transform vertical align middle display table cell 思维导图 前文 前端 C
  • Unity使用拓展方法设置和获取Transfrom信息

    在项目开发中经常需要保存场景中物体的旋转 位置 大小 为了每次保存成统一的格式方便复用 给Transfrom加入设置和获取的拓展方法 关于拓展方法的可以推荐 拓展方法 这篇文章 下面是改功能的实现 using System using Sy
  • “射同余异”或“射同基反”?揭秘三端式正弦波振荡器

    射同余异 或 射同基反 揭秘三端式LC正弦波振荡器 一 我们都知道rc文氏桥振荡器属于低频振荡器 产生的正弦波频率极限为1Mhz 要产生1Mhz以上的震荡频率我们可以采用LC正弦波振荡器 因此我们自然会想到由变压器耦合式的振荡器如图 该振荡
  • Vant 2 - 移动端 Vue 组件库 _ 问题记录

    目录 基础组件 Popup 弹出层 表单组件 DatetimePicker 时间选择 Field 输入框 Form 表单 Picker 选择器 Radio 单选框 Uploader 文件上传 展示组件 List 列表 导航组件 Tab 标签
  • Field

    Field f Counter class getField count 拿到Counter类的count 实例域 Counter c new Counter 一个Counter对象实例 Long l Long f get c 拿到对象实例
  • Windows系统安装Java开发环境配置

    一 下载Java Development Kit JDK JDK 是一个用于开发和测试 Java 编程语言编写的程序的软件开发环境 它包括在 Windows macOS 或 Linux 平台上构建 运行和调试应用所必需的工具和资源 下载地址
  • 03_ES6

    ES6 在js中进行操作 使用var声明变量的弊端 var 声明的变量有预解析 造成逻辑混乱 可以先使 后声明 undefined var 可以重复定义同 个变量 第二个会修改变量的值 var 在 for 循环条件中 造成 for 循环的污
  • linux coreutils升级,Linux命令

    1 Output of entire files cat tac nl od base64 2 Formatting file contents fmt pr fold 3 Output of parts of files head tai
  • 华为2018秋招编程题1:求连续最长数字串及长度

    在字符串中找出连续最长的数字串 输入内容 输入字符串 输出内容 连续最长的数字串 及长度 规则 如果输入字符串是空或者没有数字串 也应该返回空字符串 若有两最长的数字串 返回最后一个 例如 输入 8789ajdsc8456511123 输出
  • 恒玄BES调试笔记-BES2500蓝牙相关参数设定

    常见的一些参数配置在app ibrt customif ui cpp中 比如双耳使用相同地址 是否根据rssi信号切换主从 主从回连周期 超距回连等等基本设定 services app ibrt src app ibrt customif
  • sentinel整合apollo配置中心

    上篇文章大致讲解了sentinel的部署和一些基本概念以及使用 不清楚的同学建议先学习前一篇文章 传送门 https blog csdn net qq 22624361 article details 90258222 这篇文章主要讲解se
  • Android Selector 的使用

    什么是 Selector Selector 和 Shape 相似 是Drawable资源的一种 可以根据不同的状态 设置不同的图片效果 关键节点 lt selector gt 例如 我们只需要将Button的 background 属性设置
  • Vue校验时报Cannot read property ‘validate’ of undefined错误

    Error in v on handler TypeError Cannot read properties of undefined reading validate 解决 1 传值的时候 要带引号
  • 基于MFC的U盘检测

    以下代码可以用于U盘的检测 以及其它的设备变更的消息检测 程序可以运行于后台 1 新建一个基于对话框的程序 Dlg类的CPP文件中的MESSAGE MAP中加入 ON WM DEVICECHANGE 2 Dlg类的头文件DECLARE ME