UWSCでパフォーマンス監視

久しぶりにやったのでせっかくだから記事にしとこう

IEギャンギャン操作しててメモリ食い過ぎでやばそうになったらIE再起動したいぜ!
とかそういうのを想定 (そういう使い方したことないけど

OPTION DEFAULTFONT = "MS Gothic"

hQuery = 0
PdhVbOpenQuery(hQuery)

// カウンタを追加
// どういう文字列渡すかはPerfmonとか見る
counter_iexplore_cpuuserate  = 0
PdhVbAddCounter(hQuery, "\Process(iexplore)\% Processor Time", counter_iexplore_cpuuserate)
counter_iexplore_memoryusage = 0
PdhVbAddCounter(hQuery, "\Process(iexplore)\Working Set", counter_iexplore_memoryusage)

// 計測開始
fukidasi("計測中")
PdhCollectQueryData(hQuery)

// 計測時間
sleep(1)

// 計測終了
PdhCollectQueryData(hQuery)
fukidasi()

CounterStatus = 0
iexplore_cpuuserate = PdhVbGetDoubleCounterValue(counter_iexplore_cpuuserate, CounterStatus)
CounterStatus = 0
iexplore_memoryusage = PdhVbGetDoubleCounterValue(counter_iexplore_memoryusage, CounterStatus)

msg = replace(template, "%cpuuserate%", round(iexplore_cpuuserate))
msg = replace(msg, "%memoryusage%", iexplore_memoryusage)
msgbox(msg)

PdhCloseQuery(hQuery)

textblock template
CPU使用率: %cpuuserate%% メモリ使用量: %memoryusage%
endtextblock const ERROR_SUCCESS = $0 def_dll PdhVbOpenQuery(var dword):long:pdh.dll def_dll PdhVbAddCounter(dword, string, var dword):long:pdh.dll def_dll PdhCollectQueryData(dword):long:pdh.dll def_dll PdhVbGetDoubleCounterValue(dword, var dword):double:pdh.dll def_dll PdhVbIsGoodStatus(dword):long:pdh.dll def_dll PdhCloseQuery(dword):long:pdh.dll

PdhVbOpenQueryとかPdhVbAddCounterとかPdhCollectQueryDataとかはERROR_SUCCESSを返さないとエラーです
PdhCollectQueryDataを2回唱えると計測開始→終了です

PdhVbGetDoubleCounterValueで計測した値を取れます
CounterStatusをPdhVbIsGoodStatusに食わせると結果が良かったかどうだかとか多分そんなのを教えてくれます

なんでPdhVb***を使ってるかというと、こっちのが簡単だったからです
多分Vbってついてないのでも出来るよ!やったことないけど!

タスクマネージャ監視とかよりいいよねとかそういう話
ちゃんとデータ残したいならperfmon使ったほうが良い

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中