WMI Win32_Processor
-
Hallo,
Ich habe hier ein beispiel gefunden zu Win32_Processor und wollte frage wie ich die einzelnen Klassen-Variablen auslesen kann.
// wbemuuid.lib nicht vergessen! #include <windows.h> #include <tchar.h> #include <wbemdisp.h> int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { ISWbemObjectSet* pObjectSet = NULL; ISWbemServices* pServices = NULL; ISWbemObject* pObject = NULL; IEnumVARIANT* pEnumObj = NULL; IUnknown* pUnk = NULL; VARIANT varItem; HRESULT hr; BSTR bstrClass, bstrName; CoInitialize(NULL); if(SUCCEEDED(CoGetObject(OLESTR("winmgmts:"), NULL, IID_ISWbemServices, (void**)&pServices))) { bstrClass = SysAllocString(OLESTR("Win32_Processor")); if(SUCCEEDED(pServices->InstancesOf(bstrClass, 0, NULL, &pObjectSet))) { if(SUCCEEDED(pObjectSet->get__NewEnum(&pUnk))) { if(SUCCEEDED(pUnk->QueryInterface(IID_IEnumVARIANT, (void**)&pEnumObj))) { while(S_OK == pEnumObj->Next(1, &varItem, NULL)) { if(FAILED(VariantChangeType(&varItem, &varItem, 0, VT_UNKNOWN))) { VariantClear(&varItem); continue; } pObject = NULL; hr = V_UNKNOWN(&varItem)->QueryInterface(IID_ISWbemObject, (void**)&pObject); VariantClear(&varItem); if(FAILED(hr)) continue; bstrName = NULL; pObject->GetObjectText_(0, &bstrName); MessageBoxW(NULL, bstrName, L"Processor Info", MB_OK); SysFreeString(bstrName); pObject->Release(); } pEnumObj->Release(); } pUnk->Release(); } pObjectSet->Release(); } SysFreeString(bstrClass); pServices->Release(); } CoUninitialize(); return(0); }Danke!
-
Hallo, ich habe eine Klasse gebastelt:
//get: BSTR value = prozessor.Property(L"Architecture"); //set: prozessor.Property(L"Architecture", L"blah"); BSTR CSWbemObject::Property(WCHAR *prop, WCHAR *value=NULL) { BSTR rprop = 0; ISWbemPropertySet* pPropSet = NULL; ISWbemProperty* pProp = NULL; HRESULT hr; VARIANT v; if (m_objWbemObject) // ISWbemObject* { if(!m_objWbemObject->get_Properties_(&pPropSet)) { v.vt = VT_EMPTY; BSTR bstrProperty = SysAllocString(prop); hr = pPropSet->Item(bstrProperty, 0, &pProp); SysFreeString(bstrProperty); pPropSet->Release(); if(!hr) { if (!value) // get { hr = pProp->get_Value(&v); pProp->Release(); if (!hr) { if (!VariantChangeType(&v, &v, 0, VT_BSTR)) { rprop = v.bstrVal; } else VariantClear(&v); } } else // put { v.vt = VT_BSTR; v.bstrVal = SysAllocString(value); pProp->put_Value(&v); VariantClear(&v); } } } } return rprop; }