#はじめに
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
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ファイルをダブルクリックすると実行されます。
実行後は、確認および終了したプロセスについてのメッセージが表示されます。