我做了一個winform的表單,用API函式SetParent嵌套進去控制臺視窗。
目的是把log的資訊以不同的顏色顯示在控制臺中。
private void btShow_Click(object sender, EventArgs e) {
textBox1.Visible = false;
p = new Process();
p.StartInfo.FileName = "cmd.exe ";
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;//加上這句效果更好
p.Start();
Thread.Sleep(400);//加上,100 如果效果沒有就繼續加大
SetParent(p.MainWindowHandle, panel1.Handle);//panel1.Handle為要顯示外部程式的容器
ShowWindow(p.MainWindowHandle, 3);
}
Console.WriteLine("太厲害了");
結果嵌套控制臺成功了,但是console.writeline的資訊不會在控制臺顯示
求教大神!
uj5u.com熱心網友回復:
運行如圖:
uj5u.com熱心網友回復:
console.writeline是你winform里執行的陳述句吧?想在控制臺輸出應該是要操作一下這個Process物件。
不過我只知道可以在p.ProcessStartInfo里加上運行引數,開始之后就相當于是打開了另外一個行程,不知道寫入命令的話要怎么操作了。
uj5u.com熱心網友回復:
為什么要嵌入CMD呢?你自己顯示在界面上不就行了,格式顏色想怎么控制怎么控制。uj5u.com熱心網友回復:
console 的資訊不會輸出到這個嵌入的命令列中,你啟動的那個 Process 與你的 console 沒半毛錢關系,它只是啟動了一個命令列視窗而已,你沒有把 console 關聯到這個命令列視窗。uj5u.com熱心網友回復:
大哥,你弄個textbox來顯示文本不好嗎?uj5u.com熱心網友回復:
你這個是是cmd視窗 而不是控制臺 所以console。write不會顯示到界面上uj5u.com熱心網友回復:
自己寫一個不香么
uj5u.com熱心網友回復:
你可以把app型別改成控制臺程式然后手動加上winform的參考和視窗創建顯示
這樣程式啟動會自動打開控制臺
這樣你Console.Write就能顯示到控制臺視窗里了
uj5u.com熱心網友回復:
樓上說的其他解決方案,我都做過,沒毛病。什么TextBox啦等等
我現在是想嘗試下行程通信,讓Console的資訊輸入到控制臺上,純屬學習探討。
uj5u.com熱心網友回復:
這樣的控制臺如何嵌入到winform里面?
uj5u.com熱心網友回復:
重定向控制動臺的輸入流就可以了在winform行程操作了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/74833.html
標籤:C#
