Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: CL | DM;

Вниз

Процессор   Найти похожие ветки 

 
Poman   (2003-05-02 15:10) [0]

Во многих программах есть график загрузки ЦП(процессора).
КАК ЭТО ДЕЛАЕТСЯ???


 
R4D][   (2003-05-02 17:34) [1]

На асме - http://wasm.ru/src/6/cpu_speed.zip, для Delphi попробуй отредактировать вышеуказанный код и
asm
end;


 
DeadMeat ©   (2003-05-02 19:59) [2]

Может я вмешиваюсь не в своё дело, но этот код показывает частоту процессора, а не его загруженность...


 
NightAngel   (2003-05-03 00:04) [3]

В реестре, в разделе HKEY_DYN_DATA, в ключе PerfStats содержится информация о системе: загруженность процессора, информация о Dialup, etc.
Как получить:
1. Cчитать значение ключа PerfStats\StartStat\KERNEL\CPUusage (инициализация счётчика).
2. Считывать загруженность процессора из PerfStats\StatData\KERNEL\CPUusage в обработчике On timer.
3. Cчитать значение ключа PerfStats\StopStat\KERNEL\CPUusage (сброс счётчика)
В этом-же разделе много и других счётчиков (см. в ключе PerfStats\StatData). Последовательность получения информации та-же. Да, сразу-же предупреждаю, это не будет работать в Win2k/XP.


 
Poma ©   (2003-05-03 10:40) [4]

NightAngel, а можно по подробнее. Что такое инициализация счётчика и сброс счётчика, и какая макс. загруженность процессора?


 
R4D][   (2003-05-03 11:16) [5]

Простите, ошибочка вышла :((


 
NightAngel   (2003-05-03 16:51) [6]

>Poma © (03.05.03 10:40)

Инициализация счётчика: для начала необходимо запустить установленный счётчик в реестре. Нужно считать значение ключа "PerfStats\ StartStat\KERNEL\CPUusage". Это действие запускает счётчик.

После этого в ключе "PerfStats\ StatData\KERNEL\CPUusage" будет храниться значение в процентах о загруженности процессора. Если добавить считывание загруженности процессора в событие On timer, то можно наблюдать изменение загруженности процессора в динамике.

Сброс счётчика: по завершении, Ваша программа должна остановить счётчик в реестре. Для этого нужно считать ключ "PerfStats\ StopStat\KERNEL\CPUusage". Это остановит счётчик.

Точно так-же можно получать информацию о количестве активных потоков, информацию о DialUp (ConnectSpeed) и т.д.

Удачи!


 
Poma ©   (2003-05-04 10:28) [7]

Работает вроде все нормально, только почему-то мой график не сопадает с графиками других программ. Когда комп бездельнячеет у них загуженность 0-3%, а у меня около 50%. Когда двигаешь мышью у них он повышается на 1-5%, а у меня падает почти до нуля т.е на 50%. ПОЧЕМУ???


 
DrPass ©   (2003-05-04 19:28) [8]

Смотря как ты делаешь.
Я бы тебе посоветовал просто взять функцию NTQuerySystemInformation и не париться, но ты из тех несчастных юзеров, которые по понятным только мазохистам причинам работают с WinМЕ


 
XAOC ©   (2003-05-07 04:52) [9]

http://www.sources.ru/delphi/delphi_get_active_threads.shtml


 
ppcat   (2003-05-07 09:30) [10]

Здесь есть компонент, заточенный как раз под это дело.
http://ppcat.hotbox.ru/rus/components.html


 
Poma ©   (2003-05-11 08:55) [11]

Ну я скачал этот TSensor, а на нем график как у моей проги. И при этом System doctor от Norton Utilities показывает гораздо более правдоподобный график.


 
NightAngel   (2003-05-12 02:45) [12]

>Poma © (11.05.03 08:55)

unit SystemInfo;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,extctrls;

type TDialupAdapterInfo = record //Информация о Dialup адаптере
alignment:dword;
buffer:dword;
bytesrecieved:dword;
bytesXmit:dword;
ConnectSpeed:dword;
CRC:dword;
framesrecieved:dword;
FramesXmit:dword;
Framing:dword;
runts:dword;
Overrun:dword;
timeout:dword;
totalbytesrecieved:dword;
totalbytesXmit:dword;
end;

type TKernelInfo = record
CpuUsagePcnt:dword;
Numthreads:dword;
NumVMS:dword;
end;

type TVCACHEInfo = record
ccurpages:dword;
cMacPages:dword;
cminpages:dword;
FailedRecycles:dword;
Hits:dword;
LRUBuffers:dword;
LRURecycles:dword;
Misses:dword;
RandomRecycles:dword;
end;

type TFATInfo = record
BreadsSec:dword;
BwritesSec:dword;
Dirtydata:dword;
ReadsSec:dword;
WritesSec:dword;
end;

type TVMMInfo = record
CDiscards:dword;
CInstancefaults:dword;
CPageFaults:dword;
cPageIns:dword;
cPageOuts:dword;
cpgCommit:dword;
cpgDiskCache:dword;
cpgDiskCacheMac:dword;
cpgDiskCacheMid:dword;
cpgDiskCacheMin:dword;
cpgfree:dword;

cpglocked:dword;
cpglockedNoncache:dword;
cpgother:dword;
cpgsharedpages:dword;
cpgswap:dword;
cpgswapfile:dword;
cpgswapfiledefective:dword;
cpgswapfileinuse:dword;
end;

type
TSysInfo = class(TComponent)
private
fDialupAdapterInfo:TDialupAdapterInfo;
fKernelInfo:TKernelInfo;
fVCACHEInfo:TVCACHEInfo;
fFATInfo:TFATInfo;
fVMMInfo:TVMMInfo;
ftimer:TTimer;
fupdateinterval:integer;
tmp:dword;
vsize:dword;
pkey:hkey;
regtype:pdword;
fstopped:boolean;
procedure fupdatinginfo(sender:tobject);
procedure fsetupdateinterval(aupdateinterval:integer);
protected
fsysInfoChanged:TNotifyEvent;
public
constructor Create(Aowner:Tcomponent);override;
destructor Destroy;override;

property DialupAdapterInfo: TDialupAdapterInfo read fDialupAdapterInfo;
property KernelInfo: TKernelInfo read fKernelInfo;
property VCACHEInfo: TVCACHEInfo read fVCACHEInfo;
property FATInfo: TFATInfo read fFATInfo;
property VMMInfo: TVMMInfo read fVMMInfo;
procedure StartRecievingInfo;
procedure StopRecievingInfo;
published
property SysInfoChanged:TNotifyEvent read fsysInfoChanged write
fsysInfoChanged;//Это событие вызывается после определённого интервала времени.
property UpdateInterval:integer read fupdateInterval write
fsetupdateinterval default 5000;
end;

procedure Register;

implementation

constructor TSysInfo.Create(Aowner:Tcomponent);
begin
inherited;
ftimer:=ttimer.Create(self);
ftimer.enabled:=false;
ftimer.OnTimer:=fupdatinginfo;
vsize:=4;
fstopped:=true;
end;






 
NightAngel   (2003-05-12 02:57) [13]

procedure TSysInfo.startrecievingInfo;
var
res:integer;
begin
res:=RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StartStat",0,KEY_ALL_ACCESS,pkey);
if res<>0 then
raise exception.Create("Could not open registry key");
fstopped:=false;
// Для Dial Up Адаптера
RegQueryValueEx(pkey,"Dial-Up Adapter\Alignment",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Buffer",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Framing",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Overrun ",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Timeout",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\CRC",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Runts",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\FramesXmit",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\FramesRecvd",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\BytesXmit",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\BytesRecvd",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\TotalBytesXmit",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\TotalBytesRecvd",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\ConnectSpeed",nil,regtype,@tmp,@vsize);

// Для VCACHE
RegQueryValueEx(pkey,"VCACHE\LRUBuffers",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\FailedRecycles",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\RandomRecycles",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\LRURecycles",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\Misses",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\Hits",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\cMacPages",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\cMinPages",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\cCurPages",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\BytesXmit",nil,regtype,@tmp,@vsize);

//Для VFAT

RegQueryValueEx(pkey,"VFAT\DirtyData",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VFAT\BReadsSec",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VFAT\BWritesSec",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VFAT\ReadsSec",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VFAT\WritesSec",nil,regtype,@tmp,@vsize);
//Для VMM

RegQueryValueEx(pkey,"VMM\cpgLockedNoncache",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgCommit",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSharedPages",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMid",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMac",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMin",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcache",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfileDefective",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfileInUse",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfile",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cDiscards",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cPageOuts",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cPageIns",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cInstanceFaults",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cPageFaults",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgOther",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwap",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgLocked",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgFree",nil,regtype,@tmp,@vsize);
//Для KERNEL
RegQueryValueEx(pkey,"KERNEL\CPUUsage",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"KERNEL\VMs",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"KERNEL\Threads",nil,regtype,@tmp,@vsize);
RegCloseKey(pkey);
ftimer.enabled:=true;
end;



 
NightAngel   (2003-05-12 02:58) [14]

procedure tsysinfo.fupdatinginfo(sender:tobject);
var
res:integer;
begin
res:=RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StatData",0,KEY_ALL_ACCESS,pkey);
if res<>0 then
raise exception.Create("Could not open registry key");
//Для Dial Up Адаптера
RegQueryValueEx(pkey,"Dial-Up Adapter\Alignment",nil,regtype,@fDialupAdapterInfo.alignment,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Buffer",nil,regtype,@fDialupAdapterInfo.buffer,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Framing",nil,regtype,@fDialupAdapterInfo.framing,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Overrun ",nil,regtype,@fDialupAdapterInfo.overrun,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Timeout",nil,regtype,@fDialupAdapterInfo.timeout,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\CRC",nil,regtype,@fDialupAdapterInfo.crc,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Runts",nil,regtype,@fDialupAdapterInfo.runts,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\FramesXmit",nil,regtype,@fDialupAdapterInfo.framesxmit,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\FramesRecvd",nil,regtype,@fDialupAdapterInfo.framesrecieved,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\BytesXmit",nil,regtype,@fDialupAdapterInfo.bytesxmit,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\BytesRecvd",nil,regtype,@fDialupAdapterInfo.bytesrecieved,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\TotalBytesXmit",nil,regtype,@fDialupAdapterInfo.totalbytesxmit,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\TotalBytesRecvd",nil,regtype,@fDialupAdapterInfo.totalbytesrecieved,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\ConnectSpeed",nil,regtype,@fDialupAdapterInfo.connectspeed,@vsize);
// Для VCACHE
RegQueryValueEx(pkey,"VCACHE\LRUBuffers",nil,regtype,@fVCACHEInfo.lrubuffers,@vsize);
RegQueryValueEx(pkey,"VCACHE\FailedRecycles",nil,regtype,@fVCACHEInfo.failedrecycles,@vsize);
RegQueryValueEx(pkey,"VCACHE\RandomRecycles",nil,regtype,@fVCACHEInfo.randomrecycles,@vsize);
RegQueryValueEx(pkey,"VCACHE\LRURecycles",nil,regtype,@fVCACHEInfo.lrurecycles,@vsize);
RegQueryValueEx(pkey,"VCACHE\Misses",nil,regtype,@fVCACHEInfo.misses,@vsize);
RegQueryValueEx(pkey,"VCACHE\Hits",nil,regtype,@fVCACHEInfo.hits,@vsize);
RegQueryValueEx(pkey,"VCACHE\cMacPages",nil,regtype,@fVCACHEInfo.cmacpages,@vsize);
RegQueryValueEx(pkey,"VCACHE\cMinPages",nil,regtype,@fVCACHEInfo.cminpages,@vsize);
RegQueryValueEx(pkey,"VCACHE\cCurPages",nil,regtype,@fVCACHEInfo.ccurpages,@vsize);
//Для VFAT
RegQueryValueEx(pkey,"VFAT\DirtyData",nil,regtype,@ffatinfo.dirtydata,@vsize);
RegQueryValueEx(pkey,"VFAT\BReadsSec",nil,regtype,@ffatinfo.breadssec,@vsize);
RegQueryValueEx(pkey,"VFAT\BWritesSec",nil,regtype,@ffatinfo.bwritessec,@vsize);
RegQueryValueEx(pkey,"VFAT\ReadsSec",nil,regtype,@ffatinfo.readssec,@vsize);
RegQueryValueEx(pkey,"VFAT\WritesSec",nil,regtype,@ffatinfo.writessec,@vsize);
//Для VMM
RegQueryValueEx(pkey,"VMM\cpgLockedNoncache",nil,regtype,@fvmminfo.cpglockednoncache,@vsize);
RegQueryValueEx(pkey,"VMM\cpgCommit",nil,regtype,@fvmminfo.cpgcommit,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSharedPages",nil,regtype,@fvmminfo.cpgsharedpages,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMid",nil,regtype,@fvmminfo.cpgdiskcacheMid,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMac",nil,regtype,@fvmminfo.cpgdiskcacheMac,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMin",nil,regtype,@fvmminfo.cpgdiskcacheMin,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcache",nil,regtype,@fvmminfo.cpgdiskcache,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfileDefective",nil,regtype,@fvmminfo.cpgswapfiledefective,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfileInUse",nil,regtype,@fvmminfo.cpgswapfileinuse,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfile",nil,regtype,@fvmminfo.cpgswapfile,@vsize);
RegQueryValueEx(pkey,"VMM\cDiscards",nil,regtype,@fvmminfo.cdiscards,@vsize);
RegQueryValueEx(pkey,"VMM\cPageOuts",nil,regtype,@fvmminfo.cpageouts,@vsize);
RegQueryValueEx(pkey,"VMM\cPageIns",nil,regtype,@fvmminfo.cpageins,@vsize);
RegQueryValueEx(pkey,"VMM\cInstanceFaults",nil,regtype,@fvmminfo.cinstancefaults,@vsize);
RegQueryValueEx(pkey,"VMM\cPageFaults",nil,regtype,@fvmminfo.cpagefaults,@vsize);
RegQueryValueEx(pkey,"VMM\cpgOther",nil,regtype,@fvmminfo.cpgother,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwap",nil,regtype,@fvmminfo.cpgswap,@vsize);
RegQueryValueEx(pkey,"VMM\cpgLocked",nil,regtype,@fvmminfo.cpglocked,@vsize);
RegQueryValueEx(pkey,"VMM\cpgFree",nil,regtype,@fvmminfo.cpgfree,@vsize);
//Для KERNEL
RegQueryValueEx(pkey,"KERNEL\CPUUsage",nil,regtype,@fkernelinfo.cpuusagepcnt,@vsize);
RegQueryValueEx(pkey,"KERNEL\VMs",nil,regtype,@fkernelinfo.numvms,@vsize);
RegQueryValueEx(pkey,"KERNEL\Threads",nil,regtype,@fkernelinfo.numThreads,@vsize);
RegCloseKey(pkey);
if assigned(SysInfoChanged) then
SysInfoChanged(self);
end;


 
NightAngel   (2003-05-12 03:00) [15]

procedure TSysInfo.stoprecievingInfo;
var
res:integer;
begin
res:=RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StopStat",0,KEY_ALL_ACCESS,pkey);
if not fstopped then
begin
if res<>0 then
raise exception.Create("Could not open registry key");
//Для Dial Up Адаптера
RegQueryValueEx(pkey,"Dial-Up Adapter\Alignment",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Buffer",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Framing",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Overrun ",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Timeout",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\CRC",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\Runts",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\FramesXmit",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\FramesRecvd",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\BytesXmit",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\BytesRecvd",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\TotalBytesXmit",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\TotalBytesRecvd",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\ConnectSpeed",nil,regtype,@tmp,@vsize);

// Для VCACHE
RegQueryValueEx(pkey,"VCACHE\LRUBuffers",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\FailedRecycles",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\RandomRecycles",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\LRURecycles",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\Misses",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\Hits",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\cMacPages",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\cMinPages",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VCACHE\cCurPages",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"Dial-Up Adapter\BytesXmit",nil,regtype,@tmp,@vsize);

//Для VFAT
RegQueryValueEx(pkey,"VFAT\DirtyData",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VFAT\BReadsSec",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VFAT\BWritesSec",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VFAT\ReadsSec",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VFAT\WritesSec",nil,regtype,@tmp,@vsize);

//Для VMM
RegQueryValueEx(pkey,"VMM\cpgLockedNoncache",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgCommit",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSharedPages",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMid",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMac",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcacheMin",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgDiskcache",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfileDefective",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfileInUse",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwapfile",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cDiscards",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cPageOuts",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cPageIns",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cInstanceFaults",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cPageFaults",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgOther",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgSwap",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgLocked",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"VMM\cpgFree",nil,regtype,@tmp,@vsize);

//Для KERNEL
RegQueryValueEx(pkey,"KERNEL\CPUUsage",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"KERNEL\VMs",nil,regtype,@tmp,@vsize);
RegQueryValueEx(pkey,"KERNEL\Threads",nil,regtype,@tmp,@vsize);

RegCloseKey(pkey);
ftimer.enabled:=false;
fstopped:=true;
end;
end;

procedure tsysinfo.fsetupdateinterval(aupdateinterval:integer);
begin
if (ftimer<>nil) and(aupdateinterval>0) then
begin
ftimer.Interval:=aupdateinterval;
fupdateinterval:=aupdateinterval;
end;
if (ftimer<>nil) and(aupdateinterval=0) then
begin
ftimer.Interval:=500;
fupdateinterval:=500;
end;

end;

destructor tsysinfo.Destroy;
begin
StopRecievingInfo;
ftimer.Destroy;
inherited;
end;

procedure Register;
begin
RegisterComponents("Samples", [TSysInfo]);
end;


Скопируйте это в файл .pas и проинсталлируйте его.



Страницы: 1 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.013 c
1-67788
bobr12
2003-07-09 11:57
2003.07.21
Обработка нажатия правой кнопкой мыши на визуальный компонент


1-67903
Alexdream
2003-07-08 14:22
2003.07.21
Delphi Source


1-67866
Lime
2003-07-08 05:23
2003.07.21
Анализ байтов, содержащихся в файле


1-67757
Smok_er
2003-07-08 19:49
2003.07.21
ComboBox, выпадающий наверх


1-67775
Семен Сорокин
2003-07-08 14:01
2003.07.21
Отрисовка RoundRect