C#コンソールアプリケーションがあります(A)。他のコンソールアプリ(B)をアプリA内から(同期的に)実行し、Bが同じコマンドウィンドウを使用するようにします。 Bが存在する場合、AはBの終了コードを読み取れるはずです。
どうやってするか?同じコマンドウィンドウでこの他のアプリを実行する方法について、この小さなヒントだけが必要です。
Process.Start
を使用して、他のコンソールアプリケーションを起動できます。
ProcessStartInfo.RedirectOutput
をtrue
に設定し、 UseShellExecute
をfalse
に設定してプロセスを構築する必要があります自分で出力を利用できるようにするため。
次に、プロセスで StandardOutput.ReadToEnd
を使用して出力を読み取ることができます。
Process.Start()
呼び出しを使用して別のプロセスを開始できます。 ここの例 は、他のプロセスからの出力を読み取り、それが完了するのを待つ方法を示しています。
Process.Startを使用して別のプロセスを開始できます。コンソールアプリであるかどうかは問題ではありません。アプリがすでにコンソールウィンドウで実行されている場合、新しく生成されたアプリはそのコンソールウィンドウも使用します。
var proc = Process.Start( "...path to second app" );
proc.WaitForExit();
var exitCode = proc.ExitCode;
セカンダリアプリの起動方法に影響を与える可能性のあるさまざまな小さなニュアンスがあるため、必ずProcessクラスのドキュメントを準備してください。
次の設定を呼び出すことで、同じコマンドウィンドウの一部としてプログラム「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」の名前です。お役に立てれば。
参照に含め、プログラムクラスのrunメソッドで呼び出されるメソッドを呼び出すことで開始することにより、古いコンソールアプリを新しいコンソールアプリで「ラップ」できます。
System.Diagnostics.ProcessStartInfo に入力して Process.Start に渡します
結果のプロセスをWaitForExit
し、プロセスのExitCode
プロパティを使用して戻り値を確認できます。