您是否知道爲什麼代碼塊會在某些計算機上否定「無法將類型變量(Null)轉換爲類型(OleStr)」,而不是所有這些計算機都會生成錯誤消息。無法將類型變量(Null)轉換爲類型(OleStr)
function GetWMIstringSW(const WMIClass, WMIProperty:string): string;
const
wbemFlagForwardOnly = $00000020;
var
FWbemObjectSet: OLEVariant;
FWbemObject : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
LNode : TTreeNode;
LNode2 : TTreeNode;
begin
Result:='';
FWbemObjectSet:= FWMIService.ExecQuery(Format('Select %s from %s',[WMIProperty, WMIClass]),'WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
while oEnum.Next(1, FWbemObject, iValue) = 0 do
begin
if not VarIsNull(FWbemObject.Properties_.Item(WMIProperty).Value) then
Result:=FWbemObject.Properties_.Item(WMIProperty).Value;
LNode := ClientForm.TreeView1.Items.AddChild(Node, Format('%s',[String(FWbemObject.Name)]));
LNode2 := ClientForm.TreeView1.Items.AddChild(LNode, Format('%s',[String(FWbemObject.Version)]));
FWbemObject:=Unassigned;
end;
end;
的功能,然後在FORMCREATE執行:
GETWMIstringSW('Win32_Product','Name');
非常感謝你的幫助。
將變異爲空? – 2013-04-25 21:35:36
爲什麼不使用準備好的'MagWMI'包裝? – 2013-04-26 10:30:23