【发布时间】:2014-07-04 19:00:29
【问题描述】:
您好,我正在使用 Visual Studio C++ 2010,但我仍然不擅长它。我正在使用 wmi 查询,我想在计算结果之前使用 if 语句这里是代码
IEnumWbemClassObject* pEnumerator = NULL;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT * FROM Win32_ComputerSystem"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
if (FAILED(hres))
{
cout << "Query for CS failed."
<< " Error code = 0x"
<< hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1; // Program has failed.
}
// Get the data from the query
IWbemClassObject *pclsObj;
ULONG uReturn = 0;
while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
&pclsObj, &uReturn);
if(0 == uReturn)
{
break;
}
VARIANT vtProp;
// Get the value of the Name property
hr = pclsObj->Get(L"Manufacturer", 0, &vtProp, 0, 0);
if (vtProp.bstrVal == "test") //// HERE IS THE PROB HOW TO FIX HERE?I WANT TO SAY IF THE RESULT ="WHATEVER" THEN
wcout << "\Manufacturer : " << vtProp.bstrVal << endl; // or do stuff
VariantClear(&vtProp);
pclsObj->Release();
错误是:错误 C2446:'==':没有从 'const char *' 到 'BSTR' 的转换 我还是一个初学者,我不知道如何解决这个问题,请帮助!!!
【问题讨论】:
-
为什么不使用宽字符串,例如写
_bstr_t( L"WQL" )。他们使用wchar_t而不是char。 -
codeproject.com 上有很多关于 BSTR、_bstr_t、CComBSTR、char*、wchar_t*、std::string 等的精彩文章。如果您将使用 BSTR,它们值得一读公平一点。有一些你不应该忘记的陷阱。
-
提及您的代码 sn-p 已从此处复制可能会有所帮助:msdn.microsoft.com/en-us/library/aa390423(v=vs.85).aspx 我正确吗?
标签: c++ visual-c++ wmi-query operands