CPU使用率の表示(VB)

説明:

95で、CPUの使用率を1秒間計測し、結果を表示する。

95の場合、CPU使用率の計測は“HKEY_DYN_DATA\PerfStats\StartStat\KERNEL\CPUUsage”というレジストリにアクセスすることによって開始され、“HKEY_DYN_DATA\PerfStats\StopStat\KERNEL\CPUUsage”というレジストリにアクセスすることによって終了する。左記レジストリのアクセスによって計測開始後、“HKEY_DYN_DATA\PerfStats\StatData\KERNEL\CPUUsage"というレジストリの値が、現在のCPU使用率を表す。

なお下記サンプルでは、Long型の値を読み取るRegQueryValueExのために“RegQueryLongEx”という別名をつけているので注意。StartStatおよびStopStatに対するアクセスもこれを流用している。

レジストリのオープンと、値の読み取りは、この組み合わせでなければならない。例えば、“PerfStats\StartStat\KERNEL”をオープンした後に“CPUUsage”の値を読みとろうとしてもエラーとなる。

キーワード:

RegOpenKeyEx, RegQueryValueEx, RegCloseKey

サンプルコード:


'宣言の例
Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" ( _
    ByVal hKey As Long, _
    ByVal SubKeyName As String, _
    ByVal Reserved As Long, _
    ByVal AccessMask As Long, _
    ByRef hResultKey As Long) As Long

Declare Function RegQueryLongEx Lib "advapi32" Alias "RegQueryValueExA" ( _
    ByVal hKey As Long, _
    ByVal ValueName As String, _
    ByVal pReserved As Long, _
    ByVal pValueType As Long, _
    ByRef LongValue As Long, _
    ByRef ValueSize As Long) As Long
    
Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Declare Function Sleep Lib "kernel32" (ByVal s As Long) As Long

Public Const HKEY_DYN_DATA As Long = &H80000006
Public Const KEY_QUERY_VALUE As Long = 1
Public Const SIZE_OF_LONG As Long = 4

'ボタンが押されたら、CPU使用率を一秒間計測し、結果を表示
Private Sub Command1_Click()

	Dim CPUUsage As Long
	Dim ValueSize As Long
	Dim hKey As Long

	'HKEY_DYN_DATAの“\PerfStats\StartStat\KERNEL\CPUUsage”という値を
	'クエリーすることにより、CPU使用率の計測が開始される。
	ValueSize = SIZE_OF_LONG
	RegOpenKeyEx HKEY_DYN_DATA, "PerfStats\StartStat", 0, KEY_QUERY_VALUE, hKey
	RegQueryLongEx hKey, "KERNEL\CPUUsage", 0, 0, CPUUsage, ValueSize
	RegCloseKey hKey

	'一秒間計測
	Sleep 1000
	    
	'実際のCPU使用率は“\PerfStats\StatData\KERNEL\CPUUsage"という値で
	'取得できる。
	ValueSize = SIZE_OF_LONG
	RegOpenKeyEx HKEY_DYN_DATA, "PerfStats\StatData", 0, KEY_QUERY_VALUE, hKey
	RegQueryLongEx hKey, "KERNEL\CPUUsage", 0, 0, CPUUsage, ValueSize
	RegCloseKey hKey

	'計測結果を表示
	MsgBox CPUUsage & "%"

	'計測を終了するには、“\PerfStats\StopStat\KERNEL\CPUUsage”という
	'値をクエリーする。
	ValueSize = SIZE_OF_LONG
	RegOpenKeyEx HKEY_DYN_DATA, "PerfStats\StopStat", 0, KEY_QUERY_VALUE, hKey
	RegQueryLongEx hKey, "KERNEL\CPUUsage", 0, 0, CPUUsage, ValueSize
	RegCloseKey hKey

End Sub

(original text:1999/04/27 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。