名前 題名 ▼ takiさん > 自己レスです。 > > しつこく GetSystemTimes ですが、サンプルを見つけたので > プログラムしてみました。 > 内容は?です。 > > unit Unit1; > > interface > > uses > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, > Dialogs, StdCtrls, ExtCtrls; > > type > TForm1 = class(TForm) > Edit1: TEdit; > Timer1: TTimer; > Edit2: TEdit; > Edit3: TEdit; > procedure Timer1Timer(Sender: TObject); > procedure FormCreate(Sender: TObject); > private > { Private 宣言 } > public > { Public 宣言 } > end; > > var > Form1: TForm1; > > var > oit,nit,okt,nkt,oust,nust:Double; > > implementation > > {$R *.dfm} > > function GetSystemTimes(var lpIdleTime:FileTime; var lpKernelTime: FileTime; > var lpUserTime: FileTime): Boolean; stdcall;external 'Kernel32.dll'; > > > function FileTime2Double(FileT: FileTime): Double; > begin > Result := FileT.dwHighDateTime* 4.294967296E9 + FileT.dwLowDateTime; > end; > > procedure TForm1.FormCreate(Sender: TObject); > begin > oit := 0.0; > nit := oit; > okt := oit; > nkt := oit; > oust := oit; > nust := oit; > end; > > procedure TForm1.Timer1Timer(Sender: TObject); > var > IdleTime,KernelTime,UserTime:FILETIME; > begin > GetSystemTimes(IdleTime,KernelTime,UserTime); > nit := FileTime2Double(IdleTime); > nkt := FileTime2Double(KernelTime); > nust := FileTime2Double(UserTime); > // 1秒間のそれぞれの使用された時間 > oit := nit - oit; > okt := nkt - okt; > oust := nust - oust; > // IdleTime,KernelTime,UserTimeの関係が今ひとつ分かりません > Edit1.Text := FloatToStr(oit/(oit+okt+oust)*100); > Edit2.Text := FloatToStr(okt/(oit+okt+oust)*100); > Edit3.Text := FloatToStr(oust/(oit+okt+oust)*100); > oit := nit; > okt := nkt; > oust := nust; > end; > > end. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link