2016-04-19 5 views
1

Windowsフォームアプリケーションからコンソールアプリケーションを開こうとしています。私は以下のコードを使用しています。コードはConsoleアプリケーションを開きますが、何も表示しません(黒い画面のみを表示しています)。しかし、私は正常に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 = .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(); 
関連する問題