02-04-2019, 05:34 PM
When calling functions through IDispatch, VARIANT is used as an intermediate type for parameters and the return value. In this case it is of type VT_NULL sometimes, and QM then cannot convert to string (although should).
Macro Macro319
Macro Macro319
def wbemFlagReturnImmediately 16
def wbemFlagForwardOnly 32
int IFlags = wbemFlagReturnImmediately|wbemFlagForwardOnly
IDispatch objWMIService._getfile("winmgmts:")
IDispatch colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter",@,IFlags)
IDispatch objProcess
foreach objProcess colProcesses
,VARIANT v=objProcess.AdapterType
,;out v.vt
,sel(v.vt) case VT_BSTR _s=v; case VT_NULL _s="<null>"; case else end "error"
,out _s
,;_s=objProcess.ProductName
,;out _s