2016-04-19 104 views
1

我想從我的Windows窗體應用程序中打開控制檯應用程序。我已經使用了下面的代碼。代碼打開控制檯應用程序,但不顯示任何內容(僅顯示黑屏)。但是我能夠使用StandardOutput獲得控制檯輸出。在win窗體中使用C#代碼打開控制檯應用程序

Process proc = new Process(); 
proc.StartInfo.CreateNoWindow = false; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardOutput = true; 
proc.StartInfo.RedirectStandardError = true; 
proc.StartInfo.RedirectStandardInput = true; 
proc.StartInfo.FileName = @"C:\Program Filex86)\ConsoleTool.exe"; 

proc.Start(); 
StreamWriter sw = proc.StandardInput; 
sw.WriteLine("init"); 

txtOutput.Text += proc.StandardOutput.ReadToEnd().Replace("\n", "\r\n"); 

txtOutput.Text += proc.StandardError.ReadToEnd().Replace("\n", "\r\n"); 
proc.WaitForExit(); 

如何獲取在使用代碼打開的控制檯窗口上的顯示?

+0

請檢查您的路徑。它有一個''''。這可能是您獲得黑屏的原因!!!!! 1 –

+2

您正在重定向[StandardOutput](https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput( v = vs.110).aspx),所以它不會在控制檯窗口中顯示任何信息。您將需要手動自己做,請參閱http://stackoverflow.com/q/8787123/479512和http://stackoverflow.com/questions/2547428/net-console-textwriter-that-understands-indent-unindent- indentlevel –

+0

@ Mark有沒有什麼方法可以在控制檯上顯示並在我的win表單應用程序中獲取這些數據? –

回答

1

使用AllocConsole函數打開控制檯窗口,然後通常使用Console.WriteLine或其他控制檯功能!

例子:

[System.Runtime.InteropServices.DllImport("kernel32")] 
extern static void AllocConsole(); 
//.... 
AllocConsole(); 
Console.WriteLine("hello world"); 
Console.ReadKey(); 
相關問題