目的 マウスやキーの入力を記録したい。 背景 昔はこういう目的には SetWindowsHookEx() を使うのが勧められていたように思う。この API は非常に強力で、既存のプロセスに自作の dll を潜り込ませてウィンドウメッセージ hook 用のコールバックを呼ばせることができ、これで全てのウィンドウに送られてくる WM_MOUSEMOVE を監視、といったことができる。 しかしこの API、強力すぎて悪用されまくったそうで、Vista 以降使用が厳しく制限されている。管理者権限、UI Access、デジタル証明など、ありとあらゆる権限を付与しないと機能しなくなっており、もう事実上使えなくなったと言っていい。 (既存プロセスに自作 dll を潜り込ませたい場合、CreateRemoteThread() が今でも使える。未だにこの API が野放しなのは驚きだが、既存の色んな便利ツー