Marumaru's TinyPlaza
(2011.06.14)(tips)WSHによるプロセスの二重起動防止スクリプト
覚書用
スケジューラソフトを二重起動してしまって予定を上書きして困る事が多かった為、二重起動防止のスクリプトをWHSで作ってみました。
WSHってタスクマネージャの起動プロセス一覧なんて拾えるんだ……。
-
特定のプロセスが未起動なら指定のプログラムを実行するスクリプト(二重起動防止)
- 貼りつけて、拡張子をvbsで実行。(起動するプログラムと同じフォルダに置くのが望ましい)
- 起動プログラムのショート代わりにこのスクリプトを使うと便利かもしれない。
Option Explicit
On Error Resume Next
Const ZERO = 0
Const ERR_MSG_ALREADY_STARTED = "このアプリケーションは既に起動されています。"
Dim objProcessList
Dim objProcess
Dim objWshShell
Dim strProcessName
Dim strExecuteCmd
Dim isAlreadyStarted
'起動状態を確認したいプロセス名
strProcessName = "(タスクマネージャに表示されるプロセス名)"
'プロセスが未起動状態の際に実行するファイル(フルパス)
strExecuteCmd = "(起動するファイル名)"
isAlreadyStarted = false
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objProcessList = GetObject("winmgmts:").InstancesOf("win32_process")
For Each objProcess In objProcessList
If StrComp(LCase(objProcess.Name),strProcessName,vbTextCompare) = ZERO Then
If Err.Number = ZERO Then
isAlreadyStarted = true
Exit For
Else
WScript.Echo Err.Description
End If
End If
Next
If isAlreadyStarted Then
WScript.Echo ERR_MSG_ALREADY_STARTED
Else
objWshShell.Run strExecuteCmd
End If
Set objProcessList = Nothing
Set objWshShell = Nothing