no wlasnie...
jak to zrobic? czytalem zrodla wtop ale sie pogubilem [sciana]
jak by sie tak ktos zlitowal nad biednym cimkiem ;( ...
dzieki z gory [browar]
cimak
no wlasnie...
jak to zrobic? czytalem zrodla wtop ale sie pogubilem [sciana]
jak by sie tak ktos zlitowal nad biednym cimkiem ;( ...
dzieki z gory [browar]
cimak
O ile się nie mylę, to całkiem niedawno przewijał się ten temat na forum. Szukaj.
jezeli chodzi o
http://4programmers.net/Forum/viewtopic.php?id=18619&post=100957#100957
to nie ma tam nic konkretnego...
jezeli chodzi o
http://4programmers.net/Forum/viewtopic.php?id=18619&post=100957#100957
to nie ma tam nic konkretnego...
No właśnie... mój pierwszy post na tym forum :) nadal bez odpowiedzi... :(
mozna poprobowac (pod NT bo raczej 9x to juz ....)
z klucza
HKEY_PERFORMANCE_DATA
albo funkcji
NtQuerySystemInformation
GetSystemTimes konkretnie, Maćku.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemtimes.asp
//tia... - M
//Client: Requires Windows XP SP1.
//Server: Requires Windows Server 2003.
no cóż, hehe ups.
zostaje druga metoda - przejechanie się po wszystkich procesach, policzenie ile zużyły czasu procka od ostatniego sprawdzenia, i podanie tego w procentach. tak jest właśnie w wtop,
No tak ale to dosc drastyczne bo wypada nawet NT 2000 na ktorym duzo ludzi pracuje ! (wyglada na to ze nie obsluguje 2000 - ja nie mam )
Requirements
Client: Requires Windows XP SP1.
Server: Requires Windows Server 2003.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.
DLL: kernel32.dll
Na msdnie jest tez opis jak zrobic odczytanie danych z rejestru ! w win 95
Wreszcie udało mi sie napisac samemu w oparciu o wtop i nawet działa (XP) :)
Jak cos jest zle albo niepotrzebne, to zwroccie mi uwage ( [browar] ):
TTimeRec = record
k,u : int64;
ppid : thandle;
case byte of
0 : (pid : thandle);
1 : (tid : thandle);
end;
Tl :array [0..99999] of TTimeRec;
Last :array [0..99999] of TDateTime;
function GetCPUUsage(PID:Integer):Byte;
function DT2int64(t : tdatetime) : int64;
var h,m,s,ms : word;
begin
DecodeTime(t,h,m,s,ms);
result := (int64(ms) + 1000*(int64(s) + 60*(int64(m) + 60*int64(h))))*10000;
end;
var ProcHandle:Cardinal;
c,e,k,u,proc : int64;
a,b,tu : int64;
begin
ProcHandle:=OpenProcess (PROCESS_QUERY_INFORMATION, FALSE, PID);
k := 0; proc := 0;
if not GetProcessTimes(ProcHandle, TFileTime(c),TFileTime(e),TFileTime(k),TFileTime(u)) then
begin
k := 0;
u := 0;
end;
if time <> last[Pid] then
begin
a := (k - tl[pid].k)*100;
b := (u - tl[pid].u)*100;
tu := dt2int64(time-last[pid]);
proc := (a+b) div tu;
end;
tl[pid].k := k;
tl[pid].u := u;
k := k + u;
last[pid] := time;
Result:=Proc;
end;
// i to się urodziło na podstawie mojego kodu? nieźle ;-) - ŁF