私は現在、コンピューター上でのユーザー アクションを記録する信頼できる優れた方法を研究しています。WH_CBT
イベントをグローバルにフックするシンプルなアプリを作成しましたが、今のところ問題なく動作しているようです。WH_CBT
アプリケーションが独自のイベント ハンドラーを持ち、CallNextHookEx()
それを処理した後に関数を呼び出さない状況について読んだことがあります。そのシナリオでは、システム全体のフックを使用して、そのアプリケーションのイベントを自分で処理できなくなると思います。
アプリケーションでキーストローク イベントをハイジャックする他の (おそらくもっと良い) 方法はありますか? 次のようなプロセスに DLL を手動で挿入することに関連する可能性があります。
- プロセスを選択します。
- を使用して DLL を注入します
CreateRemoteThreadEx()
。 - DLL はいくつかの winapi 関数をフック (迂回) し、それらからキーストロークやその他のイベントに関する情報を収集します。
その場合、フックGetMessage()
またはTranslateMessage()
関数で十分でしょうか? メッセージ ループを使用するプロセスは、作成されたウィンドウのイベントを処理するためにこれらの関数を使用する必要があるというのは正しいですか?