Текущий архив: 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.53 MB
Время: 0.007 c