Process を使用してバッチ コマンドを呼び出し、実行の出力を読み取ります。出力行を通じて、実行の成功または失敗を分析します。win7 ではすべてが正常に動作しますが、WindowsXP では標準出力から行を読み取ることができません。WindowsXP のコマンド コンソール ウィンドウで手動でバッチ ファイルが正常に動作することを保証します。以下は私のコードです:
//this method is entrance of execution
public bool buildApk()
{
string launch = "\"" + System.Environment.CurrentDirectory + @"\SmartCon\start_up_build" + "\"";
string output = ExecuteAsync(launch);
return output.Contains("SUCCESS");
}
public static string ExecuteAsync(string dosCommand)
{
string output = "";
StringBuilder sbOutput=new StringBuilder ("");
if (dosCommand != null && dosCommand != "")
{
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C " + dosCommand;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
process.StartInfo = startInfo;
try
{
if (process.Start())
{
while (!process.HasExited )
{
string d = process.StandardOutput.ReadLine();//here I read nothing in windowxp, but in win7, all things go well
sbOutput.Append(d);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error:" + ex.Message + "\n" + ex.StackTrace);
}
finally
{
if (process != null)
{
process.Close();
process.Dispose();
process = null;
}
}
}
return sbOutput .ToString ();
}