2016-07-19 4 views
0

私はcmd.exe(テスト "DIR"コマンド)から標準を取得しようとしており、テキストボックスに入れています。しかし、私がプロセスを開始するときはいつでも、プログラムはハングします(ボタンは押されません)。C#でハングするプロセスを使用してcmd.exeを呼び出す

private void cmd_test() 
{ 
    Process pr = new Process() 
    { 
     StartInfo = { 
      FileName = "cmd.exe", 
      UseShellExecute = true, 
      CreateNoWindow = true, 
      RedirectStandardOutput = true, 
      RedirectStandardInput = true, 
      RedirectStandardError = true, 
     } 
    }; 

    pr.Start(); 
    pr.StandardInput.WriteLine("DIR"); 
    TextBox1.Text = pr.StandardOutput.ReadToEnd(); 
} 

また、WriteLineの代わりにStartInfoブロックにArguments = "DIR"を試しました。

cmd.exeにコマンドを正しく送信するにはどうすればいいですか?

答えて

1

ここに行く:

using (var p = new Process()) 
    { 
    p.StartInfo.CreateNoWindow = true; 
    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.StartInfo.FileName = "cmd.exe"; 
    p.StartInfo.Arguments = "/C dir"; 
    p.Start(); 
    var output = p.StandardOutput.ReadToEnd(); 
    p.WaitForExit(); 
    richTextBox1.Text = output; 
    } 
+0

は、感謝を働きました!なぜ私のバージョンにぶら下がっていたのか分かりませんか? – FyreeW

+0

"/ C dir" –

+0

も必要です。出力ストリームをリダイレクトするには、UseShellExecuteをfalseに設定する必要があります。詳細はこちらhttps://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.useshellexecute(v=vs.110).aspx – Fred

関連する問題