win32 捕獲鎖屏消息

參考:

https://docs.microsoft.com/en-us/windows/win32/termserv/wm-wtssession-change

https://docs.microsoft.com/en-us/windows/win32/api/wtsapi32/nf-wtsapi32-wtsregistersessionnotification

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章