CPUUSERATEシーピーユーユーズレート関数

本ページには広告が含まれています。

CPU使用率を取得します。

構文
  1. Integer = CPUUSERATE( )
引数
戻り値
CPU使用率(分解能1秒)

使い方

以下はループ処理でCPU使用率が80%以上になるときだけ10秒間のスリープを入れるプログラムです。

UWSC
WHILE TRUE
	// 何らかの処理
	IF CPUUSERATE() >= 80 THEN SLEEP(10.000)
WEND

CPU使用率が80%以上の間スリープする場合は、以下のように書きます。

UWSC
WHILE CPUUSERATE() >= 80
	SLEEP(0.001)
WEND

CPUUSERATE関数が示すCPU使用率とタスクマネージャーが示すものでは値が違うので、タスクマネージャーが示す値を取得したい場合は、以下のプログラムを使用します。

タスクマネージャーを起動しタスクトレイに表示される値を取得しています。

このプログラムで取得するCPU使用率の値はタスクマネージャーの更新頻度に依存するので、必要に応じてタスクマネージャー上部にあるメニューの[表示]-[更新の頻度]の設定を変更してください。

UWSC
DIM Shell = CREATEOLEOBJ("Shell.Application") 
Shell.FileRun()
DIM ID = GETID("ファイル名を指定して実行")
SENDSTR(ID, "taskmgr")
CLKITEM(ID, "OK", CLK_BTN)
CTRLWIN(GETID("タスク マネージャー"), MIN)

ID = GETID("", "Shell_TrayWnd")

WHILE TRUE
	GETITEM(ID, ITM_TOOLBAR, -1)
	FOR i = 0 TO GETITEM(ID, ITM_TOOLBAR, -1) - 1
		DIM str = ALL_ITEM_LIST[i]
		IFB POS("CPU ", str) <> 0 AND POS("メモリ ", str) <> 0 THEN
			DIM array = SPLIT(str, "<#CR>")
			FUKIDASI(VAL(REPLACE(REPLACE(array[0], "CPU ", ""), "%", "")))
			BREAK
		ENDIF
	NEXT
	SLEEP(0.001)
WEND

プログラム実行例

CPU使用率を取得する

CPU使用率を1秒毎に取得し、直近100回分の値の最大値・最小値・平均値を吹き出しに表示する。

UWSC
DIM array[100]
SETCLEAR(array, CPUUSERATE())

DIM i = 1
WHILE TRUE
	SHIFTARRAY(array, 1)
	array[0] = CPUUSERATE()
	FUKIDASI("現在<#TAB>" + CPUUSERATE() + "%<#CR>" + _
				"最大値<#TAB>" + CALCARRAY(array, CALC_MAX) + "%<#CR>" + _
				"最小値<#TAB>" + CALCARRAY(array, CALC_MIN) + "%<#CR>" + _
				"平均値<#TAB>" + ROUND(CALCARRAY(array, CALC_AVR), -2) + "%")
	i = i + 1
	SLEEP(1.000)
WEND

関連記事

GETDIR関数 (スクリプト関数)
GETFORMDATA関数 (スクリプト関数)
POSACC関数 (スクリプト関数)
FSO.GetFolder メソッド
指定したパスのFolder オブジェクトを返します。
File.Type プロパティ (FSO)
指定したファイルの種類を返します。
small関数 (自作関数)
配列の中で小さい方から数えた順位の値を求めます。
Document.getElementsByClassName メソッド (DOM)
引数で与えられたクラス名を持つ要素のリストを返します。