現在起動中のプロセスの終了方法についてまとめた
特定のプロセスを終了させるにあたり必要になる手順は以下の通り
Word.Tasksオブジェクトを用いると、現在起動中のプロセスを取得することができる。
また、プロセスを、ウィンドウのタイトル名に基づいて特定することができる。
詳しくは、下記記事参照のこと。
Office TANAKA - 実行中のタスク一覧(非API)
http://officetanaka.net/excel/vba/tips/tips61.htm
ただし、試してみたところ、
この方法では、うまくプロセスを拾えない場合があった。(=動作が不安定)
WMIを用いる。WMIはWindows2000以降から実装された点に注意。
プロセスを、実行ファイル名に基づいて特定することができる。
以下に、サブルーチンの形にまとめたサンプルコードを示す。
Sub TaskTerminate(processName As String) Dim objSet Dim obj Dim Locator Dim Server Set Locator = CreateObject("WbemScripting.SWbemLocator") Set Server = Locator.ConnectServer Set objSet = Server.ExecQuery("Select * From Win32_Process") For Each obj In objSet If obj.Caption = processName Then obj.Terminate End If Next Set objSet = Nothing Set obj = Nothing Set Server = Nothing Set Locator = Nothing End Function
上記サブルーチンの使い方は、以下の通り。
TaskTerminate("notepad.exe") 'メモ帳(notepad.exe)を終了させる場合'
複数のプログラムを連続して終了させる場合、
Waitを入れないとプログラムを終了させられないことがある模様。