C# 调用外部程序,并获取输出和错误信息

时间:2023-03-08 21:04:32
C# 调用外部程序,并获取输出和错误信息
1. 同步模式
public void exec(string exePath, string parameters)
{
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo();
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
psi.FileName = exePath;
psi.Arguments = parameters;
System.Diagnostics.Process process = System.Diagnostics.Process.Start(psi);
System.IO.StreamReader outputStreamReader = process.StandardOutput;
System.IO.StreamReader errStreamReader = process.StandardError;
process.WaitForExit(2000);
if (process.HasExited)
{
string output = outputStreamReader.ReadToEnd();
string error = errStreamReader.ReadToEnd();
MessageBox.Show(output);
MessageBox.Show(error);
} }

2.异步模式

 public void exec(string exePath, string parameters)
{
Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = exePath;
process.StartInfo.Arguments = parameters;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.BeginOutputReadLine();
process.OutputDataReceived += new DataReceivedEventHandler(processOutputDataReceived);
} private void processOutputDataReceived(object sender, DataReceivedEventArgs e)
{
MessageBox.Show(e.Data);
}