人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaのSwing,AWTについて質問です。

ウィンドウがアクティブでない状態でもキーイベントを受け取りたいのですが可能ですか?
可能な場合はどのような実装をすれば実現できるのでしょうか?

●質問者: hogesuke123
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● oil999
●100ポイント

できません。
KeyListenerを使うことになりますが、そのウィンドウにフォーカスが無いと作用しないからです。


2 ● gizmo5
●100ポイント

AWT や Swing の範囲だけではできないと思います。
それだけだと、回答になってないような気もするので、実現方法をいくつか。

SWT Win32 Extension

http://feeling.sourceforge.net/
SWT は、割りと有名だと思います。

http://rainbowdevil.jp/?p=632
ここに載ってるのは、マウスのフックですが、キーボードもこんな感じでいけるはず。

Keyboard_LLHook.addHookInterceptor(new Keyboard_LLHookInterceptor() {
 public InterceptorFlag intercept(Keyboard_LLHookData hookData) {
 switch (hookData.getWParam()) {
 case Keyboard_LLHookData.WM_KEYUP:
 ...
 return InterceptorFlag.TRUE;
 }
 return InterceptorFlag.FALSE;
 }
 });
Keyboard_LLHook.installHook();

javadoc は、こちら
http://svn2.assembla.com/svn/screendump-pub/swt/doc/win%2032%20extension/index.html

ほかにも、ここが参考になるかも。
http://monogusadev.blogspot.jp/2011/06/java.html


jnativehook

jnativehook というライブラリもあります。
http://code.google.com/p/jnativehook/

http://code.google.com/p/jnativehook/source/browse/trunk/src/org/dotnative/globalhook/keyboard/Driver.java?spec=svn55&r=55
サンプルがなかなか見当たらないんですが、テスト用のプログラム(?)がアーカイブされてます。


JIntellitype API

JIntellitype API というのもあります。
Hot キーのフックを簡単にできるみたい。
http://melloware.com/products/jintellitype/index.html
http://melloware.com/products/jintellitype/quick-start.html

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ