发送一个键盘的事件从爪哇的任何应用程序(屏幕上的键盘)
-
03-07-2019 - |
题
我的工作在发展中的一个屏幕上的键盘java。这个键盘 JComponent
对于每个可能的关键。当老鼠一下检测一下按钮,我要发送具体的键盘编码的应用程序目前的焦点。键盘本身内 JFrame
没有装饰品和设总是在顶部。
我发现机器人类可用于模拟这些键盘上的事件的机队。然而,在这种情况下,选择 JComponent
将意味着关键的新闻接收到 JFrame
, ,我不能够接受它的其他应用程序
我怎样才能让我在屏幕上的键盘的"始终没有焦点"?它也许可以使用另一种方法发送关键的新闻?
解决方案 3
显然,唯一的方法就是拥有一个JNI层,它将从java转换为native。 Java没有简单的方法来提供这样的功能。
对于想要学习JNI的人来说,对于一个小型的第三方图书馆来说,这可能是一个有趣的概念......
其他提示
当我尝试使用实际的键盘和鼠标命令控制游戏机会时,我找到了 jnativehook (更像“类似人”)。
到目前为止我唯一能找到的解决方案是将每个键都设为JComponent(因此它不能有焦点),并在JFrame上设置以下属性:
setUndecorated(true);
setFocusableWindowState(false);
setFocusable(false);
enableInputMethods(false);
现在使用机器人类时,我可以通过单击键将事件发送到任何聚焦窗口。唯一的限制是,它似乎只适用于属于同一个虚拟机的Windows,并且它对任何其他系统窗口都不起作用。
你有没有试着打电话给司机setfocus()或setactivewindow()职能移动焦点之前,你用机器人类?
我不知道以独立于操作系统的方式执行此操作的任何方法。我不了解Windows,但可以通过X协议与X服务器通话。
不隶属于 StackOverflow