java - 如何在java中捕获全局按键

标签 java

我用 Java 制作了一个简单的媒体播放器,但我想记录全局按键,例如 Ctrl + P 来暂停/恢复当前播放在 JFrame 没有焦点的情况下播放音乐,但由于 JVM 安全问题,这似乎是不可能的。

我遇到了JNativeHook但我只想为 Windows 实现我自己的方法。 请建议如何做以及从哪里开始?

最佳答案

尝试 JNativeHook 。下面是一个示例,展示了如何使用它来捕获全局按键:

try
{
    GlobalScreen.registerNativeHook();
    GlobalScreen.addNativeKeyListener(new NativeKeyListener()
    {

        @Override
        public void nativeKeyTyped(NativeKeyEvent nativeEvent)
        {
        }

        @Override
        public void nativeKeyReleased(NativeKeyEvent nativeEvent)
        {
            String keyText=NativeKeyEvent.getKeyText(nativeEvent.getKeyCode());
            System.out.println("User typed: "+keyText);
        }

        @Override
        public void nativeKeyPressed(NativeKeyEvent nativeEvent)
        {   
        }
     });
}
catch (NativeHookException e)
{
    e.printStackTrace();
}

如果您使用 maven,请将其添加到您的 pom.xml 中:

<dependency>
    <groupId>com.1stleg</groupId>
    <artifactId>jnativehook</artifactId>
    <version>2.1.0</version>
</dependency>

关于java - 如何在java中捕获全局按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58902945/

相关文章:

java - 如何修复我的 Arraylist 并将其设置在我的 ListView 中

java - 为什么 JSF ManagedBean 方法要执行多次,而它们本来应该只执行一次?

java - Spring Security - @Secured 仅适用于 mvc Controller

java - 在 Eclipse 中附加源问题

java - 使用 ByteArrayOutputStream 时,Itext PdfStamper getOverContent 返回 null

java - XML schema 可以在单个 complexType 中有多个选择?

java - Java 找不到 PHP 脚本,但可以在浏览器中运行

java - 有没有办法捕获 Java 中 Google App Engine 上所有未处理的错误?

java - 加载 Postgresql JDBC 4.1 驱动程序

Java 堆转储错误 - 元数据似乎不是多态的