我正在尝试在我的 Inno Setup 项目中实现异步 WMI 查询。但我正在努力处理事件定义。我在行中遇到了一个类型不匹配
错误
objSink.OnCompleted := @WMI_OnCompleted;
我假设我的事件定义是错误的。我如何才能为事件找到正确的对象类型?
procedure QueryWMIAsync(Qry: string; var objSink: Variant);
var
WbemLocator, WbemServices, WbemObjects: Variant;
begin
log('WMI AsyncQuery: '+Qry);
try
WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
objSink.OnCompleted := @WMI_OnCompleted; //<----- Error: Type mismatch
objSink.OnObjectReady := @WMI_OnObjectReady;
WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
WbemServices.ExecQueryAsync(objSink, Qry);
except
MsgBox('ERROR on WMI Query <'+Qry+'>: '+GetExceptionMessage,mbError,MB_OK);
end;
end;
procedure WMI_OnCompleted(hResult: HRESULT; error: Variant; asyncContext: Variant);
begin
end;
最佳答案
根据 Inno Setup 新闻组,这实际上似乎是不可能的。至少用我的方法:
http://news.jrsoftware.org/read/article.php?id=30095&group=jrsoftware.innosetup.code#30095
关于asynchronous - Inno Setup 中的异步 WMI 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37570747/