Back to Top

プログラムの覚書

Category: VB.NET

VB.NET

VB.NET起動した外部アプリケーションを終了する

外部アプリケーションを強制終了する

System.Diagnostics.Processクラスで起動したプログラムを、呼び出し側から強制終了する方法を説明します。
強制終了にはKillメソッドを使用します。

Killメソッドによる強制終了

'アプリケーションを起動して、Processのインスタンスを取得する
Dim hPros As System.Diagnostics.Process = System.Diagnostics.Process.Start("Notepad")

'3秒ほど待機する
System.Threading.Thread.Sleep(3000)

'プロセスを強制終了する
hPros.Kill()

' 不要になった時点で破棄する
hPros.Close()
hPros.Dispose()

 

外部アプリケーションのメインウィンドウを閉じて終了する

System.Diagnostics.Processクラスで起動したプログラムを、呼び出し側から終了する方法を説明します。
アプリケーションを終了させるにはCloseMainWindowメソッドで、クローズメッセージを送信します。
CloseMainWindowメソッドは失敗した時にFalseを返しますので、失敗した際もは、Killメソッドで強制終了を行います。

CloseMainWindowメソッドで終了する

'アプリケーションを起動して、Processのインスタンスを取得する
Dim hPros As System.Diagnostics.Process = System.Diagnostics.Process.Start("Notepad")

'3秒ほど待機する
System.Threading.Thread.Sleep(3000)

'クローズメッセージを送信する
If hPros.CloseMainWindow() = False Then
    hPros.Kill()         '終了しなかった場合は強制終了する
End If

' 不要になった時点で破棄する
hPros.Close()
hPros.Dispose()

 

VB.NET外部アプリケーションを起動して待つ

外部アプリケーションが起動して終了するまで待つ

System.Diagnostics.Processクラスで起動したアプリケーションを、終了するまで待機させる方法を説明します。
プロセスのインスタンスのWaitForExitメソッドを使用します。
WaitForExitメソッドを実行して制御が返るまでは、呼び出し側のプログラムは待ち状態で応答しなくなります。

WaitForExitメソッドによる待ち

'アプリケーションを起動して、Processのインスタンスを取得する
Dim hPros As System.Diagnostics.Process = System.Diagnostics.Process.Start("Notepad")

'終了するまで待機する
hPros.WaitForExit()

'不要になった時点で破棄する
hPros.Close()
hPros.Dispose()

 

外部アプリケーションを起動してアイドル状態になるまで待つ

System.Diagnostics.Processクラスで起動したプログラムを、アイドル状態になるまで待機させる方法を説明します。
プロセスのインスタンスの、WaitForInputIdleメソッドを使用します。
WaitForInputIdle メソッドを実行して制御が帰るまでは、呼び出し側のプログラムは待ち状態で応答しなくなります。

WaitForInputIdleメソッドによる待ち

'アプリケーションを起動して、Processのインスタンスを取得する
Dim hPros As System.Diagnostics.Process = System.Diagnostics.Process.Start("Notepad", "C:\work\myfile.txt")

' アイドル状態になるまで待機する
hPros.WaitForInputIdle()

'不要になった時点で破棄する
hPros.Close()
hPros.Dispose()

・上記のサンプルは起動に時間のかかるファイルを指定してみて下さい