将控制台输出重定向到单独程序中的文本框我正在开发一个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贡献1951条经验 获得超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();
添加回答
举报
0/150
提交
取消