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

 

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