將控制臺輸出重定向到單獨(dú)程序中的文本框我正在開發(fā)一個(gè)Windows窗體應(yīng)用程序,它要求我調(diào)用一個(gè)單獨(dú)的程序來執(zhí)行任務(wù)。該程序是一個(gè)控制臺應(yīng)用程序,我需要將標(biāo)準(zhǔn)輸出從控制臺重定向到我的程序中的文本框。從我的應(yīng)用程序執(zhí)行程序沒有問題,但我不知道如何將輸出重定向到我的應(yīng)用程序。當(dāng)程序使用事件運(yùn)行時(shí),我需要捕獲輸出。控制臺程序并不意味著停止運(yùn)行,直到我的應(yīng)用程序停止,并且文本在任意間隔內(nèi)不斷變化。我試圖做的是簡單地將控制臺的輸出掛鉤,以觸發(fā)一個(gè)事件處理程序,然后可以使用該處理程序來更新TextBox。我使用C#編寫程序,并使用.NET框架進(jìn)行開發(fā)。原始應(yīng)用程序不是.NET程序。編輯:下面是我想要做的事情的示例代碼。在我的最后一個(gè)應(yīng)用程序中,我將用代碼替換Console.WriteLine,以更新文本框。我試圖在事件處理程序中設(shè)置一個(gè)斷點(diǎn),但它甚至沒有到達(dá)。 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貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
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();
- 3 回答
- 0 關(guān)注
- 771 瀏覽
添加回答
舉報(bào)
0/150
提交
取消