You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下MFC应用如何捕获切换登录用户会话事件

MFC捕获Windows切换用户事件的解决方案

Windows切换用户属于终端服务会话切换事件,WM_QUERYENDSESSION仅覆盖关机、重启、注销类事件,无法捕获会话切换,你需要通过WM_WTSSESSION_CHANGE消息实现捕获,具体步骤如下:

  • 第一步:添加依赖项
    首先引入头文件和链接依赖库,在你的对话框实现文件顶部添加如下代码:
    #include <wtsapi32.h>
    #pragma comment(lib, "wtsapi32.lib")
    
  • 第二步:注册会话变更通知
    在对话框的OnInitDialog初始化函数中添加注册逻辑,让系统向你的窗口发送会话变更消息:
    BOOL CYourDialog::OnInitDialog()
    {
        CDialogEx::OnInitDialog();
        // 其他原有初始化逻辑
        
        // 注册接收会话切换通知
        WTSRegisterSessionNotification(m_hWnd, NOTIFY_FOR_THIS_SESSION);
        
        return TRUE;
    }
    
  • 第三步:添加消息映射和处理函数声明
    在对话框类的头文件中添加消息处理函数声明:
    afx_msg LRESULT OnWTSSessionChange(WPARAM wParam, LPARAM lParam);
    
    在对话框的消息映射表中添加消息绑定:
    BEGIN_MESSAGE_MAP(CYourDialog, CDialogEx)
        // 其他原有消息映射
        ON_MESSAGE(WM_WTSSESSION_CHANGE, &CYourDialog::OnWTSSessionChange)
    END_MESSAGE_MAP()
    
  • 第四步:实现消息处理函数,判断切换用户事件
    LRESULT CYourDialog::OnWTSSessionChange(WPARAM wParam, LPARAM lParam)
    {
        switch (wParam)
        {
            case WTS_CONSOLE_DISCONNECT:
                // 当前用户被切换到后台,即触发了切换用户操作
                // 此处添加你的业务逻辑
                break;
            case WTS_CONSOLE_CONNECT:
                // 用户切回当前登录会话
                // 此处添加你的业务逻辑
                break;
            // 可选:监听其他会话事件
            // case WTS_SESSION_LOCK: // 会话锁定
            // case WTS_SESSION_UNLOCK: // 会话解锁
            // case WTS_SESSION_LOGOFF: // 用户注销
        }
        return 0;
    }
    
  • 第五步:退出前注销通知
    在对话框的OnDestroy函数中添加注销逻辑,避免资源泄漏:
    void CYourDialog::OnDestroy()
    {
        CDialogEx::OnDestroy();
        // 注销会话通知
        WTSUnRegisterSessionNotification(m_hWnd);
    }
    

注意:如果需要监听所有会话的切换事件而非仅当前用户的会话,可以将WTSRegisterSessionNotification的第二个参数改为NOTIFY_FOR_ALL_SESSIONS。

内容的提问来源于stack exchange,提问作者Karuthedan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:45:01