コマンドラインアプリケーションを使用してビデオをエンコードします。完全コマンドラインからの応答を再解析する
%:34%
をこれはメディアエンコードのように更新されたアプリが言う行を返します。プロセスクラスを使用して標準出力をチェックし、メイン実行スクリプトに渡す方法はありますか?私はプロセスを開始し、標準出力をstringbuilderに書き込むクラスを持っていますが、それをチェックし続ける方法を知りたいのです。これは、あなたがProcess.OutputDataRecieved
イベントの発火を開始することProcess.BeginOutputReadLine
を使用することができます...
public static Dictionary<string, string> StartProcess(string exePathArg, string argumentsArg, int timeToWaitForProcessToExit)
{
//the dictionary with the
Dictionary<string, string> retDirects = new Dictionary<string, string>();
using (Process p = new Process())
{
p.StartInfo.FileName = exePathArg;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.Arguments = argumentsArg;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
try
{
p.Start();
p.WaitForExit(timeToWaitForProcessToExit);
int exitCode;
try
{
exitCode = p.ExitCode;
StreamReader standardOutput = p.StandardOutput;
StreamReader standardError = p.StandardError;
retDirects.Add("StandardOutput", standardOutput.ReadToEnd());
retDirects.Add("StandardError", standardError.ReadToEnd());
}
catch { }
}
catch { }
finally
{
try
{
p.Kill();
p.CloseMainWindow();
}
catch { }
}
}
return retDirects;
}
新しいデータが到着すると "CalledBack"になるStartInfoの一部としてデリゲートを渡すことができます。 – Jodrell