ConsoleAppLauncher - это библиотека с открытым исходным кодом, специально предназначенная для ответа на этот вопрос. Он захватывает все выходные данные, созданные в консоли, и предоставляет простой интерфейс для запуска и закрытия консольного приложения.
Событие ConsoleOutput запускается каждый раз, когда новая строка записывается консолью в стандартный/вывод ошибки. Строки поставлены в очередь и гарантированно соответствуют порядку вывода.
Также доступен как NuGet package.
Пример вызова, чтобы получить полный консольный вывод:
// Run simplest shell command and return its output.
public static string GetWindowsVersion()
{
return ConsoleApp.Run("cmd", "/c ver").Output.Trim();
}
образца с живой обратной связи:
// Run ping.exe asynchronously and return roundtrip times back to the caller in a callback
public static void PingUrl(string url, Action<string> replyHandler)
{
var regex = new Regex("(time=|Average =)(?<time>.*?ms)", RegexOptions.Compiled);
var app = new ConsoleApp("ping", url);
app.ConsoleOutput += (o, args) =>
{
var match = regex.Match(args.Line);
if (match.Success)
{
var roundtripTime = match.Groups["time"].Value;
replyHandler(roundtripTime);
}
};
app.Run();
}
Возможный дубликат [Процесс.начало: как получить выход?] (http://stackoverflow.com/questions/4291912/process-start-how-to-get-the-output) – 2016-10-28 00:26:34
Пожалуйста, просмотрите даты по обоим вопросам и посмотрите, какой из них - duplicate " – Gripsoft 2017-05-30 16:46:01
« Возможный дубликат »- это способ очистки - чтобы закрыть похожие вопросы и сохранить их с лучшими ответами. Дата не является существенной. См. [Должен ли я голосовать, чтобы закрыть дублирующий вопрос, даже если он намного более новый и имеет более современные ответы?] (// meta.stackexchange.com/q/147643) Если вы согласны с тем, что для этого требуется разъяснение, проголосуйте за [Добавить ссылку пояснения к «Возможный дубликат» автоматизированного комментария] (// meta.stackexchange.com/q/281980) – 2017-05-31 00:12:53