java - Win32 STD_INPUT_HANDLE/ReadConsoleInput : How to write to it from Java?

标签 java winapi input console

我有一个监视标准输入的 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/

相关文章:

java - GAE : Slow Load Time 上的 Spring MVC

java - 您如何称呼实现的 Enum 类型?

c++ - 对 MFC 项目中的内存泄漏感到困惑,如果从未调用 _CrtDumpMemoryLeaks(),这些内存泄漏就会消失

c - 了解 K&R 的 getint()(第 5 章 : Pointers & Arrays, 练习 1)?

javascript - 填写之前的 append 输入字段

java - 使用 Java 发送 telnet 命令并读取响应

java - Spring Boot、ActiveMQ、修改代理 URL

c++ - 我如何解决 GetParent/EnumChildWindows 不对称问题?

delphi - 从 DNS 获取 IP 地址而不使用 GetHostByName

javascript - 在 Angular 中,仅当未禁用时才需要一个字段