Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.009 c
14-68013
Фикус
2003-07-04 08:16
2003.07.21
Интересно, а кто был 20000000 посетителем? :)


3-67737
Deedlit
2003-06-29 11:29
2003.07.21
Несоответствие типов данных в выражении условия отбора


3-67685
bushmen
2003-06-26 16:22
2003.07.21
XML


14-67965
mipstudio
2003-06-30 14:47
2003.07.21
Есть идея написать игру...


14-68029
McSimm
2003-07-04 17:37
2003.07.21
Вот, раздразнили темой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский