結局どっちの分からないだったのか分からなかったが・・・
#module
#uselib "Pdh"
#func _PdhOpenQuery "PdhOpenQuery" sptr,sptr,sptr
#func _PdhCloseQuery "PdhCloseQuery" sptr
#func global PdhCollectQueryData "PdhCollectQueryData"sptr
#func global PdhAddCounter "PdhAddCounterA" sptr,sptr,sptr,sptr
#func global PdhGetFormattedCounterValue "PdhGetFormattedCounterValue" sptr,sptr,sptr,sptr
#func global PdhExpandWildCardPath "PdhExpandWildCardPathA" sptr,sptr,sptr,sptr,sptr
#define global PDH_FMT_LONG 0x00000100
#define global PDH_FMT_DOUBLE 0x00000200
#define global PDH_FMT_LARGE 0x00000400
#define global PDH_FMT_NOSCALE 0x00001000
#define global PDH_FMT_1000 0x00002000
#define global PDH_FMT_NOCAP100 0x00008000
#deffunc PdhOpenQuery int phQ
PdhCloseQuery //二個以上開かない
_PdhOpenQuery 0, 0, phQ
if stat<0 {dialog "PdhOpenQuery\nerr"+strf(" 0x%08x",stat):end}
phQuery=phQ
return
#deffunc PdhCloseQuery onexit //終了時に呼び出される
if phQuery {//現在オープンされてるQueryを閉じる
dupptr hQuery,phQuery,4,4
_PdhCloseQuery hQuery
phQuery=0
if stat<0 {dialog "PdhCloseQuery\nerr"+strf(" 0x%08x",stat)}
}
return
#global
set_wait=200 //更新タイミング設定
pcchPathListLength=2048 //このサイズ分しか出力されないので多めに設定
sdim mszExpandedPathList,pcchPathListLength+1
PdhExpandWildCardPath 0,"\\Processor(*/*)\\% Processor Time",varptr(mszExpandedPathList),varptr(pcchPathListLength),0 //CPUcoreの数取得
if stat<0 {dialog "PdhExpandWildCardPath\nerr"+strf(" 0x%08x",stat):end}
hQuery=0 //ハンドルが出力される変数
PdhOpenQuery varptr(hQuery)
CPUcores=0
index=0
dim hCounter,1 //パフォーマンスカウンタのハンドルが出力される変数
repeat
i=instr(mszExpandedPathList,index,"\\Processor(") //コンピューター名を取り除く
if i<0{break}
index+i
getstr TEXT(cnt),mszExpandedPathList,index,''
index+strsize+1 //一行にNull文字が含まれてるから+1
if instr(TEXT(cnt),0,"\\Processor(_Total)") = 0 {Totalcore=CPUcores : /*ここでbreakすればトータル用のカウンタを追加しない*/}
PdhAddCounter hQuery,TEXT(cnt),0, varptr(hCounter(cnt)) //パフォーマンスカウンタをクエリーに追加
if stat<0 {dialog "PdhAddCounter \nerr"+strf(" 0x%08x",stat):end}
mes TEXT(cnt)
CPUcores++ //_Total含む
loop
PdhCollectQueryData hQuery //クエリー中のパフォーマンスカウンタの更新
if stat<0 {dialog "PdhCollectQueryData \nerr"+strf(" 0x%08x",stat):end}
wait 100
ddim cpu,2 //PdhGetFormattedCounterValueで使用する(PDH_FMT_DOUBLE用)
repeat
PdhCollectQueryData hQuery //クエリー中のパフォーマンスカウンタの更新
color
boxf 300,100,500,400
repeat CPUcores
PdhGetFormattedCounterValue hCounter(cnt),PDH_FMT_DOUBLE ,0,varptr(cpu) //指定したカウンタの現在の値を特定の形式で取得
pos 310,110+cnt*20
if stat<0 {
mes TEXT(cnt)+" err"+strf(" 0x%08x",stat)
}else{
if Totalcore=cnt {
color 0,240,255
mes strf("平均[%.2f%%]",cpu(1))
}else{
color 255*(cnt\2),250,50
mes strf("cpu%d[%.2f%%]",cnt,cpu(1)) //データがあるのは要素1
}
}
loop
wait set_wait
loop
定数とか命令名が載ってるPDH.H、winperf.h、pdhmsg.hなんかはここから
http://www.koders.com/c/fidDA4DBE445D87D2310E14B713125975F192048F96.aspx