
プログラムから起動させたアプリケーションが終了するのを待つにはどうしたらいいですか?



ProcessクラスのExitedイベントを利用することで、終了を待つことができます。
起動したプロセスの終了を待つ方法
Windowsアプリケーションで外部アプリケーションを起動し、そのアプリケーションが終了するまで待つには、ProcessクラスのExitedイベントを使用します。
Exitedイベントハンドラーは、起動したプロセスが終了したときに実行されるメソッドを設定しておくことで、起動したアプリケーションの終了を待つことができます。
Processクラスを使用することで、外部アプリケーションの起動や終了を管理することができます。また、Exitedイベントハンドラーを使用することで、起動したアプリケーションの終了ステータスを取得することもできます。
using System;
using System.Diagnostics;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
// メモ帳を起動する
Process process = Process.Start("notepad.exe");
// メモ帳が終了するまで待つ
process.WaitForExit();
// 終了ステータスを表示する
Console.WriteLine("Exit code: " + process.ExitCode);
}
}
}Imports System
Imports System.Diagnostics
Module Module1
Sub Main()
' メモ帳を起動する
Dim process As Process = Process.Start("notepad.exe")
' メモ帳が終了するまで待つ
process.WaitForExit()
' 終了ステータスを表示する
Console.WriteLine("Exit code: " & process.ExitCode)
End Sub
End Module 上記のサンプルでは、Process.Startメソッドを使用してメモ帳を起動します。
次に、WaitForExitメソッドを使用して、起動したメモ帳が終了するまで待ちます。最後に、ExitCodeプロパティを使用して、終了ステータスを表示しています。
既に起動しているアプリケーションの名称から終了を待つ方法
Process.GetProcessesByNameメソッドを使用して、プロセス名を指定してすでに起動しているプロセスを取得することもできます。
Process.GetProcessesByName(“プログラム名称”)
// プロセス名を指定して、すでに起動しているプロセスを取得する
Process[] processes = Process.GetProcessesByName("notepad");
// プロセスが見つかった場合
if (processes.Length > 0)
{
// 最初に見つかったプロセスを取得する
Process process = processes[0];
// プロセスが終了するまで待つ
process.WaitForExit();
// 終了ステータスを表示する
Console.WriteLine("Exit code: " + process.ExitCode);
}Sub Main()
' プロセス名を指定して、すでに起動しているプロセスを取得する
Dim processes As Process() = Process.GetProcessesByName("notepad")
' プロセスが見つかった場合
If processes.Length > 0 Then
' 最初に見つかったプロセスを取得する
Dim process As Process = processes(0)
' プロセスが終了するまで待つ
process.WaitForExit()
' 終了ステータスを表示する
Console.WriteLine("Exit code: " & process.ExitCode)
End If
End Sub上記のサンプルでは、Process.GetProcessesByNameメソッドを使用して、プロセス名を指定してすでに起動しているプロセスを取得し、次にWaitForExitメソッドを使用して、取得したプロセスが終了するまで待ちます。
最後に、ExitCodeプロパティを使用して、終了ステータスを表示しています。

