使用Java模拟终端内的按键

时间:2016-04-12 21:14:52

标签: java

目前通过终端中的ssh运行程序。要控制程序,我需要键入某些键('i','j','l'或',')。我正在尝试使用java类来根据某些输入模拟这些按键,但我遇到了几个问题。

1)没有终端对焦,模拟按键不会做任何事情。我有一个vb脚本将焦点转移到其他窗口,但被告知我需要一些额外的步骤来从java类启动脚本。我也在想,也许在运行时有一些东西。无论什么只做按键,但我不熟悉它。

2)即使我可以做上述其中一项,我也不确定“模拟”按键是否足以控制程序。实际上,我尝试运行我的Java项目并在模拟按键之前手动切换到终端,但它没有效果。

对这些想法的任何输入/帮助,或者以其他方式完成我的任务的建议将不胜感激。如果需要,我可以尝试提供更多细节。

谢谢!

更新: 因此,当我手动切换到终端时,模拟按键实际工作。我想我第一次不够快。所以我只需要自动将焦点切换到终端并解决问题。

1 个答案:

答案 0 :(得分:1)

为了模拟按键,您可以使用

        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_I);
        robot.keyRelease(KeyEvent.VK_I);

要运行VbScripts,请使用Runtime.getRuntime().exec(file.getPath());,其中file是您的vbscript文件

例如: -

public static void runScript()
{
    try
    {
        File file = File.createTempFile("popup", ".bat");
        file.deleteOnExit();
        FileWriter fw = new FileWriter(file);

        String vbs = "result=Msgbox(\"Are you sure?\",vbYesNo+vbInformation, \"\")" 
                      + "\nWScript.Echo result";

        fw.write(vbs);
        fw.close();

        Runtime.getRuntime().exec(file.getPath());
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}