Hallo zusammen,
Habe mir mehrere Möglichkeiten angeschaut um die CPU Auslastung auszulesen,
aber bei jeder kriege ich von normalen Programmen die Auslastung, von Diensten jedoch nicht.
System: Windows 10 x64, meine Anwendung 32bit, der Dienst den ich auslesen will auch 32bit.
Der Dienst Hat auch permanent CPU Auslastung, so zwischen 15 und 20% (laut Windows 10 Taskmanager und Sysinternals Processmonitor)
diese Methode benutze ich grade :
http://www.delphipraxis.net/106890-c...-prozesse.html
Die PID habe ich zum testen, beim Aufruf hardcoded.
Als erstes muss die Anwendung aber über
Admin-Rechte verfügen, sonst schlägt OpenProcess(...) fehl.
Ich denke der Fehler liegt in der Berechnung des eigendlichen Prozenzwertes,bzw gibt es bei Diensten vielleicht eine Besonderheit:
z.b:
function GetCPUTimeForProcess(Process: TCPULOAD): Integer;
.
lKernel = 6171
lUser 34515
dwTime 18528906
=(6171+34515)*100) div 18528906
=0,2195812316172363
=nach dem trunc logischerweise 0
Wenn ich die Formel auf
((lKernel+lUser)*100*100) div (dwTime)
änder schaut es besser aus.
Aber da ich Null Ahnung von GetProcessTimes() habe, und auch nichts spezielles zu Diensten gefunden habe, dachte ich, ich frage mal euch