Windows 9x での CPU 使用率の取得

オープンソース形式でコードを共有するフォーラムです。お役立ちコード、あなたも投稿してみませんか?
返信する
メッセージ
作成者
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

Windows 9x での CPU 使用率の取得

#1 投稿記事 by M.S. »

コード: 全て選択

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
よく検索すると見つかるもんなんですね。(笑)

因みに、システムモニタと見比べてみると、誤差が生じるときがあります。
返信する