Autor Beitrag
uranop
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: 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

ausblenden volle Höhe 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  // These are all needed for the WMI querying process
  Locator:  ISWbemLocator;
  Services: ISWbemServices;
  SObject:  ISWbemObject;
  ObjSet:   ISWbemObjectSet;
  SProp:    ISWbemProperty;
  Enum:     IEnumVariant;
  Value:    Cardinal;
  TempObj:  OleVariant;
  SN: string;
begin
  try
  Locator := CoSWbemLocator.Create;  // Create the Location object
  // Connect to the WMI service, with the root\cimv2 namespace
   Services :=  Locator.ConnectServer(wmiHost, 'root\cimv2''''''',''0nil);
  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 // Trap any exceptions (Not having WMI installed will cause one!)
   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 user profile iconNarses: Titel erweitert.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: 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