没有应用程序焦点的Java中的事件监听器? (全球按键检测)

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

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

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

谢谢

我的理解是,这是无法做到的。 在基础级别,JVM仅为其接收的O / S事件生成事件,并且仅在具有焦点时才接收O / S输入事件。

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

这是我找到的最佳答案:

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

我也没有办法解决这个问题。 我确实在Java的论坛上找到了这个链接,其中有一个很好的例子,说明如何设置JNI的东西并创建一个全局键盘处理程序(这里添加太多了)。 它有点过时(2005年),但这个例子看起来足够让你开始。