>PdhAddCounterに\\Process(test.exe#0)\\% Processor Time
まず .exe の拡張子はいらない
他にも問題あるのか分からないからサンプル
#module
#uselib "Pdh"
#func _PdhOpenQuery "PdhOpenQuery" int,int,var
#func _PdhCloseQuery "PdhCloseQuery" int
#func global PdhCollectQueryData "PdhCollectQueryData" int
#func global PdhAddCounter "PdhAddCounterA" int,sptr,int,var
#func global PdhGetFormattedCounterValue "PdhGetFormattedCounterValue" int,sptr,int,var
#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 var qh
if qh_bak {PdhCloseQuery qh_bak}
_PdhOpenQuery 0, 0, qh
if stat<0 {dialog "PdhOpenQuery\nerr"+strf(" 0x%08x",stat):end}
qh_bak=qh
return
#deffunc PdhCloseQuery onexit //終了時に呼び出される
_PdhCloseQuery qh_bak
return
#global
PdhOpenQuery hQuery //新規クエリーの作成(このハンドルを使いカウタを追加する)
//エディタから実行するとインスタンス名がhsp3なのでそれを利用
PdhAddCounter hQuery,"\\Process(hsp3)\\% Processor Time",0, hCounter //パフォーマンスカウンタをクエリーに追加
if stat<0 {dialog "PdhAddCounter\nerr"+strf(" 0x%08x",stat):end}
sdim Value,16 //PdhGetFormattedCounterValueで使用する
dupptr cpu,varptr(Value)+8,8,3 //Valueの8バイト以降の8バイトをDOUBLEで使えるようにクローン化
repeat
repeat 20 //適当に負荷をかける
color rnd(128),rnd(128),rnd(128)
boxf rnd(640),rnd(480),rnd(640),rnd(480)
loop
if gettime(6) ! tim {//1秒毎にカウンタ更新
tim=gettime(6)
PdhCollectQueryData hQuery //クエリー中のパフォーマンスカウンタの更新
PdhGetFormattedCounterValue hCounter,PDH_FMT_DOUBLE ,0,Value //指定したカウンタの現在の値を特定の形式で取得
title strf("%6.2f%%",cpu)
}
await 10
loop