Я пытаюсь написать внешнее приложение, которое использует существующие инструменты (которые запускаются из пакетных файлов) для создания загрузочного носителя для Ryzen Hackintosh.Я не хочу изменять существующие инструменты, так как мне придется вручную обновлять интерфейс каждый раз, когда обновляются существующие инструменты.Я могу запускать командные файлы самостоятельно с помощью «Process.Start (file)»;но для пакетных файлов требуются входные данные, и я хотел бы вводить их программно, а не давать пользователю инструкции о том, что делать, когда появляется окно cmd.
Я пробовал этот стиль запускафайл с cmd в качестве нового процесса и перенаправлением ввода + вывода ( Выполнение пакетного файла в C # ), но это, похоже, не запускает cmd вообще, и жестко блокирует программу без сообщений об ошибках.
Я также пытался использовать AllocConsole / FreeConsole.
static void ExecuteCommand(string command, string input)
{
Console.WriteLine("Test if this thing works");
Process pro = new Process();
pro.StartInfo.FileName = command;
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput = true;
pro.Start();
string result = pro.StandardOutput.ReadToEnd();
Console.WriteLine(result);
}
Я ожидаю, что пакетный файл запустится, затем выведет содержимое вывода на консоль, но вместо этого не появится окно,командный файл не запускается, и программа зависает без сообщений об ошибках.Я также использовал try / catch, чтобы увидеть ошибки, но их не было.