web-dev-qa-db-fra.com

Exécuter l'application console à partir d'une autre application console

J'ai une application console C # (A). Je veux exécuter une autre application de console (B) à partir de l'application A (de manière synchrone) de telle manière que B utilise la même fenêtre de commande. Lorsque B existe, A devrait pouvoir lire le code de sortie de B.

Comment faire ça? Je n'ai besoin que de ce petit conseil sur la façon d'exécuter cette autre application dans la même fenêtre cmd.

35
Dawid Ohia

Vous pouvez utiliser Process.Start pour démarrer l'autre application console.

Vous devrez construire le processus avec ProcessStartInfo.RedirectOutput défini sur true et UseShellExecute défini sur false afin de pouvoir utiliser vous-même la sortie.

Vous pouvez ensuite lire la sortie en utilisant StandardOutput.ReadToEnd sur le processus.

35
Oded

Vous pouvez démarrer un autre processus à l'aide de l'appel Process.Start(). Les exemples ici montrent comment lire la sortie d'un autre processus et attendre qu'il se termine.

9
Brian Rasmussen

Vous pouvez démarrer un autre processus avec Process.Start - peu importe qu'il s'agisse d'une application console ou non. Si votre application s'exécute déjà dans une fenêtre de console, l'application nouvellement générée utilisera également cette fenêtre de console.

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

Assurez-vous de préparer les documents sur la classe Process car il existe une variété de petites nuances qui peuvent affecter la façon dont votre application secondaire est lancée.

4
Paul Alexander

J'ai pu exécuter le programme "B" dans le cadre de la même fenêtre de commande en appelant la configuration suivante:

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;

de cette façon, les deux programmes s'exécutent de façon sournoise comme s'ils étaient un seul programme. 'nameProgramB' est le nom pour programmer 'B'. J'espère que cela t'aides.

2
Chesare

vous pouvez "encapsuler" l'ancienne application console avec la nouvelle en l'incluant dans vos références et en la démarrant en appelant la méthode appelée dans la méthode run de la classe de programme

1
sjors miltenburg

Remplissez un System.Diagnostics.ProcessStartInfo et passez-le à Process.Start

Vous pouvez WaitForExit sur le processus résultant et utilisez puis utilisez la propriété ExitCode du processus pour voir la valeur de retour.

1
John Knoeller