我用WtsApi32.lib实现Session方面的编程
WTSRegisterSessionNotification(m_hWnd, NOTIFY_FOR_ALL_SESSIONS);
WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_WTSSESSION_CHANGE:
{
switch(wParam)
{
case WTS_SESSION_LOCK:
MessageBox( "WTS_SESSION_LOCK ", "Esmile ", MB_OK );
break;
case WTS_SESSION_UNLOCK:
MessageBox( "WTS_SESSION_UNLOCK ", "Esmile ", MB_OK );
break;
}
}
break;
case WM_DESTROY:
WTSUnRegisterSessionNotification(m_hWnd);
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
测试步骤如下:我有两个用户
1.我的程序在用户A中启动,
2。在开始中点击切换用户,进入到用户选择界面
3。进入用户B
4。再从B用户切换用户进入用户选择界面
5。最后进入用户A
发现WTS_SESSION_LOCK和WTS_SESSION_UNLOCK消息各截获两次,分别是两次切换用户和两次进入用户的消息。那么怎么区分我进入不同的用户呢?又怎么知道从用户B中切出去呢?我试了其它的消息没有成功!
WTSRegisterSessionNotification(m_hWnd, NOTIFY_FOR_ALL_SESSIONS);
WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_WTSSESSION_CHANGE:
{
switch(wParam)
{
case WTS_SESSION_LOCK:
MessageBox( "WTS_SESSION_LOCK ", "Esmile ", MB_OK );
break;
case WTS_SESSION_UNLOCK:
MessageBox( "WTS_SESSION_UNLOCK ", "Esmile ", MB_OK );
break;
}
}
break;
case WM_DESTROY:
WTSUnRegisterSessionNotification(m_hWnd);
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
测试步骤如下:我有两个用户
1.我的程序在用户A中启动,
2。在开始中点击切换用户,进入到用户选择界面
3。进入用户B
4。再从B用户切换用户进入用户选择界面
5。最后进入用户A
发现WTS_SESSION_LOCK和WTS_SESSION_UNLOCK消息各截获两次,分别是两次切换用户和两次进入用户的消息。那么怎么区分我进入不同的用户呢?又怎么知道从用户B中切出去呢?我试了其它的消息没有成功!
本文介绍了如何利用WtsApi32.lib库进行Session相关的编程,通过注册`WTSRegisterSessionNotification`来监听WM_WTSSESSION_CHANGE消息。在测试过程中,当在不同用户间切换时,程序接收到`WTS_SESSION_LOCK`和`WTS_SESSION_UNLOCK`消息,但无法准确判断用户切换的具体情况。问题在于如何区分不同用户的切换和进入事件。
2万+

被折叠的 条评论
为什么被折叠?



