HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0127
たこCPU使用率7解決


たこ

リンク

2008/1/27(Sun) 23:46:26|NO.13318

CPUの使用率を取得する方法を探しているのですが見つかりません
ダウンロードしたDLLを使わない方法で何かありませんか?



この記事に返信する


f

リンク

2008/1/28(Mon) 13:27:53|NO.13321

ダウンロードしないDLLを使う方法なら、
http://blog.goo.ne.jp/masaki_goo_2006/e/6b48817a6c93940e70667e6d6c7ec8ed
にあるな。

コンパイルのオプション関係いじる必要はあるが、動作は確認した。
TEXTマクロも要ったか。

HSPで同じ事が書ければいけるだろう。
hspは戻値としてINT32が受け取れるが、LONGが同じ32bitなのでそれで受ければ良いと思われる。

ただ、DLLあるんなら素直に使った方が良いんでね?



たこ

リンク

2008/1/28(Mon) 16:50:41|NO.13322

すみません
PdhAddCounter のところで外部DLLの呼び出しに失敗します
fさんの言うコンパイルのオプションやTEXTマクロが原因だと思いますが、
その設定方法がわかりません



f

リンク

2008/1/28(Mon) 17:06:43|NO.13323

ん?
HSP上でやる分には、その話は関係無いと思う。
VC++でコンパイルする話なので。



a

リンク

2008/1/28(Mon) 20:20:55|NO.13326

以前パフォーマンスカウンターについて調べた時に書いたサンプルスクリプトです。どうぞ。

#uselib "pdh.dll" #func PdhOpenQuery "PdhOpenQuery" int,int,int #func PdhCloseQuery "PdhCloseQuery" int #func PdhAddCounter "PdhAddCounterA" int,sptr,int,int #func PdhCollectQueryData "PdhCollectQueryData" int #func PdhGetFormattedCounterValue "PdhGetFormattedCounterValue" int,int,int,int screen 0, 400,101 onexit gosub *exit alloc CounterValue, 16 PdhOpenQuery 0, 0, varptr(hQuery) path = "\\Processor(_Total)\\% Processor Time" PdhAddCounter hQuery, varptr(path), 0, varptr(hCounter) PdhCollectQueryData hQuery do title "CPU使用率: "+strf("%3d%%", cpu) pos 0,0 : gcopy 0, 10,0, 400-10,101 color 255,255,255 : boxf 400-10, 0, 400-1, 101-1 color 0,192, 0 : boxf 400-10, 101-1-cpu, 400-1, 101-1 wait 200 PdhCollectQueryData hQuery PdhGetFormattedCounterValue hCounter, 0x100, 0, varptr(CounterValue) cpu = lpeek(CounterValue, 8) until( exit_sw ) PdhCloseQuery hQuery end *exit exit_sw = 1 return
注意点
得られる数値は、前回のPdhCollectQueryData呼び出しから、
今回のPdhCollectQueryData呼び出しまでの間の、平均値です。たぶん。
だから、PdhCollectQueryDataの呼び出しと、PdhCollectQueryDataの呼び出しの間に、
いくらかの時間をおいて取得すべき。
上のサンプルでは約2秒間の計測値になってます。(wait 200)



たこ

リンク

2008/1/28(Mon) 23:47:16|NO.13337

外部DLLの呼び出しに失敗する原因は PdhAddCounterA が PdhAddCounterだったからでした

aさんプログラムを実行してみましたが(変数)cpuの値が常に0でした
タスクマネージャなどで調べて0%出ないときもです
待ち時間を短くして調べても0でした



a

リンク

2008/1/29(Tue) 00:44:31|NO.13338

Win9xというオチじゃなく、動画再生とか負荷かけて0なら、まともに動いてないって事ですよね。
なんか、パフォーマンスカウンタで取得できない環境もあるらしいです。検索すると色々と…。
専用のDLLに頼った方がよさそうです。



たこ

リンク

2008/1/29(Tue) 16:36:48|NO.13342

そうですか…
他の環境によって動作しないようなプログラムではだめですもんね
専用のDLLを頼ってみます
fさん、aさん ありがとうございました



ONION software Copyright 1997-2023(c) All rights reserved.