Mã:
int main(){ // Bước 1: Khởi tạo HRESULT hres; ULONG uReturn = 0; VARIANT val; WCHAR szDeviceId[255]; WCHAR szIntanceName[255]; hres = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hres)) { MessageBox(0, L"Failed to initialize COM library.", 0, MB_ICONERROR); return 0; // Program has failed. } hres = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL ); if (FAILED(hres)) { MessageBox(0, L"Failed to initialize security.", 0, MB_ICONERROR); CoUninitialize(); return 0; // Program has failed. } // Bước 2: Thiết lập IWbemLocator *pLoc = NULL; hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc); if (FAILED(hres)) { MessageBox(0, L"Failed to create IWbemLocator object.", 0, MB_ICONERROR); CoUninitialize(); return 0; // Program has failed. } // Bước 3: Kết nối IWbemServices *pSvc_CIMV2 = NULL; hres = pLoc->ConnectServer(_bstr_t(L"ROOT\\CIMV2"), NULL, NULL, 0, NULL, 0, 0, &pSvc_CIMV2); if (FAILED(hres)) { MessageBox(0, L"Could not connect to ROOT\\CIMV2 WMI namespace.", 0, MB_ICONERROR); if (pLoc) pLoc->Release(); CoUninitialize(); return 0; } // Proxy hres = CoSetProxyBlanket(pSvc_CIMV2, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE ); if (FAILED(hres)) { MessageBox(0, L"Could not set proxy blanket.", 0, MB_ICONERROR); if (pSvc_CIMV2) pSvc_CIMV2->Release(); if (pLoc) pLoc->Release(); CoUninitialize(); return 0; } // Bước 4: Truy vấn IEnumWbemClassObject* pEnum_NetworkAdapter = NULL; hres = pSvc_CIMV2->ExecQuery(bstr_t("WQL"), bstr_t("SELECT * FROM Win32_NetworkAdapter WHERE AdapterTypeId = 0"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnum_NetworkAdapter); if (FAILED(hres)) { MessageBox(0, L"Query for operating system name failed (Win32_NetworkAdapter).", 0, MB_ICONERROR); if (pSvc_CIMV2) pSvc_CIMV2->Release(); if (pLoc) pLoc->Release(); CoUninitialize(); return 0; } // Bước 5: Duyệt kết quả IWbemClassObject *pObj_NetworkAdapter; while (pEnum_NetworkAdapter) { HRESULT hr = pEnum_NetworkAdapter->Next(WBEM_INFINITE, 1, &pObj_NetworkAdapter, &uReturn); if(uReturn == 0) break; hr = pObj_NetworkAdapter->Get(L"Name", 0, &val, 0, 0); wprintf(L"NIC Name: %s
", val.bstrVal); hr = pObj_NetworkAdapter->Get(L"PNPDeviceID", 0, &val, 0, 0); wprintf(L"PNPDeviceID: %s
", val.bstrVal); // Lưu giữ lại giá trị của PNPDeviceID wcscpy(szDeviceId, val.bstrVal); int nLen = wcslen(szDeviceId); UPCASE(szDeviceId); /*************************** Truy vấn lồng *************************/ // Bước 5.1: Kết nối IWbemServices *pSvc_WMI = NULL; hres = pLoc->ConnectServer(_bstr_t(L"ROOT\\WMI"), NULL, NULL, 0, NULL, 0, 0, &pSvc_WMI); if (FAILED(hres)) { MessageBox(0, L"Could not connect to ROOT\\WMI namespace.", 0, MB_ICONERROR); if (pLoc) pLoc->Release(); CoUninitialize(); return 0; } // Proxy hres = CoSetProxyBlanket(pSvc_WMI, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE ); if (FAILED(hres)) { MessageBox(0, L"Could not set proxy blanket.", 0, MB_ICONERROR); if (pSvc_WMI) pSvc_WMI->Release(); if (pLoc) pLoc->Release(); CoUninitialize(); return 0; } // Bước 5.2: Truy vấn: MSPower_DeviceWakeEnable ========================================= IEnumWbemClassObject* pEnum_DeviceWakeEnable = NULL; hres = pSvc_WMI->ExecQuery(bstr_t("WQL"), bstr_t("SELECT * FROM MSPower_DeviceWakeEnable"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnum_DeviceWakeEnable); if (FAILED(hres)) { MessageBox(0, L"Query for operating system name failed (MSPower_DeviceWakeEnable).", 0, MB_ICONERROR); if (pSvc_WMI) pSvc_WMI->Release(); if (pLoc) pLoc->Release(); CoUninitialize(); return 0; } // Bước 5.3: Duyệt kết quả IWbemClassObject *pObj_DeviceWakeEnable; while (pEnum_DeviceWakeEnable) { HRESULT hr = pEnum_DeviceWakeEnable->Next(WBEM_INFINITE, 1, &pObj_DeviceWakeEnable, &uReturn); if(uReturn == 0) break; hr = pObj_DeviceWakeEnable->Get(L"Instancename", 0, &val, 0, 0); wprintf(L"+ Instance Name: %s
", val.bstrVal); wcsncpy(szIntanceName, val.bstrVal, nLen); szIntanceName[nLen] = 0; UPCASE(szIntanceName); hr = pObj_DeviceWakeEnable->Get(L"Enable", 0, &val, 0, 0); wprintf(L" -> Enable [Boolean]: %d
", val.boolVal); VariantClear(&val); // Hehe ! Đây rồi if (wcscmp(szDeviceId, szIntanceName) == 0) { //MessageBox(0, L"OK", 0, 0); VARIANT v; VariantInit(&v); V_VT(&v) = VT_BOOL; V_BOOL(&v) = 0; // Tại sao đoạn này ko có tác dụng HRESULT h = pObj_DeviceWakeEnable->Put(L"Enable", 0, &v, CIM_BOOLEAN); //switch (h) //{ // case WBEM_E_FAILED: printf("WBEM_E_FAILED"); break; // case WBEM_E_INVALID_PARAMETER: printf("WBEM_E_INVALID_PARAMETER"); break; // case WBEM_E_OUT_OF_MEMORY: printf("WBEM_E_OUT_OF_MEMORY"); break; // case WBEM_E_TYPE_MISMATCH: printf("WBEM_E_TYPE_MISMATCH"); break; // case WBEM_S_NO_ERROR: printf("WBEM_S_NO_ERROR"); break; //} //MessageBox(0, L"OK", 0, 0); VariantClear(&v); } if (pObj_DeviceWakeEnable) pObj_DeviceWakeEnable->Release(); } if (pEnum_DeviceWakeEnable) pEnum_DeviceWakeEnable->Release(); printf(" -----
"); // Bước 5.4: Truy vấn: MSNdis_DeviceWakeOnMagicPacketOnly ========================================= IEnumWbemClassObject* pEnum_MagicPacketOnly = NULL; hres = pSvc_WMI->ExecQuery(bstr_t("WQL"), bstr_t("SELECT * FROM MSNdis_DeviceWakeOnMagicPacketOnly"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnum_MagicPacketOnly); if (FAILED(hres)) { MessageBox(0, L"Query for operating system name failed (MSNdis_DeviceWakeOnMagicPacketOnly).", 0, MB_ICONERROR); if (pSvc_WMI) pSvc_WMI->Release(); if (pLoc) pLoc->Release(); CoUninitialize(); return 0; } // Bước 5.3: Duyệt kết quả IWbemClassObject *pObj_MagicPacketOnly; while (pEnum_MagicPacketOnly) { HRESULT hr = pEnum_MagicPacketOnly->Next(WBEM_INFINITE, 1, &pObj_MagicPacketOnly, &uReturn); if(uReturn == 0) break; hr = pObj_MagicPacketOnly->Get(L"InstanceName", 0, &val, 0, 0); wprintf(L" Instance Name: %s
", val.bstrVal); wcsncpy(szIntanceName, val.bstrVal, nLen); szIntanceName[nLen] = 0; UPCASE(szIntanceName); // Hehe! Đây rồi if (wcscmp(szDeviceId, szIntanceName) == 0) { } if (pObj_MagicPacketOnly) pObj_MagicPacketOnly->Release(); } if (pEnum_MagicPacketOnly) pEnum_MagicPacketOnly->Release(); /***************************************************************/ if (pObj_NetworkAdapter) pObj_NetworkAdapter->Release(); } if (pEnum_NetworkAdapter) pEnum_NetworkAdapter->Release(); VariantClear(&val); CoUninitialize(); getchar(); return 1;
}
Trứng rung điều khiển từ xa Vibrator Spark Of Love Sản phẩm trứng rung bluetooth có điều khiển từ xa này được thiết kế với tông màu Rose Gold viền kim khí trải qua. kích tấc 7,4cm x 3,5cm giúp trứng...
TOP 3 trùy rung điều khiển từ xa...