3

我正在尝试用 Java 制作一种键盘记录器。我有一个应用程序允许人们在他们的桌面上获取他们的 RSS 提要,我想快速访问。顺便说一句,我需要一些可以做到这一点的东西:

  • 我启动我的 java jar 文件,它在系统托盘中最小化。
  • 用户做他想做的事(冲浪、看电影等)。
  • 他按下了一个组合键 (CTRL + I),然后 java 窗口打开并显示一个 GUI,他可以在其中检查新闻和修改应用程序配置。
  • 现在他可以最小化窗口(系统托盘图标)并继续正常使用他的电脑。

我的应用程序必须完全跨平台。除此功能外,所有事情都已完成。我已经尝试过使用KeyStroke,甚至System.in但是当用户将窗口设为活动时,它们只会捕获组合键。

那么,有没有一种方法可以在不使用 JNI 或 JNA 的情况下从应用程序外部捕获组合键(如透明覆盖)(这就是我的搜索给我的)。

谢谢你的帮助。

4

2 回答 2

1

这是无法做到的。当今世界,没有任何操作系统可以让您只记录所有击键

于 2012-05-31T14:32:34.830 回答
0

不,您必须使用一些系统相关库,即使用某种形式的 JNI。

不同的内置粒度级别是:

WHEN_ANCESTOR_OF_FOCUSED_COMPONENT

用于 registerKeyboardAction 的常量,这意味着当接收组件是焦点组件的祖先或本身就是焦点组件时,应该调用该命令。

WHEN_FOCUSED

用于 registerKeyboardAction 的常量,这意味着当组件获得焦点时应该调用该命令。

WHEN_IN_FOCUSED_WINDOW

用于 registerKeyboardAction 的常量,这意味着当接收组件位于具有焦点的窗口中或本身是焦点组件时,应调用该命令

于 2012-05-31T14:29:56.453 回答