asynchronous - Inno Setup 中的异步 WMI 查询

标签 asynchronous inno-setup wmi-query

我正在尝试在我的 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/

相关文章:

ios - Swift 中的嵌套异步代码块

javascript - AngularJS : How to execute function in pre-defined order?

javascript - 异步代码,它是如何工作的? promise 和回调

inno-setup - Inno Setup - #define 指令 - 如何使用先前定义的变量?

powershell - WMI命令连接到远程计算机并检索软件版本和安装日期

c#-4.0 - 通过 SoftwareProductLicensing 类查找 Windows 激活时出现的问题

java - springMVC异步如何提高性能

inno-setup - Inno Setup是否应在Update上删除旧文件?

installation - Inno Setup 终止正在运行的进程

c# - 对类型 'Component' 的引用声称它在 'System' 中定义