Делается все через переадресацию потока вывода в String
public class CommandHelpers
{
public CommandHelpers()
{
Invisible = true; // При переадресации утилита должна быть скрыта
}
public bool Invisible { get; set; }
private Process CreateProcess(string commandName, IEnumerable<string> paramsList, bool output = false)
{
string paramString = paramsList.Aggregate<string, string>(null,
(current, param) => current + " " + param);
return new Process
{
StartInfo =
{
FileName = commandName, // полный путь до инстансыруемого приложения
Arguments = paramString, // сюда передаются аргументы командной строки
UseShellExecute = output ? !output : !Invisible, // Параметр отвечает за фоновое выполнение
RedirectStandardOutput = output // Параметр отвечает за переадресацию
}
};
}
/// <summary>
/// Returns result of command execution
/// </summary>
/// <param name="commandName">Command name only</param>
/// <param name="paramsList">Params and keys for command</param>
/// <returns></returns>
public string GetResult(string commandName, IEnumerable<string> paramsList)
{
var bufer = new StringBuilder();
using (var proc = CreateProcess(commandName, paramsList, true))
{
proc.Start(); // инстансыруемся
while (!proc.StandardOutput.EndOfStream)
{
bufer.AppendLine(proc.StandardOutput.ReadLine()); // пишем в буфер
}
}
return bufer.ToString();
}
}