Подтвердить что ты не робот

Запустить консольное приложение из другого консольного приложения

У меня есть консольное приложение С# (A). Я хочу выполнить другое консольное приложение (B) из приложения A (синхронно) таким образом, чтобы B использовал одно и то же окно команд. Когда B существует, A должен иметь возможность читать код выхода B.

Как это сделать? Мне нужен только этот маленький совет о том, как запустить это другое приложение в том же окне cmd.

4b9b3361

Ответ 1

Вы можете использовать Process.Start, чтобы запустить другое консольное приложение.

Вам нужно будет построить процесс с ProcessStartInfo.RedirectOutput, установленным на true и UseShellExecute установлен на false, чтобы использовать выход самостоятельно.

Затем вы можете прочитать результат, используя StandardOutput.ReadToEnd в процессе.

Ответ 3

Вы можете запустить другой процесс с помощью Process.Start - не имеет значения, является ли это консольным приложением или нет. Если ваше приложение уже запущено в окне консоли, новое созданное приложение также будет использовать это консольное окно.

var proc = Process.Start( "...path to second app" );
proc.WaitForExit();
var exitCode = proc.ExitCode;

Обязательно подготовьте документы в классе Process, так как существует множество небольших нюансов, которые могут повлиять на запуск вашего дополнительного приложения.

Ответ 4

Заполните System.Diagnostics.ProcessStartInfo и передать его Process.Start

Вы можете WaitForExit в результирующем процессе и использовать затем свойство ExitCode для процесса, чтобы увидеть возвращаемое значение.

Ответ 5

вы можете "обернуть" старое консольное приложение новым, включив его в свои ссылки и запустив его, вызывая любой метод, который вызывается в методе запуска класса программы

Ответ 6

Мне удалось запустить программу "B" как часть того же командного окна, вызвав следующую конфигурацию:

ConsoleColor color = Console.ForegroundColor;
ProcessStartInfo startinfo = new ProcessStartInfo(nameProgramB);
startinfo.CreateNoWindow = false;
startinfo.UseShellExecute = false;
Process p = Process.Start(startinfo);
p.WaitForExit();
Console.ForegroundColor = color;

Таким образом, обе программы работают по-разному, как в одной программе. 'nameProgramB' - это название программы "B". Надеюсь, это поможет.