Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Remote CPU load per WMI auslesen
uranop - Fr 10.07.09 09:27
Titel: Remote CPU load per WMI auslesen
Hallo Jungs,
ich habe mal ein Anliegen : )
Ich weiss das es das Thema hier und da schon mal gab,
mir gehts aber nicht darum wie, sondern eher warum nicht : P
AAAlso ...
Ich möchte per WMI die CPU last rausbekommen. Das funktioniert einwandfrei .
root\cimv2
Win32_Processor
LoadPercentage
Im Test Tool von Magenta Systems (
http://www.magsys.co.uk/delphi/ ) kann ich einwandfrei alle Sachen auslesen die wich will. Im ganzen Firmennetz kein Problem.
Möchte ich nun aber die Load selber auslesen via
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| function GetMWIinfo(wmiHost, wmiClass, wmiProperty : string):string; var Locator: ISWbemLocator; Services: ISWbemServices; SObject: ISWbemObject; ObjSet: ISWbemObjectSet; SProp: ISWbemProperty; Enum: IEnumVariant; Value: Cardinal; TempObj: OleVariant; SN: string; begin try Locator := CoSWbemLocator.Create; Services := Locator.ConnectServer(wmiHost, 'root\cimv2', '', '', '','', 0, nil); ObjSet := Services.ExecQuery('SELECT * FROM '+wmiClass+'', 'WQL', wbemFlagReturnImmediately and wbemFlagForwardOnly , nil); Enum := (ObjSet._NewEnum) as IEnumVariant; while (Enum.Next(1, TempObj, Value) = S_OK) do begin SObject := IUnknown(tempObj) as ISWBemObject; SProp := SObject.Properties_.Item(wmiProperty, 0); if VarIsNull(SProp.Get_Value) then result := '' else begin SN := SProp.Get_Value; result := SN; end; end; except on exception do result := ''; end; end;
Labelcpu.Caption := GetWMIinfo('Win32_Processor','LoadPercentage'); |
friert mir das ganze Programm ein.
Ich weiss, das es noch was git mit PerfFormattedData_Perf_Processor , oder so, aber das hat den gleichen Effekt.
Hat da wer ne Ahnung warum das so sein könnte ?
Moderiert von
Narses: Titel erweitert.
BenBE - Fr 10.07.09 09:39
Mögliche Ursachen:
Du hast dich auf dem Remote-System nicht ausreichend oder inkorrekt authentifiziert und bekommst daher keinen Zugriff.
Aber BTW: Du hast einen Buchstabendreher in deinem Funktionsnamen. es heißt WMI und nicht MWI ...
uranop - Fr 10.07.09 09:49
mmh, das Programm fiert ja selbst lokal ein ...
und remote habe ich domainadmin Rechte also kein Thema
der Buchstabendreher macht hier jetzt nichts, da die letzte zeile des codes nur eben per Hand hingeschrieben wurde.
Im eigentlichen Prog steht zwar auch mwi aber 2 mal : P
BenBE - Fr 10.07.09 10:04
Hast Du zeilenweise mal durchdebuggt und geschaut, in welcher Zeile er hängen bleibt? Das könnte u.U. schon einen Hinweis auf das Problem geben.
Achte zudem mal darauf, was GetLastError nach jedem API-Aufruf meldet.
uranop - Fr 10.07.09 11:05
Hi,
ich weiss nun wo ran es gelegen hat...
Ich habe zeitgleich einmal alle laufenden Prozesse und die CPU last abgefragt,
das ganze im 1000ms Takt ... das war wohl zu schnell ...
Ich habe nun alles auf 5000ms reingestellt und es updatet sich alles normal.
is zwar etwas lahm aber naja
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!