Mit WMI Prozessortemperatur auslesen
-
Hallo,
ich suche nach einer Möglichkeit, auf verschiedenen (Windows XP-) Systemen die Temperatur des Prozessors auszulesen.
Ich glaube, die einzige Möglichkeit dazu ist WMI.
Soweit ich weiss, liegen die Daten in MSAcpi_ThermalZoneTemperature / CurrentTemperature als Kelvin * 10 vor. (Umrechnung wäre also CurrentTemperature / 10 - 273.15)Nach der Initialisierung von WMI soll nun die Temperatur ausgelesen werden. Ich habe einige Beispiele für WMI im Internet gefunden, u.a. dieses hier:
HRESULT hres; IEnumWbemClassObject* pEnumerator = NULL; hres = pSvc->ExecQuery( bstr_t("WQL"), bstr_t("SELECT * FROM Win32_Process"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); if (FAILED(hres)) { UnInitialize(); return false; } else { IWbemClassObject *pclsObj; ULONG uReturn = 0; while (pEnumerator) { hres = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn); if(0 == uReturn) break; VARIANT vtProp; //Get the value of the Name property hres = pclsObj->Get(L"Name", 0, &vtProp, 0, 0); std::wcout << "Process Name : " << vtProp.bstrVal << std::endl; VariantClear(&vtProp); } return true; }
Wenn ich jetzt "SELECT * FROM Win32_Process" durch "SELECT * FROM MSAcpi_ThermalZoneTemperature" und "Name" durch "CurrentTemperature" ersetze, müsste es ja gehen,
aber dann ist uReturn immer 0..
MfG,
Max
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die meinsten Hauptplatinen unterstützen dieses Feature nicht, deshalb wirst Du damit wohl kaum Glück haben...
PS: Das richtigere wäre vermutlich Win32_TemperatureProbe
-
Hallo,
ich habe den Fehler jetzt:
ich hatte mich nach ROOT\CIMV2 verbunden (wegen Win32_Process), richtig ist ROOT\WMI; dann gibt es auch MSAcpi_ThermalZoneTemperature..@Jochen Kalmbach:
Damit habe ich es auch schon probiert, aber da bekomme ich nichts zurück..
Bei MSAcpi_ThermalZoneTemperature.CurrentTemperature geht es jetzt, daher verwende ich jetzt das, da ich das Prog sowieso eigtl. nur für mich verwende Aber trotzdem danke für die Antwort!