こんにちは、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にするような運用でいけそうですね。
コメント