Ich versuche einen weg zu finden CPU Auslastung unter einem 64 Bit Windows auszulesen.
Der Code soll jedoch mit aktivierten
UAC funktionieren, damit fallen also Performance Counters aus, weil die App dazu Admin Rechte braucht.
Ich hab hier einen Code gefunden:
http://www.swissdelphicenter.ch/de/showcode.php?id=969
Dieser funktioniert jedoch nur unter 32 Bit (getestet mit Windows 7).
Unter 64 Bit gibt es dieses Problem:
// get new CPU's idle time
status := NtQuerySystemInformation(SystemPerformanceInformat ion, @SysPerfInfo, SizeOf(SysPerfInfo), nil);
if status <> 0 then Exit;
Status liefert hier <> 0 und nach Auswertung des Fehlercodes kommt raus dass dieser record:
TSystem_Performance_Information = packed record
liIdleTime: LARGE_INTEGER; {LARGE_INTEGER}
dwSpare: array[0..75] of DWORD;
end;
eine andere Länge hat als von NtQuerySystemInformation erwartet.