c# 捕获已启动进程的控制台输出

先启动一个exe,用GetProcesses();捕获到,传给一个新建的process实例,用BeginOutputReadLine();打印输出,显示未重定向数据流

Process.Start("E:1\\1.exe");
            Process[] jincheng = Process.GetProcesses();
            for(int i=0;i<jincheng.Length;i++)
            {
                if (jincheng[i].ProcessName == "1")
                {
                    Process jicheng1 = jincheng[i]; 
                    jicheng1.StartInfo.RedirectStandardOutput = true;
                    jicheng1.StartInfo.UseShellExecute = false;
                    jicheng1.OutputDataReceived += Process_OutputDataReceived;
                    jicheng1.BeginOutputReadLine();
                    break;
                }
            }

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = @"E:\1\1.exe";

        Process process = new Process();
        process.StartInfo = startInfo;
        process.OutputDataReceived += Process_OutputDataReceived;

        process.Start();
        process.BeginOutputReadLine();

        Console.ReadLine();
    }

    private static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        if (!string.IsNullOrEmpty(e.Data))
        {
            Console.WriteLine(e.Data);
        }
    }
}

using System;
using System.Diagnostics;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Process process = new Process();
            process.StartInfo.FileName = "E:\\1\\1.exe";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.OutputDataReceived += Process_OutputDataReceived;
            process.Start();
            process.BeginOutputReadLine();

            Console.WriteLine("点击任意键退出");
            Console.ReadKey();
        }

        static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            Console.WriteLine(e.Data);
        }
    }
}

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢