% u?życie procesora przez proces

0

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

0

O ile się nie mylę, to całkiem niedawno przewijał się ten temat na forum. Szukaj.

0

jezeli chodzi o
http://4programmers.net/Forum/viewtopic.php?id=18619&post=100957#100957
to nie ma tam nic konkretnego...

0

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... :(

0

mozna poprobowac (pod NT bo raczej 9x to juz ....)

z klucza
HKEY_PERFORMANCE_DATA

albo funkcji
NtQuerySystemInformation

0

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,

0

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

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1