在java中模拟按键,将用户输入写入另一个应用程序

时间:2015-05-22 08:04:55

标签: java awt awtrobot virtual-keyboard

我正在开发一个虚拟键盘应用程序。一切正常,除了我写的东西只写入本应用程序而不是后面运行的那个。

我认为这是因为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);

1 个答案:

答案 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来执行脚本。