質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

2088閲覧

vbsで作ったプログラムのcpu使用率が高い

takumi3

総合スコア18

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2019/08/15 08:52

編集2019/08/15 08:54

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

時間を待つのにビジーループを使っているからですね。WScript.Sleep を使ってください。

投稿2019/08/15 09:08

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takumi3

2019/08/15 10:56

確かに待機時間にcpu使用率が高くなっています。sleepを使ってみます。しかし、アプリスキャンの段階でもcpu使用率が高いほうなんですよね。
Zuishin

2019/08/16 02:47

ずっとスキャンしているからでしょう。一度スキャンする毎に 100 ミリ秒待つようにしてください。それでも使用率が高ければ、もっと間隔を空けてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問