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

时间:2009-04-29 03:20:17

标签: java java-native-interface listener keylistener

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

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

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

由于

3 个答案:

答案 0 :(得分:14)

以下是我找到的最佳答案:

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

答案 1 :(得分:11)

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

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

答案 2 :(得分:3)

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