我有一个控制台应用程序,它提示我想通过Windows窗体应用程序中的System.Diagnostics.Process.Start()方法从C#调用的各种信息,但我无法让它正常工作。举一个简单的例子,我想通过Windows窗体应用程序捕获FirstName和LastName,然后像这样动态地将每个应用程序传递给控制台应用程序:
感谢您的任何见解,这不是我一直在努力工作的领域
答案 0 :(得分:0)
在WinForms应用程序中,您可以使用Process.StandardOutput属性返回的StreamReader读取控制台应用程序的输出,并使用Process.StandardInput属性返回的StreamWriter将输入写入控制台应用程序。
顺便说一下,您是自己开发控制台应用程序(还是拥有项目文件)?如果是这样,我建议使用更好的IPC形式,例如使控制台应用程序成为EXE的DLL内容,或者使用来自WCF或类似的东西。答案 1 :(得分:0)
查看Process.StandardOutput
和Process.StandardInput
以及Process.StandardError
。
您需要阅读Process.StandardOutput
。当您阅读“'输入您的名字'”时,您将第一个名字写为Process.StandardInput
,依此类推。
请注意,子进程也可以写入其StandardError
,您可能需要在不同的线程中读取它,以便您可以同时读取它们
在Java
中expect4j
可以轻松实现这一目标。我很确定我在.net上看到了一些内容,但我现在无法找到它。
编辑:Creating a Child Process with Redirected Input and Output似乎是关于MSDN上这个主题的好文章