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

Ros*_*oss 19 java java-native-interface keylistener listener

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

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

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

谢谢

Jen*_* S. 15

这是我找到的最佳答案:

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


Law*_*Dol 11

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

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