.net中如何获取被调用程序的执行结果
现在我在一个工程中需要调用一个控制台应用程序(例如是:xx.exe),现在我的问题是我先调用完了之后如何获取该exe程序的执行结果(该exe程序的输出是一些在命令行的字符)。
------解决方案--------------------
源程序
using System;
using System.Text;
using System.Diagnostics;
namespace Wuya.GetDosCommandOutput
{
/// <summary>
/// DOS命令输出类
/// </summary>
class DosCommandOutput
{
 /// <summary>
 /// 执行DOS命令,返回DOS命令的输出
 /// </summary>
 /// <param name="dosCommand">dos命令</param>
 /// <returns>返回输出,如果发生异常,返回空字符串</returns>
 public static string Execute(string dosCommand)
 {
  return Execute(dosCommand, 60 * 1000);
 }
 /// <summary>
 /// 执行DOS命令,返回DOS命令的输出
 /// </summary>
 /// <param name="dosCommand">dos命令</param>
 /// <param name="milliseconds">等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待</param>
 /// <returns>返回输出,如果发生异常,返回空字符串</returns>
 public static string Execute(string dosCommand, int milliseconds)
 {
  string output = "";     //输出字符串
  if (dosCommand != null && dosCommand != "")
  {
   Process process = new Process();     //创建进程对象
   ProcessStartInfo startInfo = new ProcessStartInfo();
   startInfo.FileName = "cmd.exe";      //设定需要执行的命令
   startInfo.Arguments = "/C " + dosCommand;   //设定参数,其中的“/C”表示执行完命令后马上退出
   startInfo.UseShellExecute = false;     //不使用系统外壳程序启动
   startInfo.RedirectStandardInput = false;   //不重定向输入
   startInfo.RedirectStandardOutput = true;   //重定向输出
   startInfo.CreateNoWindow = true;     //不创建窗口
   process.StartInfo = startInfo;
   try
   {
    if (process.Start())       //开始进程
    {
     if (milliseconds == 0)
      process.WaitForExit();     //这里无限等待进程结束
     else
      process.WaitForExit(milliseconds);  //这里等待进程结束,等待时间为指定的毫秒
     output = process.StandardOutput.ReadToEnd();//读取进程的输出
    }
   }
   catch
   {
   }
   finally
   {
    if (process != null)
     process.Close();
   }
  }
  return output;
 }
}
}
使用示例
txtResult.Text=DosCommandOutput.Execute(txtCommand.Text);
参考地址:http://www.cnblogs.com/HurYun/archive/2006/09/20/509280.html