StandardInput.WriteLine(str)
を使用して開いているcmd.exeプロセスにコマンドを送信しようとしていますが、コマンドが送信されていないようです。最初に、グローバル変数p(Process p
)でプロセスを開きます。cmd.exeプロセスにコマンドを送信できません
p = new Process()
{
StartInfo = {
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
FileName = @"cmd.exe",
Arguments = "/C" //blank arguments
}
};
p.Start();
p.WaitForExit();
その後、結果をテキストボックスに記録する簡単な方法でコマンドを送信しようとします。
private void runcmd(string command)
{
p.StandardInput.WriteLine(command);
var output = p.StandardOutput.ReadToEnd();
TextBox1.Text = output;
}
今私はDIR
でそれをテストしていますが、var output
はありません出力になり、ヌル、として表示されます。開いているcmd.exeプロセスにコマンドを送信するより良い方法はありますか?
* p.WaitForExit()の前に 'p.StandardOutput.ReadToEnd()' *を呼び出す必要があります。そうしないと、デッドロックが発生します。 [ここ](https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput(v = vs.110).aspx)を参照してください。あなたはデッドロックは言及していませんでしたが、これはあなたの問題かもしれません。 – Quantic
p.WaitForExit()を削除しようとしましたが、引き続き問題が発生しました。 – FyreeW
'Cmd/c'が起動し、CMDを終了します。 –