目的 マウスやキーの入力を記録したい。 背景 昔はこういう目的には SetWindowsHookEx() を使うのが勧められていたように思う。この API は非常に強力で、既存のプロセスに自作の dll を潜り込ませてウィンドウメッセージ hook 用のコールバックを呼ばせることができ、これで全てのウィンドウに送られてくる WM_MOUSEMOVE を監視、といったことができる。 しかしこの API、強力すぎて悪用されまくったそうで、Vista 以降使用が厳しく制限されている。管理者権限、UI Access、デジタル証明など、ありとあらゆる権限を付与しないと機能しなくなっており、もう事実上使えなくなったと言っていい。 (既存プロセスに自作 dll を潜り込ませたい場合、CreateRemoteThread() が今でも使える。未だにこの API が野放しなのは驚きだが、既存の色んな便利ツー
![Raw Input API を使う - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/8428e6379fdff5fc7f3a1ce986083b3944300e42/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UmF3JTIwSW5wdXQlMjBBUEklMjAlRTMlODIlOTIlRTQlQkQlQkYlRTMlODElODYmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWU2OTk5OGQ3MjZkMmU2Zjg4MTY5NGExZWYwYmI1MmI3%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBpX3NhaW50JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0zYWY2ZmJiZWEzMTUwZWMxM2E5YmI0ODBkYzNjMGRiZg%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Dc1de8d60496bc08c2d0098b814fe3a13)