Die Daten, auf die Sie verweisen, sind unter Verwendung spezifischer -Aufrufe verfügbar. Sie können Win32_Process abfragen, um alle Arten von prozessspezifischen Informationen abzurufen, und Win32_PerfFormattedData_PerfProc_Process abfragen, um die Thread-Anzahl abzurufen, und ein Handle zu einem Thread geben (was ich glaube, dass Sie suchen) können Sie Win32_PerfRawData_PerfProc_Thread abfragen, um den Prozentsatz der Prozessorzeit zu erhalten.
Es gibt eine library available for Delphi, die Wrapper für die meisten WMI-Abfragen bereitstellt. Es bedarf jedoch einiger Experimente, um die genaue Suchanfrage zu erhalten, nach der Sie suchen. Die Abfragesyntax ist sehr sql wie zum Beispiel auf meinem System für threadid 8 den Prozentsatz der Prozessorzeit zurückzukehren, für Prozess-ID 4:
SELECT PercentProcessorTime FROM Win32_PerfRawData_PerfProc_Thread
WHERE IdProcess=4 and IdThread=8
Die meisten Programme, die vorliegenden statistischen Informationen über laufende Prozesse jetzt verwenden WMI, um diese Informationen abzufragen.
Aber das gibt Ihnen nur die Zeit, die der Thread ausgegeben wurde, nicht den Prozentsatz der CPU-Auslastung. Sie können die Gesamtzeit aus den WMI-Aufrufen auch zusammen mit dem Prozentsatz in einer einzelnen Abfrage abrufen. – skamradt
Ich denke, dass Sie die Menge der CPU-Nutzung ableiten können, indem Sie jede Sekunde abfragen, und wenn seine "Kernel + Usertime" um 1,0 erhöht, bedeutet das, dass es 100% eines Kerns für diese Sekunde verwendet, ja? – rogerdpack