将控制台输出重定向到单独程序中的文本框

将控制台输出重定向到单独程序中的文本框

我正在开发一个Windows窗体应用程序,它要求我调用一个单独的程序来执行任务。该程序是一个控制台应用程序,我需要将标准输出从控制台重定向到我的程序中的文本框。

从我的应用程序执行程序没有问题,但我不知道如何将输出重定向到我的应用程序。当程序使用事件运行时,我需要捕获输出。

控制台程序并不意味着停止运行,直到我的应用程序停止,并且文本在任意间隔内不断变化。我试图做的是简单地将控制台的输出挂钩,以触发一个事件处理程序,然后可以使用该处理程序来更新TextBox。

我使用C#编写程序,并使用.NET框架进行开发。原始应用程序不是.NET程序。

编辑:下面是我想要做的事情的示例代码。在我的最后一个应用程序中,我将用代码替换Console.WriteLine,以更新文本框。我试图在事件处理程序中设置一个断点,但它甚至没有到达。

    void Method()
    {
        var p = new Process();
        var path = @"C:\ConsoleApp.exe";

        p.StartInfo.FileName = path;
        p.StartInfo.UseShellExecute = false;
        p.OutputDataReceived += p_OutputDataReceived;

        p.Start();
    }

    static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        Console.WriteLine(">>> {0}", e.Data);
    }


杨魅力
浏览 690回答 3
3回答

有只小跳蛙

您可以使用以下代码        MemoryStream mem = new MemoryStream(1000);         StreamWriter writer = new StreamWriter(mem);         Console.SetOut(writer);         Assembly assembly = Assembly.LoadFrom(@"C:\ConsoleApp.exe");         assembly.EntryPoint.Invoke(null, null);         writer.Close();         string s = Encoding.Default.GetString(mem.ToArray());         mem.Close();
打开App,查看更多内容
随时随地看视频慕课网APP