Win32标准输入句柄/读控制台输入:如何从Java写入?

Win32标准输入句柄/读控制台输入:如何从Java写入?,java,winapi,input,console,Java,Winapi,Input,Console,我有一个Windows进程监视stdin stdin = GetStdHandle(STD_INPUT_HANDLE); 我正在使用WaitForMultipleEvent等待stdin,我正在使用ReadConsoleInput读取 当我从Windows终端(cmd.exe)运行我的进程时,它工作得非常好。 我的进程可以看到我输入的各种字符 到目前为止,一切顺利 我有一个生成Win32可执行文件并尝试写入的Java进程。我的Windows进程没有检测到任何东西。 下面是一个Java代

我有一个Windows进程监视stdin

stdin = GetStdHandle(STD_INPUT_HANDLE);    
我正在使用WaitForMultipleEvent等待stdin,我正在使用ReadConsoleInput读取

当我从Windows终端(cmd.exe)运行我的进程时,它工作得非常好。 我的进程可以看到我输入的各种字符

到目前为止,一切顺利

我有一个生成Win32可执行文件并尝试写入的Java进程。我的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(标准输入,0); 使用ReadFile而不是ReadInputConsole