![]() |
Durch eigenen Prozess verursachte CPU-Auslastung bekommen???
Hallo!
Wie man die aktuelle CPU-Aulastung erhält, haben Matze und eigene Teilnemer bereits mehrmals beschrieben. Gibt es auch eine Möglichkeit, die CPU-Auslastung der einzelnen Prozesse zu bekommen, zum Beispiel die des eigenen Prozesses? Das wäre schön! Mindestens einen Beitrag gab's bereits zu diesem Thema, hier: ![]() Zitat:
Danke! |
DP-Maintenance
Dieses Thema wurde von "Luckie" von "Object-Pascal / Delphi-Language" nach "Windows API / MS.NET Framework API" verschoben.
WinAPI Frage. |
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
wenn es nur um den CPU-Load des eigenen Processes geht, ist dies sehr einfach:
Delphi-Quellcode:
PS: ev. wäre dies etwas für die Codelib, da diese Frage immer wieder kommt......
var
LastTick : LongWord; LastTime : Int64; CPUCount : Word; // einmal initialisieren: Var CreationTime, ExitTime, KernelTime, UserTime : TFILETIME; SystemInfo : TSystemInfo Begin LastTick:=GetTickCount(); GetProcessTimes(GetCurrentProcess(),CreationTime,ExitTime,KernelTime,UserTime); LastTime:=Int64(KernelTime) + Int64(UserTime); GetSystemInfo(SystemInfo); CPUCount:=SystemInfo.dwNumberOfProcessors; // periodisch aufrufen (z.B. jede Sekunde): Var CreationTime, ExitTime, KernelTime, UserTime : TFILETIME; TickDelta : LongWord; TimeDelta : Int64; begin TickDelta:=GetTickCount() - LastTick; Inc(LastTick,TickDelta); GetProcessTimes(GetCurrentProcess(),CreationTime,ExitTime,KernelTime,UserTime); TimeDelta:=(Int64(KernelTime) + Int64(UserTime)) - LastTime; Inc(LastTime,TimeDelta); Label.Caption:=Format('CPU load: %.1f %%',[TimeDelta / 10000 / CPUCount / TickDelta * 100]); |
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
Und für alle anderen Prozesse
Delphi-Quellcode:
als ersten Parameter eben die ProzessID abgeben.
GetProcessTimes(GetCurrentProcess(),CreationTime,ExitTime,KernelTime,UserTime);
|
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
Zitat:
GetCurrentProcess() liefert ein Pseudo-Handle des gegenwärtigen Prozesses... dementsprechend mittels OpenProcess() den Handle des fremden Prozesses holen... |
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
OK, knapp da neben. ;)
|
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
"Knapp daneben ist auch vorbei..." ;-)
|
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
Danke für schnelle Antwort!
Kann man die Kode von Basilikum in einen Thread packen? Ich versuche es jetzt gerade, klappt aber nicht so richtig. An dieser Zeile
Delphi-Quellcode:
bricht es ab mit der Fehlermeldung:
Form1.Label1.Caption := Format('CPU load: %.1f %%',[TimeDelta / 10000 / CPUCount / TickDelta * 100]);
Invalid floating pointer operation. Woran liegt es? |
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
1. Gibt der Code van Basilikum an wie viel CPU-Zeit der Prozess verbraucht und nicht die Auslastung in Prozent.
![]() Zitat:
3. Überprüf mal die Inahlte der variablen, was darin steht. |
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz