Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WMI: Refresh von Daten (https://www.delphipraxis.net/110989-wmi-refresh-von-daten.html)

Profiler 27. Mär 2008 18:14


WMI: Refresh von Daten
 
Hallo,

ich möchte gern die Temperatur des Prozessors per WMI bekommen, was auch bereits funktioniert, nur sind die Daten veraltet. Ich habe in der MSDN ein bisschen rumgelesen und erfahren, dass es eine Refresh-Funktion gibt. Dort ist auch ein Beispielcode beschrieben, aber ich bekomme ihn nicht in Delphi umgesetzt. Könnt ihr mir dabei Helfen?

Hier der Beispielcode:
Code:
 ' Get namespace connections
set objServicesCimv2 = GetObject("winmgmts:root\cimv2")
set objServicesDefault = GetObject("winmgmts:root\default")

' Create a refresher object
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")

' Add a single object (SWbemObjectEx) to the refresher. The "@"
' is used because _CIMOMIdentification is a singleton class- only
' one instance exists. Note that the
' SWbemRefreshableItem.Object property must
' be specified or the SWbemRefresher.Refresh call will fail.

set objRefreshableItem1 = objRefresher. _
    Add (objServicesDefault, "__CIMOMIdentification=@").Object

' Add an enumerator (SWbemObjectSet object)
' to the refresher. Note that the
' SWbemRefreshableItem.ObjectSet property
' must be specified or the SWbemRefresher.Refresh call will fail.
set objRefreshableItem2 = objRefresher. _
    AddEnum (objServicesCimv2, "Win32_Process").ObjectSet

' Display number of items in refresher and update the data.
MsgBox "Number of items in refresher = " & objRefresher.Count
objRefresher.Refresh

' Iterate through the refresher. SWbemRefreshable
' Item.IsSet checks for whether the item is an enumerator.
for each RefreshableItem in objRefresher
 if RefreshableItem.IsSet then
    MsgBox "Item with index " & RefreshableItem.Index &_
    " is an enumerator containing "_
    & RefreshableItem.ObjectSet.Count & " processes"
 else
      MsgBox "Item with index " & RefreshableItem.Index _
          & " is a single object containing WMI version "_
          & objRefreshableItem1.VersionCurrentlyRunning
 end if
next
Wie muss dieses Beispiel in Delphi umgesetzt werden?

Gruß
Profiler

Der.Kaktus 27. Mär 2008 18:57

Re: WMI: Refresh von Daten
 
Hallo,

schau mal hier..vielleicht wirst Du fuendig --> WMI Component

Profiler 27. Mär 2008 19:06

Re: WMI: Refresh von Daten
 
Hallo,

danke für die rasche Antwort! Die MAGWMI uni habe ich schon versucht, die Funktionen dort geben mir auch nur die nicht aktuellen Werte zurück. Eine Refresher ist dort leider auch nicht verwendet wurden.
Hast du sonst noch eine Idee oder kann mir sonst noch jemand bei dem beschriebenen Problem helfen?

Gruß
Profiler

Der.Kaktus 27. Mär 2008 19:17

Re: WMI: Refresh von Daten
 
schau mal hier..vielleicht nen Ansatz CPU-Temp

Profiler 27. Mär 2008 19:26

Re: WMI: Refresh von Daten
 
Ich habe bereits ein Tool geschrieben, was mir die Temperaturen aus dem Embedden Controller von IBM ThinkPad Notebooks auslesen kann, aber ich würde gerne noch das Auslesen per WMI hinbekommen. Das Auslesen funktioniert ja bereis, aber wenn ich mir die Temperaturen per WMI hole, dann sind die nicht aktuell, wenn ich diese mit denen aus dem EC oder von anderen Tools vergleiche. Ich muss also wissen, wie das mit dem Refresher funktioniert.

Gruß
Profiler

PS: Mein Tool findet ihr unter http://fancontrol.de/view

Alter Mann 28. Mär 2008 17:43

Re: WMI: Refresh von Daten
 
Hallo Profiler,

ich gehe mal davon aus, dass du die 'Microsoft WMI Scripting V1.2 Library' als Typlib verwendest.

In diesem guten Stück gibt es ISWbemRefresher, ISWbemRefresher und ISWbemObjectEx.

Gruß

Profiler 29. Mär 2008 02:38

Re: WMI: Refresh von Daten
 
Ja in dieser Annahme gehst du richtig. Ich weiss auch, dass es dort solche Refreshertypen und Interfaces gibt, aber ich bekomme es einfach nicht hin, vielleicht kannst du mir ein Beispiel zeigen, wie ich einen Wert refreshe?
Ein Objekt von ISWbemObjectEx sozusagen hat ja eine Refresh_(...) - Funktion, nur wie bekomme ich den WMI-Wert in solch ein Objekt? Ich finde nur Funktionen, die mir ein ISWbemObject zurückliefern, welche die Refresh_ - Funktion nicht implementiert :(

Gruß
Profiler

Alter Mann 29. Mär 2008 16:01

Re: WMI: Refresh von Daten
 
Hi Profiler,

liest du dir eigentlich Deine eigenen Beispiele durch?!
Steht doch alles drin, ist zwar VB, aber alles da.

Gruß

Der.Kaktus 29. Mär 2008 16:13

Re: WMI: Refresh von Daten
 
Zitat:

Zitat von Alter Mann
Hi Profiler,

liest du dir eigentlich Deine eigenen Beispiele durch?!
Steht doch alles drin, ist zwar VB, aber alles da.

Gruß

Hallo,
er wollte ja auch eine Hilfe zur Umstellung von VB nach Delphi!! :gruebel:

Profiler 29. Mär 2008 18:15

Re: WMI: Refresh von Daten
 
Hi Der.Kaktus,

genauso sieht es aus! Das Beispiel ist direkt aus der MSDN und wird so wohl auch funktionieren, aber ich bekomme es nicht in Delphi umgesetzt, dabei bräuchte ich eure Hilfe!

Gruß
Profiler


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz