Autor |
Beitrag |
uranop
      
Beiträge: 149
Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
|
Verfasst: Fr 10.07.09 09:27
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 ( 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
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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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 ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
uranop 
      
Beiträge: 149
Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
uranop 
      
Beiträge: 149
Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
|
Verfasst: 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
|
|
|