WH_KEYBOARD_LLとユーザー権限#
- Windows APIのフックという機能のひとつに
WH_KEYBOARD_LLがある- 低レベルのキー入力イベントを監視したり奪取したりできる
- 標準権限で起動したアプリには
WH_KEYBOARD_LLで取得できないものがある- 管理者権限で起動したアプリへのキー入力とか
- これのせいで特にロック画面での挙動が厄介になる
- Win+Lで画面をロックすると、ロック画面に遷移してからキーリリースが発生するので、WinとLを離したことがアプリ側に伝わらないみたい
- アプリを管理者権限で実行すれば問題は解決するけど、それはあまりやりたくない
- セキュリティとか信用とかの問題があるので
- ロック画面に遷移したことが分かるなら、そのタイミングでキーを離したことにすれば良いのでは?
画面ロックの検知#
- Windowsでは、ロック画面の出入などのタイミングでウインドウにメッセージを送ってもらうようにすることができる
wtsapi32.hで宣言されているWTSRegisterSessionNotification(hWnd, NOTIFY_FOR_THIS_SESSION)で登録WTSUnRegisterSessionNotification(hWnd)で解除
- すると、“セッション状態の変更”のさいに
WM_WTSSESSION_CHANGEメッセージが来るようになる- 画面がロックされたときは
wParamがWTS_SESSION_LOCKになる
- 画面がロックされたときは