我正在开发一个虚拟键盘应用程序。一切正常,除了我写的东西只写入本应用程序而不是后面运行的那个。
我认为这是因为java中的ROBOT类仅适用于创建它的应用程序上下文。
有解决方法吗?
以下是代码,我正在尝试在我的java应用程序后面的终端中编写 ls :
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyPress('l');
robot.keyRelease('l');
robot.keyPress('s');
robot.keyRelease('s');
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
答案 0 :(得分:2)
从this example判断,Robot
类能够向外部应用程序发送击键 - 但它们将到达topmost window
,因此您基本上需要将窗口集中到您想要的窗口要发送你的击键,似乎有各种各样的解决方案,我猜这个是最简单的:
https://stackoverflow.com/a/4782350/351861:
或者,您可以编写VBScript来激活另一个 应用。例如:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate("Firefox")
然后使用Java应用程序中的Runtime.exec来执行脚本。