无法从进程重定向标准输出

时间:2013-07-23 17:28:06

标签: c# process

我尝试了3-4个版本,但没有一个适用于我..我有一个小exe,我不再有源但它工作正常,但我仍然需要它的结果字符串,

Process proc = new Process();
ProcessStartInfo StartInfo = new ProcessStartInfo();
StartInfo.RedirectStandardError = true;
StartInfo.RedirectStandardOutput = true;
StartInfo.FileName = path + "calculate.exe";
StartInfo.Arguments = input;
StartInfo.UseShellExecute = false;
StartInfo.CreateNoWindow = true;

proc.StartInfo = StartInfo;

proc.Start();

proc.WaitForExit();

string output = proc.StandardOutput.ReadToEnd();

MessageBox.Show(output);

我得到一个空的MessageBox,任何想法为什么?当我在WaitForExit上添加断点时,StandardOutput表示它没有重定向或者进程​​尚未启动。

2 个答案:

答案 0 :(得分:4)

您需要设置RedirectStandardOutput,而不是RedirectStandardError (另外,确保该过程真正写入标准输出而非标准错误)

答案 1 :(得分:0)

你试过这个吗?

// This is the code for the base process
        Process myProcess = new Process();
        // Start a new instance of this program but specify the 'spawned' version.
        ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(args[0], "spawn");
        myProcessStartInfo.UseShellExecute = false;
        myProcessStartInfo.RedirectStandardOutput = true;
        myProcess.StartInfo = myProcessStartInfo;
        myProcess.Start();
        StreamReader myStreamReader = myProcess.StandardOutput;
        // Read the standard output of the spawned process. 
        string myString = myStreamReader.ReadLine();
        Console.WriteLine(myString);

        myProcess.WaitForExit();
        myProcess.Close();

来源:MSDN