2010-12-13 17 views
13

他のコンソールアプリケーションをWinformsアプリケーションから起動する方法を教えてもらえますが、(A)画面にコンソールウィンドウを表示せず、(B)応用?現在、私は次のようなものを持っている:私はfalseにRedirectStandardOutputを設定した場合、予想通り、その後、コンソールアプリケーションが隠されているC#:外部コンソールプログラムを隠しファイルとして実行する

Process SomeProgram = new Process(); 
    SomeProgram.StartInfo.FileName = @"c:\foo.exe"; 
    SomeProgram.StartInfo.Arguments = "bar"; 
    SomeProgram.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    SomeProgram.StartInfo.UseShellExecute = false; 
    SomeProgram.StartInfo.RedirectStandardOutput = true; 
    SomeProgram.Start(); 
    SomeProgram.WaitForExit(); 
    string SomeProgramOutput = SomeProgram.StandardOutput.ReadToEnd(); 

が、私は、標準出力テキストを取得することはできません。しかし、RedirectStandardOutputをtrueに設定するとすぐに、ウィンドウは非表示になりますが、プログラムの出力を取得できます。

私は、コンソールアプリケーションを非表示にする方法を知っています。私はプログラムの出力を取得する方法を知っていますが、どうすれば両方を行うことができますか?

多くのTIA

+0

現在の解決策の問題は何ですか? – codymanix

+0

上記の解決方法では、コンソールアプリケーションの出力が表示されますが、ウィンドウは表示されません。標準出力を取得するためのコードを削除すると、* IS *ウィンドウが非表示になります。ウィンドウを非表示にしてAND *を標準出力にします。 – JamesPD

答えて

33

あなたはあなたのケースでに設定する必要がありCreateNoWindowプロパティが欠落しています。

+0

ああ、多くのおかげでステファン、それはまさに私が探していたものです。 – JamesPD

+4

@JamesPD Stefanの答えがあなたの問題を解決した答えだったら、あなたは彼に報いることができ、彼の答えを受け入れることでそれをマークすることができます。 –

0

私はそれはあなたを助けると思う:

System.Diagnostics.Process pProcess = new System.Diagnostics.Process(); 
pProcess.StartInfo.FileName = @"C:\Users\Vitor\ConsoleApplication1.exe"; 
pProcess.StartInfo.Arguments = "olaa"; //argument 
pProcess.StartInfo.UseShellExecute = false; 
pProcess.StartInfo.RedirectStandardOutput = true; 
pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
pProcess.StartInfo.CreateNoWindow = true; //not diplay a windows 
pProcess.Start(); 
string output = pProcess.StandardOutput.ReadToEnd(); //The output result 
pProcess.WaitForExit(); 
関連する問題