捕捉控制台输入输出

问题描述:

我有一个控制台应用程序,从控制台读取输入并写入输出到控制台。我需要编写另一个应该运行第一个程序的程序,模拟它的控制台输入并获取输出。你能否提供一个调查这个问题的方法?捕捉控制台输入输出

的控制台应用程序代码(很容易),例如:

string input = Console.ReadLine(); 
int value = int.Parse(input); 
Console.WriteLine(value * value); 
+3

你有没有尝试过什么吗?显示您的控制台应用程序代码.. – 2013-04-08 10:38:09

+0

事实是我真不知道如何开始。 – 2013-04-08 10:38:47

+0

你有没有看过'Process'对象?它提供了大量工具,可以轻松地从已启动的应用程序的控制台读取/写入。 – PhonicUK 2013-04-08 10:38:49

您可以创建新的Process并指定它的StandardInputStandardOutput性能。

ProcessStartInfo processStartInfo = 
    new ProcessStartInfo(executableName, executableParameter); 
processStartInfo.UseShellExecute = false; 
processStartInfo.ErrorDialog = false; 
processStartInfo.RedirectStandardError = true; 
processStartInfo.RedirectStandardInput = true; 
processStartInfo.RedirectStandardOutput = true; 
Process process = new Process(); 
process.StartInfo = processStartInfo; 
bool processStarted = process.Start(); 
StreamWriter inputWriter = process.StandardInput; 
StreamReader outputReader = process.StandardOutput; 
StreamReader errorReader = process.StandardError; 
//Write and read process console using inputWriter and outputReader. 
process.WaitForExit();