【VBS】タスクに常駐させるVBSを起動/停止する方法

VBS

こんにちは、sysin-jamです。

前回、「定期的にキー入力してスリープや退席中にならないようにする方法」で常駐させるVBSを作成しました。

VBSを常駐させていますが、「常駐を止めたい時」があります。

それはこんな時です。
・集中してずっと端末を使っている(VBSを常駐させる必要がない)
・端末を会社に持っていく(離席中にスリープにならないと気まずい(VBSを常駐させない))

常駐を止めたい時は「タスクから削除」する必要がありますが、毎回タスクマネージャーを起動させるのが面倒なので1クリックでVBS常駐のON/OFFを切り替えるVBSを作成します。

どういう処理にする?

VBSにこだわる必要はないですが、VBS常駐のON/OFFなので一旦VBSで作成します。

こんな感じの前提条件かな。

①常駐させるVBSとは別のVBSファイルを作成します。

②1クリックでVBS常駐のON/OFFを切り替えます。
・VBSがタスクに常駐していない時は起動(ON)
・VBSがタスク常駐中はタスク削除(OFF)

タスクに常駐させるVBSを起動/停止させるには?

タスクの中にVBS(F15_Run.vbs)があれば削除し、なければ起動させます。

Dim objWsh
Dim blnStop
Dim shell
Dim vbsName
Dim messageTime

vbsName = "F15_RunOnOff"
messageTime = 0.6

Set Shell = WScript.CreateObject("WScript.Shell")

'プロセスにF15_Runが存在する場合は削除
for each p in GetObject("winmgmts:{impersonationLevel=impersonate}"). _
    ExecQuery("select * from Win32_Process where CommandLine Like '%wscript.exe%F15_Run.vbs%'")
    p.Terminate
    blnStop = True
next

'起動していなかった場合F15_Runを起動させる
if blnStop <> True Then
    '起動用オブジェクトを生成
    Set objWsh = WScript.CreateObject("WScript.Shell")

    'F15_Run.vbsを起動
    objWsh.Run "F15_Run.vbs"

    'メッセージ表示
    shell.Popup "F15_Runを起動しました", messageTime, vbsName, vbOkOnly
Else
    'メッセージ表示
    shell.Popup "F15_Runを削除しました", messageTime, vbsName, vbOkOnly
end if

タスクマネージャー内のVBSは↓のような形でまとめられちゃいます。

その中の特定のVBSが起動しているかは、「ExecQuery」内でファイル名を指定します。

処理の流れはこんな感じ。
①for eachでタスク内にVBS(F15_Run.vbs)が存在するかを確認し、
 存在している場合はタスク削除する。
②起動していない場合は次のif文でF15_Run.vbsを起動させ、起動メッセージ表示
③起動している場合は削除メッセージ表示

メッセージ表示はこの記事です

まとめ

このON/OFFするVBSを「F15_Run_OnOff.vbs」として保存します。

そのファイルをタスクバーにピン留めすることで1クリックでON/OFFを切り替えることができます!

VBSなどをタスクバーにピン留めする方法はこちら

基本はスタートアップとかで常駐させて不要な時にOFFにするような運用でいけそうですね。

コメント

タイトルとURLをコピーしました