CPU使用率を求める

いくつか方法があるようですが、わたしはpdhを使った方法しか知りません。
pdhはWindows2000以降しか使えません。
ABはpdhを宣言していないので自分で宣言します。
#console

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使用率を返す(%)
Function GetCPUutilization(wait As Long) As Long
    Dim hQuery As Long
    Dim hCounter As Long
    Dim CounterStatus As Long

    PdhOpenQuery(hQuery)
    PdhAddCounter( hQuery, "\Processor(_Total)\% Processor Time", hCounter)
    PdhCollectQueryData( hQuery)
    Sleep(wait)
    PdhCollectQueryData( hQuery)
    GetCPUutilization = PdhGetDoubleCounterValue(hCounter, CounterStatus)
    PdhCloseQuery( hQuery)
End Function

Dim cnt As Long
cnt = 100
While cnt
    Print GetCPUutilization(500)
    cnt = cnt -1
Wend

End
GetCPUutilization関数がCPU使用率を求める関数です。引数は調べる時間(ミリ秒)です。
実行するといつものようにコンソールが開きます。
0
0
2
100
(以下省略)
などの数字が表示されます。これがCPU使用率です。タスクマネージャと見比べてください。
だいたい同じ値になっていると思います。