Einzelnen Beitrag anzeigen

ustra

Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
 
Delphi 5 Professional
 
#9

Re: CPU-Auslastung eines Prozesses

  Alt 7. Nov 2003, 19:44
Hallo,

ich brauche nun noch mal Eure Hilfe:

Ich starte meinen Prozess mit ShellexecuteEx und erhalte darüber das Handle auf den Prozess (funktioniert ohne Probleme). Nun will ich die CPU-Auslastung anzeigen lassen. Dazu rufe ich erst mal zu Testzwecken die Funktion getProcesstimes so auf:

Delphi-Quellcode:

Var
 CreateTime : TFileTime;
 KernelTime : TFileTime;
 UserTime : TFileTime;
 ExitTime : TFileTime;

 Function FileTimeToLocalDateTime(Time : TFileTime) : TDatetime;
 Var
   SysTime : TSystemTime;
 Begin
   FileTimeToLocalFileTime(Time,Time);
   FileTimeToSystemTime(Time, SysTime);
   Result := SystemTimeToDateTime(SysTime);
 End;

 Function FileTimeToDateTime(Time : TFileTime) : TDatetime;
 Var
   SysTime : TSystemTime;
 Begin
   FileTimeToSystemTime(Time, SysTime);
   Result := SystemTimeToDateTime(SysTime);
 End;

begin
//handle2 ist das ermittelte handle mit shellexecuteex
  GetProcessTimes(handle2,CreateTime,ExitTime,KernelTime,Usertime);
  LabelCreate.Caption := DateTimeToStr(FileTimeToLocalDateTime(CreateTime));
  LabelExit.Caption := DateTimeToStr(FileTimeToLocalDateTime(ExitTime));
  LabelKernel.Caption := TimeToStr(FileTimeToDateTime(KernelTime));
  LabelUser.Caption := TimeToStr(FileTimeToDateTime(UserTime));
end;
Er zeigt mir auch alle Werte richtig an bis auf den Wert KernelTime: Da steht immer 00:00:00 und es ändert sich auch nichts daran. Ich rufe das alles mit einem Timmer alle 50msek. auf. Ich rufe ein Programm auf, dass die CPU alle regelmößig auslastet (alle 6 sek., Fibonucci Algorithmus).

Ich habe noch nicht den Vergleich über einen Zeitram vorgenommen, weil es momentan meiner Ansicht nach keinen Sinn macht.

Beste Grüße
Ulrich
Ulrich Strauer
  Mit Zitat antworten Zitat