我已经寻找了一段时间,似乎每个人都认为只使用Java是不可能的,所以我将尝试一下;)
有没有办法让我的Java应用程序在另一个不相关的应用程序具有窗口焦点时侦听事件(特别是关键事件)?在我的情况下,我希望检测用户何时按下了键盘上的“暂停”键,即使我的Java应用程序没有焦点。
我听过一些人提到,唯一的方法是编写一些C代码并使用JNI。只是好奇有没有人知道避免这种情况的方法?或者,如果没有,至少有一个关于c/JNI的非常好的教程?
谢谢
发布于 2009-04-28 20:42:28
据我所知,这是不可能做到的。从根本上讲,JVM只为它接收到的O/S事件生成事件,并且当它有焦点时,它只接收O/S输入事件。
我确信您可以使用JNI来触发O/S来为所有输入生成事件,但这将非常依赖于O/S。
发布于 2011-05-30 08:05:37
这是我找到的最好的答案:
“有一个用于处理本机键盘和鼠标控制的库:https://github.com/kwhat/jnativehook)”
发布于 2009-04-29 06:24:02
我也不知道有什么方法可以绕过这一点。我确实找到了this link on Java's forums,它提供了一个很好的例子来说明如何设置JNI并创建一个全局键盘处理程序(这里要添加的内容太多了)。它有点过时(2005年),但这个示例看起来足够全面,足以让您入门。
https://stackoverflow.com/questions/800747
复制相似问题