読者です 読者をやめる 読者になる 読者になる

【WSH】アプリケーションを再起動する

VBScript JScript

VBScript

JaneXenoのコマンドに仕込んで、Detour2chを再起動するために書いたコード。しばらく使っているとメモリを食っていることがよくあるので、メモリを解放するために気軽に再起動できれば良いなと。JaneXenoから単純にDetour2chを起動することも出来るように、起動していれば再起動、していなければ起動する条件分岐を入れています。パスとプロセス名の部分を書き換えれば、何のアプリケーションにでも使えるはず。

Option Explicit

Dim app
Dim WshShell
Dim Exec
Dim Process

app = """E:\Portable Soft\Detour2ch\Detour2ch.exe"""
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Exec = WshShell.Exec(app)

If Exec.Status = 0 Then
	Call Kill
	Call Wait
End If

WshShell.Run app

Set WshShell = Nothing
Set Exec = Nothing

Sub Kill()
	For Each Process in GetObject("winmgmts:\\.\root\cimv2").ExecQuery("SELECT * FROM Win32_Process WHERE NAME='Detour2ch.exe'")
		Process.Terminate
	Next
End Sub

Sub Wait()
	Do While Exec.Status = 0
		WScript.Sleep 100
	Loop
End Sub

JScript

上のコードのJScript版。

var app = "\"E:\\Portable Soft\\Detour2ch\\Detour2ch.exe\"";
var WshShell = new ActiveXObject("WScript.Shell");
var Exec = WshShell.Exec(app);

if (Exec.Status == 0) {
	Kill();
	Wait();
}

WshShell.Run(app);

function Kill() {
	for (var e = new Enumerator(GetObject("winmgmts:\\\\.\\root\\cimv2").ExecQuery("SELECT * FROM Win32_Process WHERE NAME = 'Detour2ch.exe'")); !e.atEnd(); e.moveNext()) {
		var p = e.item();
		p.Terminate();
	}
}

function Wait() {
	while (Exec.Status == 0) {
		WScript.Sleep(100);
	}
}