CPU Temp auslesen
-
Hallo
Ich versuche gerade die CPU Temp mit Hilfe von WMI in meiner MFC App auszulesen.
Leider bricht er aber immer in folgender Zeile ab d.h. der returnwert ist -2191454919 oder so ähnlich, also nicht S_OK (pClassObject ist NULL danach)hRes = pEnumObject->Next(WBEM_INFINITE,uCount, &pClassObject, &uReturned);
Hier ist der komplette Code den ich benutze:
void CFFMpeg_guiDlg::ReadCPUTemp () { HRESULT hr = CoInitializeEx (0, COINIT_MULTITHREADED); if (FAILED (hr)) { return; } IWbemLocator* pIWbemLocator = NULL; IWbemServices* pWbemServices = NULL; IEnumWbemClassObject* pEnumObject = NULL; if (CoCreateInstance (CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pIWbemLocator) != S_OK) return; if (pIWbemLocator->ConnectServer ( CComBSTR (L"ROOT\\WMI"), NULL, NULL, 0, NULL, 0, 0, &pWbemServices) != S_OK) return; HRESULT hRes; hRes = pWbemServices->ExecQuery (CComBSTR (L"WQL"), CComBSTR (L"SELECT * FROM MSAcpi_ThermalZoneTemperature"),WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumObject); if (hRes != S_OK) { return; } hRes = pEnumObject->Reset(); if (hRes != S_OK) { return; } ULONG uCount = 1, uReturned; IWbemClassObject* pClassObject; --> hRes = pEnumObject->Next(WBEM_INFINITE,uCount, &pClassObject, &uReturned); if(hRes != S_OK) { return; } VARIANT v; int i = 0; BSTR strClassProp = SysAllocString(L"CurrentTemperature"); hRes = pClassObject->Get(strClassProp, 0, &v, 0, 0); if (hRes != S_OK) { MessageBox("Could not Get Value"); return; } SysFreeString(strClassProp); // _bstr_t bstrpath = &v; //just to convert bstr to ansi // char* strpath=(char*)bstrpath; // // if (succeeded(hres)) // messagebox(strpath); // else // messagebox("error in getting object"); VariantClear(&v); pIWbemLocator->Release(); pWbemServices->Release(); pEnumObject->Release(); pClassObject->Release(); CoUninitialize(); }
Wäre für ein paar Tips dankbar
mfg
Erich