Необходимо бросить массив - возвращенный массив на самом деле имеет требуемый тип, т.е. myEnum[]
, если Вы просите typeof(myEnum)
:
myEnum[] values = (myEnum[]) Enum.GetValues(typeof(myEnum));
Затем values[0]
и т.д.
Что вам нужно сделать, так это захватить стандартный поток вывода:
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
// instead of p.WaitForExit(), do
string q = "";
while ( ! p.HasExited ) {
q += p.StandardOutput.ReadToEnd();
}
Возможно, вам также потребуется сделать что-то подобное с StandardError
. Затем вы можете делать все, что хотите, с помощью q
.
Это немного привередливо, как я обнаружил в одном из моих вопросов
Как указал Джон Скит, это неразумно с точки зрения производительности использовать такую конкатенацию строк; вместо этого вам следует использовать StringBuilder
:
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
// instead of p.WaitForExit(), do
StringBuilder q = new StringBuilder();
while ( ! p.HasExited ) {
q.Append(p.StandardOutput.ReadToEnd());
}
string r = q.ToString();
Я знаю, что это старый вопрос, но все равно добавлю к нему.
Если все, что вы хотите сделать, это отобразить вывод процесса командной строки, и вы создаете процесс из окна консоли, вам нужно только перенаправить стандартный ввод (да, я знаю, что это звучит неправильно, но работает ).
Итак:
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo(ffmpegPath, myParams);
p.UseShellExecute = false;
p.RedirectStandardInput = true;
p.Start();
p.WaitForExit();
Подойдет.