參考:
https://docs.microsoft.com/en-us/windows/win32/termserv/wm-wtssession-change
1. 註冊,一般在創建窗口的時候調用註冊,銷燬窗口的時候反註冊。
BOOL
WINAPI
WTSRegisterSessionNotification(
HWND hWnd,
DWORD dwFlags
);
BOOL
WINAPI
WTSUnRegisterSessionNotification(
HWND hWnd
);
2.在消息循環中添加對WM_WTSSESSION_CHANGE消息的處理.
我是這樣用的:
LRESULT Demo::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
WTSRegisterSessionNotification(hWnd, NOTIFY_FOR_THIS_SESSION);
}
break;
case WM_DESTROY:
{
WTSUnRegisterSessionNotification(hWnd);
}
break;
case WM_WTSSESSION_CHANGE:
{
switch (wParam)
{
case WTS_SESSION_LOCK:
{
//鎖屏
}
break;
case WTS_SESSION_UNLOCK:
{
//解鎖
}
break;
default:
break;
}
}
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}