アプリにフォーカスがないJavaのイベントリスナー?(グローバルキー押下検出)
-
03-07-2019 - |
質問
しばらく探していましたが、Java だけを使ってこれは不可能だと誰もが考えているようですので、SO を試してみます ;)
別の無関係なアプリケーションがウィンドウ フォーカスを持っているときに、私の Java アプリケーションがイベント (特に主要なイベント) をリッスンする方法はありますか?私の状況では、Java アプリケーションにフォーカスがないにもかかわらず、ユーザーがキーボードの「一時停止」キーを押したことを検出しようとしています。
唯一の方法は、C コードを記述して JNI を使用することだと言っている人もいます。誰かがそれを回避する方法を知っているかどうか知りたいですか?そうでない場合は、少なくとも c/JNI に関する非常に優れたチュートリアルはありますか?
ありがとう
解決
それはできないと私は理解しています。基本レベルでは、JVM は受信した O/S イベントに対してのみイベントを生成し、フォーカスがある場合にのみ O/S 入力イベントを受信します。
きっとあなたは できた JNI を使用して O/S をトリガーし、すべての入力に対してイベントを生成しますが、これは O/S に大きく依存します。
他のヒント
私が見つけた最良の答えは次のとおりです。
「ネイティブキーボードとマウスのコントロールを処理するライブラリがあります。https://github.com/kwhat/jnativehook) "
それを回避する方法もわかりません。私は見つけました Java フォーラムのこのリンク JNI をセットアップしてグローバル キーボード ハンドラーを作成する方法の良い例を示します (ここに追加するには多すぎます)。これは少し古い (2005 年) ですが、この例は始めるのに十分な詳細を示しています。