Запустить консольное приложение из другого консольного приложения
У меня есть консольное приложение С# (A). Я хочу выполнить другое консольное приложение (B) из приложения A (синхронно) таким образом, чтобы B использовал одно и то же окно команд. Когда B существует, A должен иметь возможность читать код выхода B.
Как это сделать? Мне нужен только этот маленький совет о том, как запустить это другое приложение в том же окне cmd.
Ответы
Ответ 1
Вы можете использовать Process.Start
, чтобы запустить другое консольное приложение.
Вам нужно будет построить процесс с ProcessStartInfo.RedirectOutput
, установленным на true
и UseShellExecute
установлен на false
, чтобы использовать выход самостоятельно.
Затем вы можете прочитать результат, используя StandardOutput.ReadToEnd
в процессе.
Ответ 2
Вы можете запустить другой процесс, используя вызов Process.Start()
. Примеры здесь показывают, как читать выходные данные из другого процесса и ждать его завершения.
Ответ 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". Надеюсь, это поможет.