vbsを使って、特定のプロブラムの使用に制限時間を設けて、時間が経ったら終了させるプログラムを作りました。起動中のプログラムの一覧の取得はこちらのサイトを参考にしました。このプログラムは常駐させるつもりなのですが、普段持ち歩くあまりノートパソコン(プロセッサ:atom x5-Z8350)ではcpuの使用率が高くなってしまうことで悩んでいます。仕方ないのでしょうか?
vbs
1Option Explicit 2 3'アプリが起動中の場合を1、起動していない時を0とした 4Dim AppState 5AppState = 0 6 7Dim TargetClass 8 9'使用時間を制限したいプログラム 10Dim TARGET_PROCESS_SET 11Dim TARGET_PROCESS 12TARGET_PROCESS_SET = Array("notepad.exe","Hacknet.exe","MiniMetro.exe","PapersPlease.exe","reprisaluniverse.exe","Epistory.exe") 13 14'WMIにて使用する各種オブジェクトを定義・生成する。 15Dim oClassSet 16Dim oClass 17Dim oLocator 18Dim oService 19 20'ローカルコンピュータに接続する。 21Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator") 22Set oService = oLocator.ConnectServer 23 24'アプリの起動を確認するまでスキャンを繰り返す 25While AppState = 0 26 'クエリー条件をWQLにて指定する。 27 Set oClassSet = oService.ExecQuery("Select * From Win32_Process") 28 '現在起動中のアプリケーションの中にTARGET_PROCESS_SETで指定したアプリケーションが存在した場合スキャンを抜け出す 29 For Each oClass In oClassSet 30 For Each TARGET_PROCESS In TARGET_PROCESS_SET 31 If TARGET_PROCESS = oClass.Description Then 32 Set TargetClass = oClass 33 AppState = 1 34 Exit For 35 Exit For 36 End If 37 38 Next 39 Next 40Wend 41 42'アプリの起動から90分経過したら強制終了する 43Dim StrTime 44StrTime = now 45 46'90分経つまで処理を停止させる 47While DateDiff("m",StrTime,now) < 90 48Wend 49 50TargetClass.terminate 51Msgbox "時間になりました" 52 53'使用した各種オブジェクトを後片付けする。 54Set oClassSet = Nothing 55Set oClass = Nothing 56Set oService = Nothing 57Set oLocator = Nothing
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/15 10:56
2019/08/16 02:47