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