プロセスのCPU使用率の取得(VB)

説明:

PDHを使用して、起動しているメモ帳のCPU使用率を10秒間計測し、結果を表示する。

PDHは他と比べると特殊なAPI関数セットで、VBからPDHを簡易に呼び出せるように、VB専用のAPI関数を用意している。例えば、PdhOpenQueryという通常の関数に対して、VB専用のPdhVbOpenQueryという関数が用意されている。本サンプルでは、これらVB専用関数を使用しているため、引数の数や意味など通常と異なる場合があるので、注意すること。

キーワード:

PdhOpenQuery, PdhAddCounter, PdhCollectQueryData, PdhGetDoubleCounterValue, PdhCloseQuery

サンプルコード:


'宣言の例
Declare Function PdhOpenQuery Lib "pdh" Alias "PdhVbOpenQuery" (ByRef QueryHandle As Long) As Long

Declare Function PdhAddCounter Lib "pdh" Alias "PdhVbAddCounter" ( _
    ByVal QueryHandle As Long, _
    ByVal CounterPath As String, _
    ByRef CounterHandle As Long) As Long

Declare Function PdhCollectQueryData Lib "pdh" (ByVal QueryHandle As Long) As Long

Declare Function PdhGetDoubleCounterValue Lib "pdh" Alias "PdhVbGetDoubleCounterValue" ( _
    ByVal CounterHandle As Long, _
    ByRef CounterStatus As Long) As Double

Declare Function PdhCloseQuery Lib "pdh" (ByVal QueryHandle As Long) As Long



' ボタンが押されたら、起動しているメモ帳のCPU使用率を10秒間計測し、
'結果を表示する
Private Sub Command1_Click()

	Dim hQuery As Long
	Dim hCounter As Long
	Dim CounterStatus As Long
	Dim StartTime As Single

	'新規クエリーのオープン
	PdhOpenQuery hQuery

	'クエリーに、メモ帳のCPU使用率を計測するカウンタを追加
	PdhAddCounter hQuery, "\Process(notepad#0)\% Processor Time", hCounter

	'計測開始
	StartTime = Timer()
	PdhCollectQueryData hQuery

	'10秒間待機
	While (Timer() - StartTime) < 10
	    DoEvents
	Wend

	'計測終了
	PdhCollectQueryData hQuery

	'結果の表示
	MsgBox PdhGetDoubleCounterValue(hCounter, CounterStatus) & "%"

	'後処理
	PdhCloseQuery hQuery
	
End Sub

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

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