2016-12-28 15 views
2

私は、C#フォームアプリケーションからcmdコマンドを実行するコードを記述しました。今私はwinformでlableにcmdの出力を取得したい。私はコードを書いた。しかし、それは誤り以下の私を与えているc#でlableにcmdコマンド出力を取得するには

Screenshot of the Error

「System.InvalidOperationException」種類の未処理の例外が発生したSystem.dllの中 追加情報:StandardOutがリダイレクトされていないか、プロセスがまだ開始されていません。

どのように修正するのですか?これは私の元のコードです。

private void button1_Click(object sender, EventArgs e) 
{ 
    System.Diagnostics.Process process = new System.Diagnostics.Process(); 
    System.Diagnostics.ProcessStartInfo startiNFO = new System.Diagnostics.ProcessStartInfo(); 

    startiNFO.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
    startiNFO.FileName = "cmd.exe"; 
    startiNFO.Arguments = "/C ipconfig"; 
    startiNFO.UseShellExecute = false; 

    process.StartInfo.RedirectStandardOutput = true; 
    process.StartInfo.RedirectStandardInput = true; 

    process.StartInfo = startiNFO; 

    process.Start(); 

    string outp = process.StandardOutput.ReadToEnd(); 
    process.WaitForExit(); 

    MessageBox.Show(outp); 
} 

答えて

2

代わりのprocess.WaitForExit();私がます。Label1.TextにQを割り当てることができ、あなたの関数の完全なコードは、この

private void button1_Click(object sender, EventArgs e) 
{ 
    System.Diagnostics.Process process = new System.Diagnostics.Process(); 
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
    process.StartInfo.FileName = "cmd.exe"; 
    process.StartInfo.Arguments = "/C ipconfig"; 
    process.StartInfo.UseShellExecute = false; 
    process.StartInfo.CreateNoWindow = true; 
    process.StartInfo.RedirectStandardOutput = true; 
    process.StartInfo.RedirectStandardInput = true; 
    process.Start(); 
    string q = ""; 
    while(!process.HasExited) 
    { 
     q += process.StandardOutput.ReadToEnd(); 
    } 
    label1.text = q; 
    MessageBox.Show(q); 
} 
+0

ようになり、この

ような何か? –

+0

文字列outp = process.StandardOutput.ReadToEnd();削除する必要がありますか? –

+0

OK。ありがとう。私はそれを試し、あなたに返信します。 –

関連する問題