-
-
[求助]提前处理“安全删除U盘”消息
-
发表于: 2010-1-8 13:50 3475
-
比如我打开一个U盘里的文件,这时候再卸载U盘就会提示无法停止通用卷
如果能提前获得这个消息,关闭这个打开的文件,就可以正常卸载了
我试这在预处理消息里面处理,但发现删除U盘的时候根本不会处理这个
看了下MSDN,WM_DEVICECHANGE事件里面的几个UINT nEventType
我在程序里面处理OnDeviceChange,但只能获得DBT_DEVICEARRIVAL和DBT_DEVICEREMOVECOMPLETE
后来发现这个消息是由系统广播给每个进程的,看来想提前处理也不是在消息里面做了。
不知道大家有什么好的意见没
如果能提前获得这个消息,关闭这个打开的文件,就可以正常卸载了
我试这在预处理消息里面处理,但发现删除U盘的时候根本不会处理这个
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg) { // 预处理拔出U盘 if (pMsg->message == WM_DEVICECHANGE && pMsg->wParam == DBT_DEVICEREMOVECOMPLETE) { AfxMessageBox(L"即将拔出U盘\n请关闭正在操作的U盘文件"); return TRUE; } return CDialog::PreTranslateMessage(pMsg); }
看了下MSDN,WM_DEVICECHANGE事件里面的几个UINT nEventType
DBT_DEVICEARRIVAL A device has been inserted and is now available.
DBT_DEVICEQUERYREMOVE Permission to remove a device is requested. Any application can deny this request and cancel the removal.
DBT_DEVICEQUERYREMOVEFAILED Request to remove a device has been canceled.
DBT_DEVICEREMOVEPENDING Device is about to be removed. Cannot be denied.
DBT_DEVICEREMOVECOMPLETE Device has been removed.
DBT_DEVICETYPESPECIFIC Device-specific event.
DBT_CONFIGCHANGED Current configuration has changed.
我在程序里面处理OnDeviceChange,但只能获得DBT_DEVICEARRIVAL和DBT_DEVICEREMOVECOMPLETE
后来发现这个消息是由系统广播给每个进程的,看来想提前处理也不是在消息里面做了。
不知道大家有什么好的意见没
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
- [求助]如何调试“安全删除U盘” 4235
- [求助]提前处理“安全删除U盘”消息 3476
- 如何隐藏磁盘 7666
- [求助]驱动中删除符号链接但没删除设备,如何处理 7420
- [求助]VMP的壳如何脱? 2279
看原图
赞赏
雪币:
留言: