ページ 11

CPU 使用率の取得

Posted: 2006年10月17日(火) 19:24
by M.S.
getcpust.dll (ぐうたら感謝の日 氏)で CPU 使用率を取得しようとしているのですが、
C 言語で書かれたコードを AB のコードにしていくのがどうにもうまくいきません。
どなたか、C 言語と AB が出来る方で教えていただけないでしょうか?

C 言語のコード 自力で直したコード     若しくは 僕ではこの程度までしか出来ません。
どなたかお願いします。

Posted: 2006年10月17日(火) 19:59
by Toshi
確認していませんが、

コード: 全て選択

declare function cpus lib "getcpust" alias "GetCpuStatus" (iStatus as *long) as long

cpus(VarPtr(st))
宣言をこのように変えてポインタを渡せばよいのではないでしょうか。
pCpuFunc は、Declare によって DLL の関数を定義する場合には不要だと思います。

Posted: 2006年10月17日(火) 20:06
by M.S.
> 確認していませんが、
>

コード: 全て選択

declare function cpus lib "getcpust" alias "GetCpuStatus" (iStatus as *long) as long
> 
> cpus(VarPtr(st))
> 
> 宣言をこのように変えてポインタを渡せばよいのではないでしょうか。
> pCpuFunc は、Declare によって DLL の関数を定義する場合には不要だと思います。

わかりました、とりあえずやってみます。
ありがとうございます。

Posted: 2006年10月18日(水) 13:12
by M.S.
> 確認していませんが、
>

コード: 全て選択

declare function cpus lib "getcpust" alias "GetCpuStatus" (iStatus as *long) as long
> 
> cpus(VarPtr(st))
> 
> 宣言をこのように変えてポインタを渡せばよいのではないでしょうか。

やってみましたが、ちゃんと表示されません。
表示されるのは、ずっと"0 %"です。

Posted: 2006年10月18日(水) 14:47
by hira
元のコード完全無視ですが(^^;;

コード: 全て選択

#prompt
declare function cpus lib "getcpust" alias "GetCpuStatus" (iStatus as *long) as long
Dim st As Long
Do
	cpus(VarPtr(st))
	Print st
	Sleep(1000)
Loop
当方ではこのコードで正しく動作しています。(Windows XP SP2 Home)
Windowsのバージョンが98やMeということはないでしょうか(DLLがNT系専用となっているので、念のため)。

Posted: 2006年10月18日(水) 15:08
by M.S.
> 元のコード完全無視ですが(^^;;
>

コード: 全て選択

#prompt
> declare function cpus lib "getcpust" alias "GetCpuStatus" (iStatus as *long) as long
> Dim st As Long
> Do
>  cpus(VarPtr(st))
>  Print st
>  Sleep(1000)
> Loop
> 当方ではこのコードで正しく動作しています。(Windows XP SP2 Home)
> Windowsのバージョンが98やMeということはないでしょうか(DLLがNT系専用となっているので、念のため)。

Windows 95/MEでやっていました。
95は何をしてもCPUの変化が起きなかったので、
意味はありませんでしたが…

Windows XP SP2でやってみます。
ありがとうございます。

Posted: 2006年10月19日(木) 19:03
by M.S.
> 元のコード完全無視ですが(^^;;
>

コード: 全て選択

#prompt
> declare function cpus lib "getcpust" alias "GetCpuStatus" (iStatus as *long) as long
> Dim st As Long
> Do
> 	cpus(VarPtr(st))
> 	Print st
> 	Sleep(1000)
> Loop
> 当方ではこのコードで正しく動作しています。(Windows XP SP2 Home)
> Windowsのバージョンが98やMeということはないでしょうか(DLLがNT系専用となっているので、念のため)。

Windows XP で実行したところ、表示されました。
ありがとうございました。