【发布时间】:2017-04-29 18:20:01
【问题描述】:
我想检测WMI 中的RAM 制造商。我得到奇怪符号而不是实际数据的问题。我也使用wmic 命令检查了它。截图如下。
截图:
我尝试了不同的方法在输出前检查值,但问题仍然存在。
代码:
VARIANT ramManufacturer;
pclsObj->Get(L"Manufacturer", 0, &ramManufacturer, 0, 0);
QString userRAMManufacturer;
QStringList ramProperty;
QStringList ramData;
if (SysStringLen(ramManufacturer.bstrVal) != 0) {
userRAMManufacturer = QString::fromWCharArray(ramManufacturer.bstrVal);
if (!userRAMManufacturer.isEmpty()) {
ramProperty << QObject::tr("Manufacturer");
ramData << userRAMManufacturer;
}
}
或者
if (CComBSTR(ramManufacturer.bstrVal).Length() != 0) {
userRAMManufacturer = QString::fromWCharArray(ramManufacturer.bstrVal);
if (!userRAMManufacturer.isEmpty()) {
ramProperty << QObject::tr("Manufacturer");
ramData << userRAMManufacturer;
}
}
如何解决这个问题?提前致谢。
【问题讨论】:
-
对于初学者来说,您没有检查来自
Get调用的返回值以查看它是否真的成功。所以你的VARIANT ramManufacturer变量用垃圾初始化。您也没有检查Get返回的 VARIANT 的vt成员,以查看它是否实际上是VT_BSTR而不是 ascii 字符串或其他内容。 -
@selbie 好的。我会查一下。感谢您的回复。