Win32 STD_INPUT_HANDLE / ReadConsoleInput:如何从Java写入它?

时间:2013-12-13 16:57:36

标签: java winapi input console

我有一个监控标准输入的Windows进程。

stdin = GetStdHandle(STD_INPUT_HANDLE);    

我正在使用WaitForMultipleEvent等待stdin,我正在使用ReadConsoleInput进行读取。

当我从Windows终端(cmd.exe)运行我的进程时,它非常有效。 我的过程可以看到我正在输入的各种字符。

到目前为止,非常好。

我有一个Java进程生成我的Win32可执行文件并尝试写入它。我的Windows进程检测到NOTHING。 这是一个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“适合”的方式......)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

SetConsoleMode(stdin,0); 使用ReadFile而不是ReadInputConsole。