vc++ 技术如何区分系统关机和重启消息

新手上路,请多包涵

如何区分系统关机还是重启

阅读 4.2k
1 个回答

通过捕获系统消息就可以区分系统关机和重启了。
一般来说用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++ 的窗口应用程序进行判断了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进