环境VC6.0 MFC
某些时候我们需要在系统关机的时候进行相应的处理。
在某个窗口添加窗口过程函数
LRESULT CMyDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if ( message == WM_ENDSESSION ) //Windows关机消息
{
//相应的处理代码
}
return CNewDialog::WindowProc(message, wParam, lParam);
}
http://www.cnblogs.com/pbreak/archive/2010/10/20/1856492.html
//下面是对话框工程 响应消息中自动添加的过程函数
LRESULT CProjectorControllerDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
switch (message)
{
case WM_QUERYENDSESSION:
/*如果要注销或关闭系统返回 1 否则返回 0
不管WM_QUERYENDSESSION最后的结果是可以顺利结束或不能顺利结束,Windows会再送
一个WM_ENDSESSION的信息给所有的Process,而wParam的内容便是指出是否可以顺利结束*/
//wchar_t tmp[10];
//wsprintf(tmp,L"wParam = 0x%x lParam = 0x%x",wParam,lParam);
if(lParam == 0){
::MessageBox(0,L"收到关机或重启消息",L"关机",MB_OK);
}
else//lParam == 0x80000000
::MessageBox(0,L"收到注销消息………………………………",L"0x80000000",MB_OK);
return 0; //无论返回什么值,都不能实现阻止关机的功能,但SDK方式可以阻止关机,WHY?
case WM_ENDSESSION:
return 0; //无论返回什么值,都不能实现阻止关机的功能
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
VC SDK方式截获windows关机消息,拦截消息后可控制是否继续关机-
http://www.verysource.com/20070731getshutdown_-download-108496.html
VC6 MFC方式截获windows关机消息,但拦截消息后不能控制是否继续关机 -
http://www.verysource.com/20070801getshutdown_-download-119005.html