このサンプルではボタンをクリックしてポーリングを開始した後でユーザ入力(キーボード、マウス操作)が10秒間発生しなかったときにメッセージダイアログを表示します。またポーリング毎に前回からユーザ入力が発生していない場合はLabel1に表示しているGetTickCountの表示をclRedに変更しています。
別解としてSetWindowsHookEx(ja)にWH_KEYBOARD_LL(ja)/WH_MOUSE_LL(ja)を指定して低レベルフックをかけ、フック関数内でGetTickCountの値を取得、というものも考えられますが、
- DelphiのIDEから実行するとデバッガでブレークしたときにやたらに時間がかかる。
- Windows XPのVisual Style(Luna)とマウスの低レベルフックの相性が悪く(どちらかというとLunaの不具合)、フォームの最小化、最大化ボタンをクリックしたときに極端に反応が悪くなる。
0 件のコメント:
コメントを投稿