WMI Programmierung
-
Hallo,
es gibt ja unter
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/example_creating_a_wmi_application.asp
ein Beispiel wie man mit den WMI-Klassen umgehen muss.
Allerdings steige ich dort nicht so ganz durch, was genau muss ich dort noch ändern um die Win32_NetworkAdapter http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_networkadapter.asp nutzen zu können? Wie kann ich damit jetzt geziehlt auf die Werte zurgreifen?Vielen Dank.
-
hast du nicht vor ein paar tagen das selbe gefragt

zeige doch mal deinen ansatz.
-
Mein Ansatz ist das Beispiel von der msdn.
Ich habe überhaupt keine Ahnung wo ich da jetzt ansetzen muss
-
Mit dem Beispiel-Code von -King-, auf den ich dich schon mehrfach verwiesen hatte, solltest du eigentlich in der Lage sein, die gewünschten Werte auszulesen:
-King- schrieb:
// wbemuuid.lib nicht vergessen! #include <windows.h> #include <tchar.h> #include <wbemdisp.h> VOID ProcessorId(ISWbemObject* pObject) { ISWbemPropertySet* pPropSet = NULL; if(SUCCEEDED(pObject->get_Properties_(&pPropSet))) { ISWbemProperty* pProp = NULL; BSTR bstrName = SysAllocString(L"ProcessorId"); if(SUCCEEDED(pPropSet->Item(bstrName, 0, &pProp))) { VARIANT varValue; VariantInit(&varValue); if(SUCCEEDED(pProp->get_Value(&varValue))) { if(SUCCEEDED(VariantChangeType(&varValue, &varValue, 0, VT_BSTR))) { MessageBoxW(NULL, V_BSTR(&varValue), L"ProcessorId", MB_OK); } } VariantClear(&varValue); pProp->Release(); } SysFreeString(bstrName); pPropSet->Release(); } return; } 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); ProcessorId(pObject); 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); }Wichtig ist auch der Kommentar in der ersten Zeile - WbemUuid.Lib mitlinken (bei mir funktionierte das Ganze aber nur im Release-Modus)