「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@459) [低] [未処理]
@459■ (#1451) Windows 7でCPU使用率取得が機能しない - なで熊 (2010-01-23 16:31) /低 未処理
【症状】
 Windows 7でCPU使用率取得が機能せず、0%のままになってしまう。
【要望】
 Windows 7でもCPU使用率取得が機能するようにしてほしいです。
【バージョン】1.5326
 Win7 Home 64bit

(#1475) こちらでは - k.k (2010-02-04 22:11) /低 未処理
こちらでは(Win7 RC 32bit)再現しません
多分なでしこ自体がたしか32bitアプリケーションなので64bitだと動かないのかもしれません

(#1478) 7RC 64bitで再現しました - 99yen (2010-02-06 14:43) /低 未処理
7RC 64bitで再現しました。特に64bitで動かないという情報はないですが、さてはて

(#2003) WindowsVistaだか7の64bits版でAPIが変わったようです - うぇいく (2012-05-23 21:50) /低 未処理
修正箇所を少なく直すとしたら、以下のような感じでしょうか。
CpuUtilsは直せないという場合は、素直にPdhに切り替えるのが良さそうです。
---CpuUtils.pasの20行目ぐらいにプロパティ1つ追加。
  private
    FHandle: THandle;
    FInfoSize: Integer;
    FReg: TRegistry;
---50行目ぐらいのReservedを増やす
  _SYSTEM_PERFORMANCE_INFORMATION = record
    IdleTime: LARGE_INTEGER;
    Reserved: array [0..87] of DWORD;
  end;
---90行目ぐらいにプロパティの初期化を追加
    end else
      FHandle := 0;
  end;
  FInfoSize := 312;
end;
---130行目ぐらいのAPI呼び出し失敗時の再試行追加。
  if NtQuerySystemInformation(3, @TimeInfo, SizeOf(TimeInfo), nil) <> NO_ERROR then
    Exit;
  if NtQuerySystemInformation(2, @PerfInfo, FInfoSize, nil) <> NO_ERROR then
  begin
    FInfoSize := 312 + 360 - FInfoSize;
    if NtQuerySystemInformation(2, @PerfInfo, FInfoSize, nil) <> NO_ERROR then
      Exit;
  end;
---

(#2008) r265de - クジラ飛行机 (2012-07-04 15:43) /低 未処理

(#2009) r265で修正 - クジラ飛行机 (2012-07-04 15:46) /低 確認待ち
- 「CPU使用率取得」がWindows7 64bitでうまく動かない問題を修正(@459)(r265)
うぇいくさん、修正候補ありがとうございます。
修正しました。感謝感謝です!

(#2094) Windows8 64bit - のなお (2013-01-31 18:30) /低 未処理
CPU使用率取得のマックスが255となります。
これは正常なのでしょうか?

Ver.1.53353

(#1451)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能