分别显示
cpu参数,
显卡参数
硬盘参数
内存信息(随机存储器容量)
代码
#include <iostream>
#include <comdef.h>
#include <Wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
void QueryWMI(IWbemServices* pSvc, const wchar_t* query, const wchar_t* propertyName) {
IEnumWbemClassObject* pEnumerator = NULL;
HRESULT hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t(query),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
if (FAILED(hres)) {
std::cerr << "Query failed. Error code = 0x" << std::hex << hres << std::endl;
return;
}
IWbemClassObject* pclsObj = NULL;
ULONG uReturn = 0;
while (pEnumerator) {
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn);
if (0 == uReturn) {
break;
}
VARIANT vtProp;
hr = pclsObj->Get(propertyName, 0, &vtProp, 0, 0);
if (SUCCEEDED(hr) && vtProp.vt != VT_NULL) {
std::wcout << propertyName << L" : " << vtProp.bstrVal << std::endl;
}
else {
std::wcout << propertyName << L" : Not available" << std::endl;
}
VariantClear(&vtProp);
pclsObj->Release();
}
pEnumerator->Release();
}
int main() {
HRESULT hres;
// Initialize COM.
hres = CoInitializeEx(0, COINIT_MULTITHREADED);
if (FAILED(hres)) {
std::cerr << "Failed to initialize COM library. Error code = 0x" << std::hex << hres &