捕获系统关机和重启消息

通过捕获系统消息就可以区分系统关机和重启了。
一般来说用WndProc 函数中,添加对 WM_QUERYENDSESSION 消息的处理。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    
switch (message){        
case WM_QUERYENDSESSION:            
if (lParam == ENDSESSION_LOGOFF || lParam == ENDSESSION_CLOSEAPP){// 系统正在关机或注销用户
                // 处理关机逻辑
            }
else if (lParam == ENDSESSION_CRITICAL){  // 系统正在重启
                // 处理重启逻辑
            }            
// 根据需要处理其他可能的情况
            break;            
        // 其他消息处理...
    }
}

然后根据 lParam 参数的值来判断系统的操作类型。其中,ENDSESSION_LOGOFF 表示用户注销操作,ENDSESSION_CLOSEAPP 表示系统关闭应用程序,而 ENDSESSION_CRITICAL 表示系统即将重启。这样就可以对VC++ 的窗口应用程序进行判断了。


打赏

0 评论

发表评论