Java Process API - 将 Tab 键按下事件发送到交互式 shell 程序

标签 java java-io

我有一个交互式命令行程序,按下 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/

相关文章:

java - 为什么我的代码立即终止?

java - 将字符串拆分为全部字母和全部数字

java - 将包含 "ñ"等字符的字符串写入 txt 文件

Java:初始化问题,无法从 arrayList 打印 "assigned"值

java - 使用 StringReader 读取 String 的末尾

Java 音频单独运行时可以正常播放,但通过单独的类运行时则不然

java - System.in.read 实际返回什么?

java - 在Java程序中没有处理FileNotFoundException文件吗?

java - 缩放 View 以适应屏幕旋转/模拟 onScale() 方法

java - 简单的java聊天应用程序阅读图像