我尝试了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表示它没有重定向或者进程尚未启动。
答案 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