问题标签 [jnativehook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
85 浏览

java - Java /将键从键盘或鼠标转换为另一个键

我有一个 Swing Java 应用程序(A ),它 在按下某个按钮时启动另一个应用程序(B) 。Runtime.getRuntime().exec()

是否可以设置某个 Key Hook 以便当应用程序(B)打开并处于活动状态时,它会更改按钮(例如,当您按下“Q”时,实际上按下了“H”按钮,等等上)。和鼠标类似的情况(例如,如果“ Mouse Mid ”或“ Mouse Wheel ”被按下,实际上另一个按钮被按下,例如“ T ”)。

理想情况下,如果可能,它应该适用于所有操作系统,但主要适用于 Windows。

请告诉我是否有可能实现这一点,我很乐意提供任何建议或示例。

0 投票
0 回答
262 浏览

java - Java NativeKeyListener 在另一个应用程序中不起作用

我有一个 Java swing 应用程序,它必须使用 Windows、Mac 和 Linux 操作系统的全局键盘输入键。为此,我决定使用jnativehook 库版本:'2.1.0',因为据说它允许你这样做。

目标是当您在另一个应用程序(即魔兽争霸 III)的窗口内时,从键盘上捕捉按键。

这段代码效果很好,启动应用程序后,键盘上的按下按钮、鼠标和鼠标移动的数据都显示在控制台中。

这是它在 Notepad++ 中如何工作的示例。代码本身将在问题结束时显示在下面: 在此处输入图像描述

但问题是,当魔兽争霸 III 应用程序集中处于活动状态时,当您按下键、鼠标和移动鼠标时,什么也没有发生。我的所有活动都没有显示在应用程序控制台中。

更新jnativehook在Total Commander窗口处于焦点时也不起作用。

这是以管理员身份运行的窗口模式下的魔兽争霸 III 应用程序的外观。 在此处输入图像描述

这是我尝试使用的示例代码,取自官方来源

问题:为什么jnativehook在魔兽争霸III应用处于焦点时停止工作?事实证明,同样的情况是当Total Commander窗口处于焦点时。但是当它处于焦点时,它可以在记事本++中工作。它是否以某种方式选择性地工作?

请告诉我可能是什么问题。我的操作系统是 Windows 10。

预先感谢您的建议。

0 投票
0 回答
59 浏览

java - 使用 jnativehook 库 Maven JAR 创建 jar 时出现问题

目前,我在java中制作了一个简单的点击器。我喜欢这个库jnativehook,因为它在后台工作,我将它添加为依赖项

编译成功结束,IDE 没有警告,但在终端运行 JAR 后

java -jar clicker.jar

我有以下错误

我怀疑这是将库编译为 jar 的问题。我也尝试添加jnativehook.jar到类路径,但没有帮助。

我使用 JDK 11 和 Maven 3.6.3。

0 投票
1 回答
71 浏览

java - KeyEvent.getKeyText 和 NativeKeyEvent.getKeyText 返回不同的值

我有一个关于 Java KeyListener 的问题。

我在 JTextField 和 jnativehook 的 NativeKeyListener 中使用 Java 的内置键侦听器,不幸的是,它们都给出了不同的键代码。我认为这可能是因为我有一个德语键盘布局,Java 的 KeyListener 正确映射了我的键,但 NativeKeyListener 没有。如何设置 NativeKeyListener 的按键布局?还是有其他解决办法?

0 投票
0 回答
32 浏览

java - 有没有办法取消全局粘贴?

我想取消通过快捷方式访问的粘贴CTRL + V。我首先使用JNativeHook来获取按键。这是我的测试课:

请注意,main 方法几乎可以忽略。它只是启动 NativeKeyListener 而不会使控制台不可读。

如你看到的。我只是在CTRL + V按下时将剪贴板设置为空字符串。这有一个缺陷。它只有在你运行它两次时才有效。在第一次运行时,它只会按预期粘贴内容。那么有没有办法以一种干净且有效的方式取消这个全局按键呢?它不必与 JNativeHook 一起使用。

0 投票
0 回答
39 浏览

java - 如何正确使用 GlobalScreen.addNativeKeyListener

这段代码有一个Non-static method 'addNativeKeyListener(org.jnativehook.keyboard.NativeKeyListener)' cannot be referenced from a static context错误,这对我来说完全有意义,因为我检查了源代码并且 addNativeKeyListener 不是静态的。

该代码只是我从 Youtube 视频中复制的一个模板,而 Youtuber 的代码似乎可以正常工作。我还检查了其他示例,它们都能够调用 GlobalScreen.addNativeKeyListener(new class())- https://www.programcreek.com/java-api-examples/?api=org.jnativehook.GlobalScreen

我怎样才能解决这个问题?

0 投票
1 回答
67 浏览

java - Java NativeKeyListener 以退出代码 0 完成

我正在尝试制作一个可以检测我的击键然后基于它们做一些事情的程序,但是每次我运行我的程序时,即使我让听众初始化了任何想法,它也会以退出代码 0 结束?(我没有错误)

这是我初始化事件的地方

最后这是我的活动

关于它的奇怪之处在于它工作得更早,但是当我单击一个键时它随机停止打印“测试”,即使没有任何改变。

0 投票
0 回答
37 浏览

java - 如何使用事件打印报表

我正在使用 NativeMouseListener 并且我试图弄清楚如何在按住鼠标按钮 1 的同时执行一些代码,例如打印语句。

program.test() 正在调用一个方法,该方法使用 while 循环在布尔值等于 true 时连续打印。现在我假设这不起作用的原因是因为它在单独的线程上打印,这就是为什么当我将布尔值设置为 false 时它不会停止打印。话虽这么说,我实际上可以用什么方法来完成这项工作,以便仅在我按住左键单击布尔值设置为 true 时才打印?

0 投票
2 回答
85 浏览

java - 检测到所需的基于文件名的自动模块。请不要将此项目发布到公共工件存储库

所以我用 Maven 做了一个非常简单的 java 项目,其中我使用了一个 Libary jnativehook,在 intellij 中它工作得很好但是当我使用 jlink 导出它时,这个警告出现了

后跟此错误消息

我搜索过,但没有任何帮助

这是我的 pom.xml

和我的 module-info.java

所以我测试了一些东西,我删除了与 jNativeHook https://github.com/kwhat/jnativehook有关的所有内容,它有效,但我需要 jNativehook 有没有人有解决这个问题的想法或者有没有人有类似的问题

0 投票
0 回答
39 浏览

java - Java 机器人不停止

我对 JNativeHook 库和 Java Robot 的操作有疑问。当我按 F9 时我的机器人应该运行,当我按 F6 时它应该停止,但它不工作。我不知道我在这里做错了什么。每次我试图停止机器人时,它都不会停止。代码说,当我按 F6 时,工作值应更改为 false,while 循环应停止调用机器人。