【框架-MFC】系统登陆、‘远程控制切换用户消息 WM_WTSSESSION_CHANGE

1、头文件与静态 动态库

#include "Wtsapi32.h"
#pragma comment(lib, "Wtsapi32.lib")

Wtsapi32.DLL

2、注册(初始化时)

WTSRegisterSessionNotification(m_hWnd, NOTIFY_FOR_ALL_SESSIONS);

WTSRegisterSessionNotification(m_hWnd, NOTIFY_FOR_THIS_SESSIONS);

3、卸载(退出时)

WTSUnRegisterSessionNotification(m_hWnd);

4、消息

BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)
ON_MESSAGE(WM_WTSSESSION_CHANGE, OnSessionChange)
END_MESSAGE_MAP()

5、声明

afx_msg LRESULT OnSessionChange(WPARAM wParam, LPARAM lParam);

6、实现

LRESULT CXXXDlg::OnSessionChange(WPARAM wParam, LPARAM lParam)
{
PWTSSESSION_NOTIFICATION nSessionNotification = (PWTSSESSION_NOTIFICATION)lParam;
LPWSTR * lpUserName = NULL;
DWORD cbReturned = 0; 
if (nSessionNotification!=NULL)
{
WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,nSessionNotification->dwSessionId,WTSUserName,lpUserName,&cbReturned);
AfxMessageBox(CString(*lpUserName),  MB_OK );
}

switch(wParam)
{
case WTS_CONSOLE_CONNECT:
AfxMessageBox(L"控制台登陆", MB_OK );
break;
case WTS_CONSOLE_DISCONNECT:
AfxMessageBox(L"控制台退出", MB_OK );
break;
case WTS_REMOTE_CONNECT:
AfxMessageBox(L"远程连接", MB_OK );
break;
case WTS_REMOTE_DISCONNECT:
AfxMessageBox(L"断开远程连接", MB_OK );
break;
case WTS_SESSION_LOGON:
AfxMessageBox(L"用户登陆",  MB_OK );
break;
case WTS_SESSION_LOGOFF:
AfxMessageBox(L"用户退出", MB_OK );
break;
case WTS_SESSION_LOCK:
AfxMessageBox(L"用户锁屏(WIN + L)", MB_OK );
break;
case WTS_SESSION_UNLOCK:
AfxMessageBox(L"用户解锁", MB_OK );
break;
case WTS_SESSION_REMOTE_CONTROL:
AfxMessageBox(L"远程控制", MB_OK );
break;

default:
break;
}
return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值