人のマウスとキーボードを監視するアプリケーションを書いています。キーボードまたはマウスを 1 分間使用していない場合は、[マウスまたはキーボードを 1 分間使用していません] というメッセージと [OK] ボタンがポップアップ表示されます。
Javaでこれを行うにはどうすればよいですか?
少しのC/C ++コードが必要で、SetWindowsHookEx
この関数を呼び出すと、Windowsイベントにフックしてコピーを受け取ることができます。
この質問には、開始するためのコードが含まれています:WindowsのJNAキーボードフック
これを自分のアプリケーションに対してのみ行いたい場合は、非常に簡単です。単純にリスナーを追加できますToolkit.getDefaultToolkit.addAwtEventListener(..)
。
しかし、システム全体としては残念ですが、Java では実行できません。ただし、JNI を使用することはできます。
Java アプリケーション ウィンドウでのアクティビティのみを監視する場合は簡単です。適切なイベントに登録するだけです。
ただし、OS ですべてのマウスとキーボードのアクティビティを監視するには、プラットフォームに依存する API にフックする必要があり、JNI を使用する必要があります。