我们平时会遇到要知道是否有存储设备的插入的情况,以下提供两种方法:
第一种方法:
在MFC中为开口添加WindowProc消息相应函数,例如:
LRESULT CMyDlgDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DEVICECHANGE:
char t;
for(t='c';t<'z';t++)
{
CString str;
str.Format(_T("%c"),t);
str+=":\\";
if(GetDriveType(str)==DRIVE_REMOVABLE)
{
AfxMessageBox(_T("U盘插入或拔出!"));
}
}
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
这种方法不够精确,因为插入和拔出都会同时
第二种方法:
可以通过ACtivex控件(Microsoft SysInfo Control)来获知有存储设备插入。
现在窗口中添加一个Microsoft SysInfo Control的对象,然后添加DeviceArrival消息函数
例如:
void CMyDlgDlg::OnDeviceArrivalSysinfo1(long DeviceType, long DeviceID, LPCTSTR DeviceName, long DeviceData)
{
AfxMessageBox(_T("U盘插入!"));
//在此可以添加对存储设备的操作。
}
这种方法比较实用。