我想做什么:
我想从另一个控制台应用程序(AppA)中启动一个内置的控制台应用程序(AppB)。 AppA在不带任何参数的情况下启动AppB。 AppB所做的只是进入其Main()
方法并调用Console.ReadLine()
。
现在,我希望AppA将数据字符串发送到AppB的Console.ReadLine()
。这甚至是possibel吗? (我知道我可以将流发送到新的Console.exe,但这不是我所需要的。)
答案 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();