C#将数据重定向到已经运行的控制台exe

时间:2018-11-13 19:06:27

标签: c# .net reflection process

我想做什么:

我想从另一个控制台应用程序(AppA)中启动一个内置的控制台应用程序(AppB)。 AppA在不带任何参数的情况下启动AppB。 AppB所做的只是进入其Main()方法并调用Console.ReadLine()

现在,我希望AppA将数据字符串发送到AppB的Console.ReadLine()。这甚至是possibel吗? (我知道我可以将流发送到新的Console.exe,但这不是我所需要的。)

1 个答案:

答案 0 :(得分:1)

您需要使用RedirectStandardInput

     Process myProcess = new Process();

     myProcess.StartInfo.FileName = "someconsoleapp.exe";
     myProcess.StartInfo.UseShellExecute = false;
     myProcess.StartInfo.RedirectStandardInput = true;
     myProcess.StartInfo.RedirectStandardOutput = true;
     myProcess.StartInfo.ErrorDialog = false;

     myProcess.Start();

     StreamWriter stdInputWriter  = myProcess.StandardInput;
     StreamReader stdOutputReader  = myProcess.StandardOutput;

     stdInputWriter.WriteLine(password);

     var op = stdOutputReader.ReadLine();

     // close this - sending EOF to the console application - hopefully well written
     // to handle this properly.
     stdInputWriter.Close();


     // Wait for the process to finish.
     myProcess.WaitForExit();
     myProcess.Close();