Choregraphe 2.5.5 (win) のプロセス終了スクリプト(vbs)


はじめに

Windows版のChoregraphe2.5.5で開発をしていると、Choregrapeを終了しても関連プロセスがいつまでも残る現象が発生します。タスクマネージャーから1つ1つ終了させるのが大変なので、一括で終了させるスクリプトを作成しました。

特に qilaunch.exe や naoqi-service.exe が残るようです。Choregraphe2.4.3.28では発生していなかったため、Choregraphe2.5.5の問題ではないかと思います。

環境について

今回使用した環境です。
Choregraphe 2.5.5.5 (Win)

注意点

Choregrapheを起動したままこのスクリプトを実行しないでください。
また、実行には十分ご注意をお願いします。

参考

こちらのサイトの情報を参考にさせていただきました。
[VBScript Tips] http://www.whitire.com/vbs/index.html
[プロセスを強制終了する] http://www.whitire.com/vbs/tips0198.html

対象のプロセスについて

対象のプロセスは次の4つです。スクリプトの最初で指定していますので、必要に応じて変更してください。

プロセス名
choregraphe_launcher.exe
naoqi-bin.exe
naoqi-service.exe
qilaunch.exe

vbScript

killchoreg.vbs

Option Explicit

Dim objCheckProcNameList    ' チェックするプロセス名一覧

Set objCheckProcNameList = CreateObject("System.Collections.ArrayList")

objCheckProcNameList.add("choregraphe_launcher.exe")
objCheckProcNameList.add("naoqi-bin.exe")
objCheckProcNameList.add("naoqi-service.exe")
objCheckProcNameList.add("qilaunch.exe")

Dim objProcList     ' プロセス一覧
Set objProcList = GetObject("winmgmts:").InstancesOf("win32_process")

Dim strProcName     ' 終了するプロセス名
Dim objProcess      ' プロセス情報

Dim lngKillNum
ReDim lngKillNum(objCheckProcNameList.Count)

Dim cnt
For cnt = 0 to UBound(lngKillNum)
    lngKillNum(cnt) = 0
Next

For Each objProcess In objProcList
    cnt = 0
    For Each strProcName In objCheckProcNameList
        If LCase(objProcess.Name) = strProcName Then
            objProcess.Terminate
            If Err.Number = 0 Then
                lngKillNum(cnt) = lngKillNum(cnt) + 1
            Else
                WScript.Echo "エラー: " & Err.Description
            End If
        End If
        cnt = cnt + 1
    Next
Next


Dim infoMessage
infoMessage = ""
cnt = 0
For Each strProcName In objCheckProcNameList
    If lngKillNum(cnt) > 0 Then
        infoMessage = infoMessage & strProcName & " を " & lngKillNum(cnt) & " 個強制終了しました。" & vbCrLf
    Else
        infoMessage = infoMessage & strProcName &" は残っていませんでした。" & vbCrLf
    End If
    cnt = cnt + 1
Next

' 終了メッセージ表示
WScript.Echo infoMessage

Set objCheckProcNameList = Nothing
Set objProcList = Nothing

実行方法

上記のスクリプトをメモ帳などで拡張子vbsとして保存してください。
作成したvbsファイルをダブルクリックすると実行されます。

実行後は、確認および終了したプロセスについてのメッセージが表示されます。