重複の可能性:
コマンド プロンプトの出力が空の文字列として読み取られる
コードがグルーヴィーなタンを実行できるようになる前に、少なくとも 1 回は実行する必要があるコマンド ライン プログラムがあります。だから私はProcess
それを実行するために使用します。これはうまくいくようです。
私の問題は、プログラムが完了するときにプログラムが何を言っているのかを確認できるようにしたいという事実にあります。場合によっては、続行する前にユーザーの介入が必要なエラーが返されることがあります。紙の上では、これは些細なことのように思えます。悲しいことに、私のコード (以下) は機能していないようです:
Process p = new Process();
ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = String.Format("/C adb forward tcp:{0} tcp:5574",port.ToString());
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
p.StartInfo = startInfo;
p.Start();
string adbResponse = p.StandardOutput.ReadToEnd();
p.WaitForExit();
if (adbResponse.Contains("error"))
{
// Device not connected - complain loudly
}
自分で作成した CMD ウィンドウでこれを実行しようとすると、エラーという単語を含む応答を確実に誘導できます。(具体的には何かを抜くことによって。)ただし、同じ条件下では、adbResponse
文字列は空のままです。私は何が欠けていますか?