私はプログラムを書いていますが、プログラム内で、プログラムにフォーカスがないときにキーボードを見たいと思っています。「JNativeHook」と呼ばれる jar を使用しており、ここで見つけることができますhttp://code.google.com/p/jnativehook/
私の問題について: この jar は機能し、各キーのプレスとリリース イベントをキャプチャします。私のコードでは、これらを追跡し、「v」またはctrlキーが押された場合の各キープレスイベントで、ユーザーが貼り付けている両方がtrueの場合、それぞれにフラグを設定します。ユーザーが最初に貼り付けると、プログラムはカウンターを 1 にインクリメントします。カウンターが 1 の場合、次の貼り付けでシステム クリップボードのテキストを「Test Paste1」に設定し、カウンターをインクリメントします。 3カウンターして再スタート。(特定の組み合わせが押された場合にkeyListenerがアクティブになり、システムクリップボードを変更しようとするように制御を追加する予定です。もう一度押すとオフになります)
私の問題は、クリップボードが変更される場合があり、実際に正しいテキストを貼り付けても、貼り付けられない場合があり、エラーがスローされることです
Exception in thread "pool-1-thread-135" java.lang.IllegalStateException: cannot open system clipboard
そのため、キーボードを開くことができる場合とできない場合があります。私はメモ帳を使用してテストを行っています。だから私は自分のプログラムを実行し、メモ帳を開き、何かをコピーします。それから私は貼り付けます、それはそれを言います、そして次の貼り付けは正しい場合とそうでない場合があり、次の(2番目の貼り付け)、そして次の(3番目の貼り付け)。そして、それをやり遂げると、最初からやり直します。
時々クリップボードにアクセスできないのはなぜですか?テキストがクリップボードに確実に届くようにするにはどうすればよいですか?
行をwhileループに入れて、例外がない限り続行します。しかし、クリップボードがx時間「アクセスできない」場合、無限ループに陥る可能性があります。
続き:
http://stackoverflow.com/questions/14492472/cannot-gain-control-over-clipboard-even-with-controlling-logic