使用java.awt.Toolkit捕获全局按键
我在类工具箱中找到了addAWTKeyListener方法,但无论窗口是否具有焦点,我都无法使其正常工作。我的代码如下:使用java.awt.Toolkit捕获全局按键,java,windows,keyboard,operating-system,awt,Java,Windows,Keyboard,Operating System,Awt,我在类工具箱中找到了addAWTKeyListener方法,但无论窗口是否具有焦点,我都无法使其正常工作。我的代码如下: import java.awt.AWTEvent; import java.awt.Toolkit; import java.awt.event.AWTEventListener; import java.awt.event.KeyEvent; public class KeyTest { public static void main(String[] arg
import java.awt.AWTEvent;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
public class KeyTest {
public static void main(String[] args){
Thread t = new Thread(){
@Override
public void run() {
System.out.println("STARTING");
Toolkit kit = Toolkit.getDefaultToolkit();
kit.addAWTEventListener(new AWTEventListener(){
@Override
public void eventDispatched(AWTEvent event) {
System.out.println("EVENT");
if(event instanceof KeyEvent){
KeyEvent kEvent = (KeyEvent) event;
System.out.println(kEvent.getKeyCode());
}
}
}, AWTEvent.KEY_EVENT_MASK);
while(true);
}
};
t.start();
}
}
我做错什么了吗?我的观点是,开始打印时没有错误。偶数根本不被调用。只是一个猜测,但您的示例中没有任何AWT窗口,因此我猜这就是事件从未被触发的原因
当你说“窗口是否有焦点”时,你真正的应用程序是否有你切掉的窗口,或者你说的是java控制台窗口或类似的窗口?我可能是错的,因为我肯定不是专家,但据我所知,你想在java中做什么是不可能的 您是否试图使用Java程序捕获按键点击,但不创建窗口?Java的安全性的一部分,这可能是我的错误,就是它只能监听由特定Java程序创建的Java窗口内的事件 因此,如果您试图制作一些在后台运行并捕获按键的键盘记录器,它将无法做到这一点
我希望我能给你一个更具体的答案,但我希望这能有所帮助。Window必须关注当今所有的本机操作系统,这当然是可能的,但我们也在讨论与防病毒相关的问题