为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨魅力 2019-07-15 15:38:26
将控制台输出重定向到单独程序中的文本框我正在开发一个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);     }
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

您可以使用以下代码

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


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 700 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信