首页
社区
课程
招聘
[求助]提前处理“安全删除U盘”消息
发表于: 2010-1-8 13:50 3475

[求助]提前处理“安全删除U盘”消息

2010-1-8 13:50
3475
比如我打开一个U盘里的文件,这时候再卸载U盘就会提示无法停止通用卷
如果能提前获得这个消息,关闭这个打开的文件,就可以正常卸载了
我试这在预处理消息里面处理,但发现删除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
后来发现这个消息是由系统广播给每个进程的,看来想提前处理也不是在消息里面做了。
不知道大家有什么好的意见没

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//