19

我一直在寻找一段时间,每个人似乎都认为仅使用 Java 是不可能的,所以我会试一试;)

有没有办法让我的 Java 应用程序监听事件(特别是关键事件),而另一个不相关的应用程序具有窗口焦点?在我的情况下,我希望检测用户何时按下键盘上的“暂停”键,即使我的 Java 应用程序没有焦点。

我听说有人提到唯一的方法是编写一些 C 代码并使用 JNI。只是好奇是否有人知道避免这种情况的方法?或者,如果没有,至少是一个关于 c/JNI 东西的非常好的教程?

谢谢

4

3 回答 3

16

这是我找到的最佳答案:

“有一个库来处理本机键盘和鼠标控制: https ://github.com/kwhat/jnativehook )”

于 2011-05-30T08:05:36.697 回答
11

这是我的理解,这是做不到的。从根本上说,JVM 只为它接收到的 O/S 事件生成事件,并且它只有在获得焦点时才接收 O/S 输入事件。

我相信您可以使用 JNI 触发 O/S 为所有输入生成事件,但这将非常依赖于 O/S。

于 2009-04-29T04:42:27.517 回答
2

我也不知道有什么方法可以解决这个问题。我确实在 Java 论坛上找到了这个链接,其中有一个很好的例子,说明了如何设置 JNI 的东西并制作一个全局键盘处理程序(这里添加的太多了)。它有点过时(2005 年),但该示例看起来足够全面,可以让您入门。

于 2009-04-29T14:24:02.190 回答