私はこれが起こることを望みます:
- Java プログラムを開始する
- 私のJavaプログラムはnotepad.exeを起動します
- メモ帳に文字を入力すると、Java プログラムが反応して文字を出力するはずです。
要するに、別のプロセスのキーイベントリスナーを作成することは可能ですか? Java プログラムにはフォーカスがありません。
それが不可能な場合は、Java Swing ウィンドウとメモ帳プロセスの間でフォーカスを変更できるようにしたいと考えています。例えば:
A) Java プログラムにフォーカスがあり (小さなスイング ウィンドウ)、文字「A」を入力します
B) メモ帳にすばやくフォーカスが移され、そこに文字 A が入力されます (たとえば、Robot クラスを使用)
C) Java プログラムが再びフォーカスを取得します
システムトレイにあるJavaプログラムのキーボードフックの作成で与えられた答えを引用する
そのため、キーボード フックを作成するのは見た目ほど簡単ではありません。Java は、セキュリティのためにシステム イベントと対話する直接的な方法を提供していません。JVM 、システムのメモリ、および Java フレームワークの移植性に関する深刻な問題につながる可能性があるためです。
グローバル キーボード フックを作成するには、次の 4 つの方法があります。
- JNI / JNAを学びます.JNIよりもはるかに簡単なので、私はJNAを好みます。どちらの場合も、.dllファイルを処理する必要があります。
- あなたが言ったように、いくつかの問題を引き起こす JIntellitype を使用してください。
- Sergei Biletnikov によるエレガントなソリューションhttp://biletnikov-dev.blogspot.com/2009/09/global-hotkeys-for-Java-applications_25.html
- Java を無視し、Autoit V3 を試してください (100% 確信があるわけではありませんが、Autoit から Java アプリにシグナル/イベントを送信できるので、Autoit はグローバル キー ストロークをキャッチするブリッジとして機能します)。
良いチュートリアルである番号 3 を使用します。リンクが 404 になっている場合、プロジェクトのソースがまだアップしている可能性があります: gigapeta.com/dl/1917618aba749a