16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE^2:CPU使用率の取得クラス[Win95専]"
この発言は #00909 紅月 燐火 さんのRE:CPU使用率の取得[Win95専] に対するコメントです
//クラスにした物です。
TSystemState = class(TObject)
private
function GetUsage: Integer;
function GetThreads: Integer;
protected
function GetData(const ValueName: String): Integer;
public
constructor Create; virtual;
destructor Destroy; override;
property Usage: Integer read GetUsage;
property Threads: Integer read GetThreads;
{...省略...}
end;
implementation
uses Registry;
{ TSystemState }
constructor TSystemState.Create;
var
Reg: TRegistry;
Values: TStringList;
i, Buf: Integer;
begin
Reg := TRegistry.Create;
Values := TStringList.Create;
try
Reg.RootKey := HKEY_DYN_DATA;
Reg.OpenKey('\PerfStats\StartStat', False);
Reg.GetValueNames(Values);
for i := 0 to Values.Count -1 do
Reg.ReadBinaryData(Values[i], Buf, SizeOf(Integer));
finally
Reg.Free;
Values.Free;
end;
end;
destructor TSystemState.Destroy;
var
Reg: TRegistry;
Values: TStringList;
i, Buf: Integer;
begin
Reg := TRegistry.Create;
Values := TStringList.Create;
try
Reg.RootKey := HKEY_DYN_DATA;
Reg.OpenKey('\PerfStats\StopStat', False);
Reg.GetValueNames(Values);
for i := 0 to Values.Count -1 do
Reg.ReadBinaryData(Values[i], Buf, SizeOf(Integer));
finally
Reg.Free;
Values.Free;
end;
inherited Destroy;
end;
function TSystemState.GetData(const ValueName: String): Integer;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_DYN_DATA;
if Reg.OpenKey('\PerfStats\StatData', False) then begin
Reg.ReadBinaryData(ValueName, Result, SizeOf(Integer));
end else
Result := -1;
finally
Reg.Free;
end;
end;
function TSystemState.GetThreads: Integer;
begin
Result := GetData('KERNEL\Threads');
end;
function TSystemState.GetUsage: Integer;
begin
Result := GetData('KERNEL\CPUUsage');
end;
{後はプロパティを追加してGetDataに取得したいデータ名を指定するだけで拡張
できます。(データ名はレジストリのHKEY_DYN_DATA\PerfStats\StatDataを参照)}
紅月 燐火(BZF05041)
Original document by 紅月 燐火 氏 ID:(BZF05041)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|