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

我已经搜索了一段时间,每个人似乎都认为仅使用Java是不可能的,所以我会给SO一个机会;)

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

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

谢谢


答案 1

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

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


答案 2

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

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


推荐