我有一个使用Java启动(非Java)CLI流程的流程,我想以编程方式向其发送Ctrl + I组合键。
有可能吗?
答案 0 :(得分:2)
如果外部进程在其标准输入上寻找Ctrl-I字符(顺便说一下,与Tab相同),GreenGiant的解决方案将起作用。由于这不起作用,该过程显然是在其控制台(tty)上寻找按键,这是其他程序根本无法访问的。您需要编写本机代码来创建虚拟tty并让进程使用它。 JNI是Java允许Java作为Java程序的一部分调用本机代码的方式。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您使用ProcessBuilder
启动了另一个程序,那么您可以通过将适当的字节写入进程的输入流来发送控制序列。
我不确定您需要发送的实际字节序列是什么,但是based on what I'm finding,似乎Ctrl + A为1,Ctrl + B为2,等等。
ProcessBuilder pb = new ProcessBuilder( "..." );
Process process = pb.start();
OutputStream stream = process.getOutputStream();
stream.write( 'I' - 'A' + 1 ); // send Ctrl+I
stream.flush();