Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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中的系统覆盖Keylistener_Java_Focus_Overlay_Keylistener - Fatal编程技术网

java中的系统覆盖Keylistener

java中的系统覆盖Keylistener,java,focus,overlay,keylistener,Java,Focus,Overlay,Keylistener,有没有一种方法可以在Java中创建一个在程序窗口之外工作的keylistener?我希望它一直运行,如果您按下某个按钮/组合,它将执行一些代码行,无论您在哪个窗口。 Java有这种能力吗?以防万一,我在很久以前发现了一些东西,它让我再次思考这个问题: 是一个库,允许您使用Java侦听系统范围的keyevents 下面是他们的一些示例,用于实现一个简单的密钥侦听器: import org.jnativehook.GlobalScreen; import org.jnativehook.Native

有没有一种方法可以在Java中创建一个在程序窗口之外工作的keylistener?我希望它一直运行,如果您按下某个按钮/组合,它将执行一些代码行,无论您在哪个窗口。
Java有这种能力吗?

以防万一,我在很久以前发现了一些东西,它让我再次思考这个问题:

是一个库,允许您使用Java侦听系统范围的keyevents

下面是他们的一些示例,用于实现一个简单的密钥侦听器:

import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;

public class GlobalKeyListenerExample implements NativeKeyListener {
    public void nativeKeyPressed(NativeKeyEvent e) {
        System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
    }

    public static void main(String[] args) {
        try {
            GlobalScreen.registerNativeHook();
        }
        catch (NativeHookException ex) {
            System.exit(1);
        }

        GlobalScreen.addNativeKeyListener(new GlobalKeyListenerExample());
    }
}

不,如果不使用一些对本机代码(如JNI或JNA)的访问,就无法使用核心Java实现这一点。对于我自己,我会使用为此而构建的实用程序,例如针对Windows平台的AutoIt if。如果需要的话,这甚至可以与使用套接字的Java程序相结合,事实上我已经做到了。我猜是这样的。我肯定会尝试自动编程的方法,因为它听起来不像本机编程那么复杂。谢谢。