Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java.awt.Toolkit捕获全局按键_Java_Windows_Keyboard_Operating System_Awt - Fatal编程技术网

使用java.awt.Toolkit捕获全局按键

使用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

我在类工具箱中找到了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[] 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必须关注当今所有的本机操作系统,这当然是可能的,但我们也在讨论与防病毒相关的问题