2013-04-08 173 views
0

我有一個控制檯應用程序,從控制檯讀取輸入並寫入輸出到控制檯。我需要編寫另一個應該運行第一個程序的程序,模擬它的控制檯輸入並獲取輸出。你能否提供一個調查這個問題的方法?捕捉控制檯輸入輸出

的控制檯應用程序代碼(很容易),例如:

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

回答

2

您可以創建新的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();