C#程序中调用外部程序后,需要将外部程序的输出显示在当前控制台
WinCmdHelper类中定义RunCmdExe方法
/// <summary>
/// 执行外部文件
/// 将外部文件输出显示在当前控制台
/// </summary>
/// <param name="command"></param>
public bool RunCmdExe(string command)
{
try
{
// 创建一个 ProcessStartInfo 对象,用于设置要执行的命令行命令
ProcessStartInfo _pro = new ProcessStartInfo();
_pro.CreateNoWindow = true;
_pro.UseShellExecute = false;
_pro.RedirectStandardOutput = true;
_pro.RedirectStandardInput = true;
_pro.FileName = command;
// 创建一个 Process 对象,并使用 ProcessStartInfo 来设置其属性
using (Process mypro = Process.Start(_pro))
{
// ps:含pause指令的外部程序需要按下回车键才能启动
mypro.StandardInput.WriteLine(); // 自动输入回车按键
using (StreamReader reader = new StreamReader(mypro.StandardOutput.BaseStream, Encoding.UTF8)) // 按指定编码,读取Process的输出流
{
_output = reader.ReadToEnd();
mypro.WaitForExit();
}
}
}
catch (Exception ex)
{
_output = "Error:" + ex.Message;
return false;
}
Console.WriteLine(_output);
return true;
}
主程序中调用RunCmdExe方法
// 其他代码
WinCmdHelper cmdhelper = new WinCmdHelper();
cmdhelper.RunCmdExe("你的外部程序路径");
// 其他代码
实际效果