我有一个监视标准输入的 Windows 进程。
stdin = GetStdHandle(STD_INPUT_HANDLE);
我正在使用 WaitForMultipleEvent 等待标准输入,并且正在使用 ReadConsoleInput 进行阅读。
当我从 Windows 终端 (cmd.exe) 运行我的进程时,它工作得很好。 我的进程可以看到我正在输入的各种字符。
到目前为止,一切顺利。
我有一个 Java 进程,它生成我的 Win32 可执行文件并尝试写入它。我的 Windows 进程什么也没检测到。 这是一个 Java 片段:
Process p = Runtime.getRuntime().exec(cmdarray);
writer = new OutputStreamWriter(p.getOutputStream());
writer.append("quit"); //$NON-NLS-1$
writer.flush();
Java 完美地生成了我的进程。然而,WiN32 进程永远不会收到任何东西。 (我尝试从Linux进程监视stdin:在这种情况下,它可以工作,所以我的Java代码可能是正确的。这就是我在Windows上监视stdin的方式,它确实“适合”Java...)
有什么想法吗?
最佳答案
SetConsoleMode(stdin, 0); 使用 ReadFile 而不是 ReadInputConsole。
关于java - Win32 STD_INPUT_HANDLE/ReadConsoleInput : How to write to it from Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20571910/