【问题标题】:System-Overlaying Keylistener in javajava中的系统覆盖键监听器
【发布时间】:2014-08-08 18:32:12
【问题描述】:

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

【问题讨论】:

  • 不,如果不使用对本机代码(如 JNI 或 JNA)的一些访问权限,则无法使用核心 Java 完成此操作。我自己,我会使用为此而构建的实用程序,例如用于 Windows 平台的 AutoIt。如果需要,这甚至可以与使用套接字的 Java 程序相结合,事实上我已经这样做了。
  • 我猜是的。我将确定尝试 AutoIt 方式,因为它听起来不像本地编程那么复杂。非常感谢。

标签: java focus overlay keylistener


【解决方案1】:

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

JNativehook 是一个库,可让您使用 Java 监听系统范围的键事件。

这里有一些来自github 的示例code,用于实现一个简单的按键监听器:

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());
    }
}

【讨论】:

    猜你喜欢
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多