Hi
I trying to get the actual CPU temp in my mfc app, but i have some troubles.
Here is the code I use to get the cpu temp, but the result always gets a strange value when trying to do (pClassObject and uReturned are NULL afterwards)
Here is the whole code I use:Code:hRes = pEnumObject->Next(WBEM_INFINITE,uCount, &pClassObject, &uReturned);
thanks for any advice...Code: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(); }
regards
Erich




Reply With Quote