LoginSignup
4
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-07-21

はじめに

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

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

環境について

今回使用した環境です。
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ファイルをダブルクリックすると実行されます。

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

img3.PNG

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2