我有一个交互式命令行程序,按下 Tab 键时具有制表符完成功能(完成命令或列出可能的选项)。
我正在编写另一个 Java 程序,它将使用 ProcessBuilder 将命令行程序作为子进程启动。
我可以使用 Process.getInputStream()
和 Process.getOutputStream()
将输入传递给进程。
现在,我想在子进程中触发自动完成。当我打印税务字符 '\t'
时,它被视为常规制表符,而不是触发制表符自动完成。
有没有办法将按键或等效事件从 Java 进程发送到子进程?
最佳答案
你可以尝试使用机器人
Robot robot = new Robot();
robot.mouseMove(x, y); //Select the console window at x,y
robot.keyPress(KeyEvent.VK_TAB); //Send tab key
或者还运行特定于操作系统的命令,例如使用 X11 的 Unix 的 xdotool
xdotool windowactivate id &&
xdotool key Tab &&
关于Java Process API - 将 Tab 键按下事件发送到交互式 shell 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46395370/