コード: 全て選択
Const SIZE_OF_LONG = 4
' ボタンをクリックすると、CPU の使用率が取得できます。
Sub MainWnd_CommandButton1_Click()
Dim CPUUsage As Long
Dim ValueSize As Long
Dim hKey As HKEY
'HKEY_DYN_DATAの“\PerfStats\StartStat\KERNEL\CPUUsage”という値を
'クエリーすることにより、CPU使用率の計測が開始される。
ValueSize = SIZE_OF_LONG
RegOpenKeyEx(HKEY_DYN_DATA, "PerfStats\StartStat", 0, KEY_QUERY_VALUE, hKey)
RegQueryValueEx(hKey, "KERNEL\CPUUsage", 0, 0, VarPtr(CPUUsage), VarPtr(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)
RegQueryValueEx(hKey, "KERNEL\CPUUsage", 0, 0, VarPtr(CPUUsage), VarPtr(ValueSize))
RegCloseKey(hKey)
'計測結果を表示
dim Usage[255] as Byte
wsprintf(Usage,"%d %",CPUUsage)
MsgBox hMainWnd,Usage,0,MB_OK
'計測を終了するには、“\PerfStats\StopStat\KERNEL\CPUUsage”という
'値をクエリーする。
ValueSize = SIZE_OF_LONG
RegOpenKeyEx(HKEY_DYN_DATA, "PerfStats\StopStat", 0, KEY_QUERY_VALUE, hKey)
RegQueryValueEx(hKey, "KERNEL\CPUUsage", 0, 0, VarPtr(CPUUsage), VarPtr(ValueSize))
RegCloseKey(hKey)
End Sub
因みに、システムモニタと見比べてみると、誤差が生じるときがあります。