向前辈们学习.......同时再次问一个有点奇怪的问题~~嘿嘿,别笑我~~~

jwybobo2007 2007-11-04 08:00:01
我要做一个监视U盘插入拔出的提示功能的DLL中,听说可以通过捕获WM_DEVICECHANGE
这个消息来获知~~~~~

可是我不知道怎么在我的DLL中捕获这个消息~~郁闷~~ 特来向各位达人请教......


不吝赐教.
...全文
171 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Antheus 2010-06-28
  • 打赏
  • 举报
回复
楼主真是没公德啊
很多人回答的那么好,竟然一分都不给人家。
jwybobo2007 2007-11-05
  • 打赏
  • 举报
回复
发现问题了,少了头文件~~~~晕死,dbt.h



可是我想做一个标准MFC DLL用来捕获这个消息,不过一直都没成功,不知道该怎么办.
龙凤呈祥焱 2007-11-05
  • 打赏
  • 举报
回复
头文件版本问题.
你的开发环境是多少版本的?
jwybobo2007 2007-11-05
  • 打赏
  • 举报
回复
我晕啊~~~

WM_DEVICECHANGE消息和与之对应的
afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData ) 函数,这个函数在CWnd基类中有定义,但在ClassWizard中没有罗列出来。解决办法是:

1.在类声明处添加成员函数
protected:
afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );

2.在相应的cpp文件中加入BOOL OnDeviceChange(UINT, DWORD)的函数体;
BOOL CXXXXX::OnDeviceChange( UINT nEventType, DWORD dwData )
{
if(nEventType == DBT_DEVICEARRIVAL)
MessageBox("CD arrival","Note",MB_OK+MB_ICONINFORMATION);
return TRUE;

}


3.在消息映射宏中加入
BEGIN_MESSAGE_MAP(CXXXXXX, CDialog)
//{{AFX_MSG_MAP(CTest031Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_WM_DEVICECHANGE() //注意:一定要将这句加在两个AFX_MSG_MAP外
END_MESSAGE_MAP()




这个是我看到的使用方法,结果调试的时候,
error C2065: 'DBT_DEVICEARRIVAL' : undeclared identifier

说我这个没有定义~~~~搞不懂~~~~~
还有是不是这样判断的?
ke2007lin 2007-11-05
  • 打赏
  • 举报
回复
创建一个进程(窗口或者systemtray)都可以
VcPhi 2007-11-05
  • 打赏
  • 举报
回复
和普通窗体一样的
jwybobo2007 2007-11-05
  • 打赏
  • 举报
回复
我发现一个问题,好象用WM_DEVICECHANGE消息来判断U盘插入的时候用了DBT_DEVICEARRIVAL来判断,但U盘插入会提示,光驱里面放光盘也会提示~软盘没试过,不知道会不会也提示~~~



我只想要U盘.或者移动硬盘插入有提示,其它不需要,该怎么处理呢?
小鱼他爸 2007-11-04
  • 打赏
  • 举报
回复
有专门的监控软件,你可以参考一下它,不过没有源代码,了解一下它的流程也行啊。
jwybobo2007 2007-11-04
  • 打赏
  • 举报
回复
晕.谢谢.不过还是不明白,能说更详细点吗?或者有个DEMO 贴上一点研究下
WingForce 2007-11-04
  • 打赏
  • 举报
回复
和在普通的窗体程序中捕获没什么区别
最简单的办法,创建一个看不见的窗体,利用它去捕捉WM_DEVICECHANGE
oo_v_oo 2007-11-04
  • 打赏
  • 举报
回复
关注,帮顶

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧