スクリプト言語の HSP については、公式ホームページの「HSPTV!」をどうぞ。(戻る)
ここには、CPU使用率のサンプル・ソースを載せておきます。
Win32API 関数のパフォーマンス・カウンタ群を使います。
C言語版の「CPU使用率の取得」をHSP版に書き下ろしたサンプルです。
また、記号定数(MSG_xxx)でCPUコア0番~CPUコア3番までのCPU使用率も取得できるようになってます。
下記のソースの一部を書き換えることでCPUのコア毎の使用率を取得可能です。
書き換える箇所はソースの下に書いてあります。
技術資料
関連カテゴリ
動作確認のサンプル
管理上このサンプルは sample203a(CPU使用率のサンプル).hsp のソースです。
//------------------------------------------------------------------------------ // CPU使用率のサンプル(1) by 科学太郎 //============================================================================== // @URL(https://msdn.microsoft.com/ja-jp/library/cc429557.aspx)→「PdhOpenQuery」 // @URL(https://msdn.microsoft.com/en-us/library/aa372558.aspx)→「PdhCloseQuery」 // @URL(https://msdn.microsoft.com/en-us/library/aa372204.aspx)→「PdhAddCounter」 // @URL(https://msdn.microsoft.com/en-us/library/aa372563.aspx)→「PdhCollectQueryData」 // @URL(https://msdn.microsoft.com/ja-jp/library/cc429547.aspx)→「PdhGetFormattedCounterValue」 // @URL(https://msdn.microsoft.com/en-us/library/aa373050.aspx)→「PDH_FMT_COUNTERVALUE」 //------------------------------------------------------------------------------ //-------------------------------------- // Win32API関数の呼び出し定義 //-------------------------------------- #uselib "Pdh.dll" #func global PdhOpenQuery "PdhOpenQueryA" sptr,sptr,sptr #func global PdhCloseQuery "PdhCloseQuery" sptr #func global PdhAddCounter "PdhAddCounterA" sptr,sptr,sptr,sptr #func global PdhCollectQueryData "PdhCollectQueryData" sptr #func global PdhGetFormattedCounterValue "PdhGetFormattedCounterValue" sptr,sptr,sptr,sptr //-------------------------------------- // 記号定数(API定数) //-------------------------------------- #const global NULL 0 #const global ERROR_SUCCESS $00000000 #const global PDH_FMT_LONG $00000100 #const global PDH_FMT_DOUBLE $00000200 //-------------------------------------- // 記号定数 //-------------------------------------- #define MSG_CPU "\\Processor(_Total)\\%% Processor Time" #define MSG_CPU0 "\\Processor(0)\\%% Processor Time" #define MSG_CPU1 "\\Processor(1)\\%% Processor Time" #define MSG_CPU2 "\\Processor(2)\\%% Processor Time" #define MSG_CPU3 "\\Processor(3)\\%% Processor Time" //-------------------------------------- // メイン部 //-------------------------------------- *Init dim hQuery ;問い合わせのハンドル(PDH_HQUERY) dim hCounter ;カウンターのハンドル(PDH_HCOUNTER) dim fmtValue,3 ;取得データの構造体(PDH_FMT_COUNTERVALUE) dupptr fmtDouble,varptr(fmtValue(2)),8,vartype("double") *Main screen 0,640,480,SCREEN_NORMAL|SCREEN_FIXEDSIZE syscolor 15:boxf:color:title "CPU使用率のサンプル(1) by 科学太郎" ;初期化 PdhOpenQuery NULL,0,varptr(hQuery) if(stat!=ERROR_SUCCESS):dialog "クエリーをオープンできません。",1,"確認":end PdhAddCounter hQuery,MSG_CPU,0,varptr(hCounter) PdhCollectQueryData hQuery ;CPU使用率 repeat stick k:if(k & $80):break ;[ESC]キーで抜ける redraw 0 syscolor 15:boxf:color:pos 0,0 PdhCollectQueryData hQuery ;整数 PdhGetFormattedCounterValue hCounter,PDH_FMT_LONG,NULL,varptr(fmtValue) mes strf("整数値:%3d %%",fmtValue(2)) ;実数 PdhGetFormattedCounterValue hCounter,PDH_FMT_DOUBLE,NULL,varptr(fmtValue) mes strf("実数値:%6.2f %%",fmtDouble) redraw 1 await 500 loop ;後始末 PdhCloseQuery hQuery end //------------------------------------------------------------------------------ // End of sample203a.hsp //------------------------------------------------------------------------------
- 上記のソース内で「MSG_CPU」定数を「MSG_CPU0」定数に変更するとCPUコア0番の使用率を表示します。
- 上記のソース内で「MSG_CPU」定数を「MSG_CPU1」定数に変更するとCPUコア1番の使用率を表示します。
- 上記のソース内で「MSG_CPU」定数を「MSG_CPU2」定数に変更するとCPUコア2番の使用率を表示します。
- 上記のソース内で「MSG_CPU」定数を「MSG_CPU3」定数に変更するとCPUコア3番の使用率を表示します。
関連記事
- CPU使用率のサンプル(1)
- CPU使用率のサンプル(2)
- マルチコアCPU使用率のサンプル(1)
- マルチコアCPU使用率のサンプル(2)
- マルチコアCPU使用率のサンプル(3)
※コメント投稿者のブログIDはブログ作成者のみに通知されます