当前位置: 首页 > 面试题库 >

如何在Java中捕获全局按键

谭志用
2023-03-14
问题内容

我用Java制作了一个简单的媒体播放器,但是我 想记录诸如Ctrl+的全局按键,P以暂停/恢复当前正在播放的音乐,
而JFrame没有聚焦, 但是由于JVM安全问题,似乎无法实现。

我遇到了JNativeHook,但是我只想为Windows实现我自己的方法。请建议如何做以及从哪里开始?


问题答案:

Jintellitype是一个比较简单的解决方案。

https://code.google.com/p/jintellitype/

另一个简单的解决方案是将Windows钩子与JNA结合使用:

Windows中的JNA键盘钩

我对JNA有一定的经验,并且非常喜欢api。

第三种解决方案是使用JNI管理您自己的呼叫。

据我所知,在可移植性方面,Windows dll和api体系结构在响应用户输入方面一直保留在不同的OS版本中。如果有内存,则用户输入的挂钩位于user32
dll中。对于x64位版本,也许您必须跳过一些箍,但是我怀疑这样做会很难。



 类似资料:
  • 问题内容: 我有一个Java 7程序,该程序加载成千上万个对象(组件),每个对象具有许多参数(存储在中),并在这些对象上执行各种Rhino脚本以计算其他派生参数,这些参数又存储回该对象的中。在运行每个脚本之前,将创建一个对象,该对象由该对象的映射支持,该映射在脚本运行期间用作JavaScript的作用域。 作为一个简单的示例,以下代码创建一个a = 10和b = 20的代码,并执行脚本,结果将其存

  • 问题内容: 我想在脚本中签入某个其他模块是否已加载。 但是,如果不存在,那就是。 如果我知道那是什么,我可以使用它。 但是,因为我希望我的模块与浏览器和工作,等等,我不能假设。 据我了解,这在ES 5 with中不起作用; 这也会因抛出异常而失败 所以好像我已经离开了 这些情况都不会通过JSLint。 我有什么想念的吗? 问题答案: 好吧,您可以使用运算符,并且如果标识符在范围链的任何位置都不存在

  • 问题内容: 我使用以下全局jQuery来显示和隐藏装载的电话: 这可以正常工作,但是我不想显示自动完成的加载div,所以我添加了以下内容: 然后,要重置“正常” 通话,请执行以下操作: 所有这些对于使用页面加载构造的文本输入都很好。但是,在几种情况下,文本输入是使用jQuery / Javascript在客户端动态插入的,在这种情况下 ,事件不会绑定到全局函数。我也尝试过: 但这也不起作用。有什么

  • 问题内容: 我有一个应用程序,需要编写一个自定义的全局未捕获的异常处理程序。我已经阅读了所有stackoverflow线程,并且其中每个线程都只是缺少一个清晰而简单的示例,说明了如何实现这一点。 考虑以下简单示例: 它抛出一个标准异常,它只是一个标准输出。我如何实现自己的异常,该异常可以通过将错误输出到日志文件中的简单方法覆盖标准异常?显然,实际的应用程序要大得多,我们正在谈论未捕获的异常,这就是

  • 我需要捕获Android中的电源键按下。我尝试了以下方法 但使用此代码按下电源键控制不进入onKeyDown方法。 长按电源键时,会调用此方法。但我需要的是,我需要在单次按压时捕捉到这一事件 有人能帮忙吗?

  • 问题内容: 我正在研究启动多个进程和数据库连接的python脚本。我不时地想用信号杀死脚本,我想进行一些清理。 在Perl中,我可以这样做: 如何在Python中做类似的事情? 问题答案: 用以下方式注册你的处理程序: 代码改编自此处。