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




<(2011.06.14)(tips)DOSバッチで古いバックアップファイルを削除する方法 (2011.06.15)そうだ 京都、行こう。>