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); }