vbaでプロセスが実行中かどうかを判別する。
WindowsAPIのFindWindowと異なり、タスクトレイ常駐タイプ(Window名が出ないプログラム)にも使える。
Sub Test()
If IsProcessRunning("WowShot2.exe") Then
MsgBox "WowShot2.exe は起動中です"
Else
MsgBox "WowShot2.exe は起動していません"
End If
End Sub
Function IsProcessRunning(processName As String) As Boolean
Dim objWMI As Object
Dim colProcess As Object
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set colProcess = objWMI.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name='" & processName & "'")
IsProcessRunning = (colProcess.Count > 0)
End Function
Sub RunWowShot2()
If Not IsProcessRunning("WowShot2.exe") Then
Shell "C:\path\WowShot2.exe"
End If
End Sub