VC实现自动监测光驱状态的改变(2)
//当一个设备变得被移走并变得不可用时,
//系统会发送广播事件DBT_ DEVICEREMOVECOMPLETE
case DBT_DEVICEREMOVECOMPLETE:
// 判断CDROM碟片是否从光驱中移走
if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME) {
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
if (lpdbv -> dbcv_flags & DBTF_MEDIA)
{
//显示消息,获取光驱的逻辑驱动器号
wsprintf (szMsg, "驱动器 %c: 已经弹出
",chFirstDriveFromMask(lpdbv ->dbcv_unitmask));
MessageBox (hwnd, szMsg, "光驱自动监测", MB_OK| MB_ICONINFORMATION);
}
}
break;
}
//处理其他Windows消息
case WM_COMMAND:
int wmId, wmEvent;
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDOK:
EndDialog(hwnd, 0);
break;
}
default:
fRet = FALSE;
break;
}
// 禁止光驱的AutoPlay功能
static UINT uMsgQueryCancelAutoPlay=RegisterWindowMessage("QueryCancelAutoPlay");
if (uMsg==uMsgQueryCancelAutoPlay)
{
int n = MessageBox(hwnd, "你想禁止AutoPlay功能吗?", NULL,MB_YESNO | MB_ICONQUESTION);
// 1代表取消 AutoPlay
// 0 t代表允许AutoPlay
SetDlgMsgResult(hwnd, uMsg, (n == IDYES) ? 1 : 0);
fRet = (n == IDYES) ? 1 : 0;
}
return(fRet);
}
第三个函数非常简单,产生一个模式对话框。代码如下:
int APIENTRY WinMain
(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
//从对话框模版资源中创建一个模式对话框
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL, DlgProc);
return 0;
}
- 上一篇:用VC++建立Service服务应用程序
- 下一篇:VC++制作QQ自动登陆软件