我应该如何使用WIN32OLE实现IDownloadProgressChangedCallback?

我想在Ruby中使用WIN32OLE下载Windows更新。 我遇到的问题知道哪些COM对象使用,以获得IUpdateDownloader :: BeginDownload所需的参数。 目前,我可以执行下载更新的同步版本,但我真的想知道如何才能使用asynchronous方法。

像下面这样的东西现在工作:

require 'win32ole' muSession = WIN32OLE.new('Microsoft.Update.Session') availableUpdates = muSession.CreateUpdateSearcher().Search("IsInstalled=0 and Type='Software'").Updates muUpdateColl = WIN32OLE.new('Microsoft.Update.UpdateColl') availableUpdates.each do |update| update.AcceptEula() muUpdateColl.Add(update) end updateDownloader = WIN32OLE.new('Microsoft.Update.Session').CreateUpdateDownloader() updateDownloader.Updates = muUpdateColl downloadResult = updateDownloader.Download() 

但是,而不是调用“下载()”,我想使用“BeginDownload()”。 我如何实例化IDownloadProgressChangedCallback (例如)。 我认为在C#中这样做可能很明显,但是使用WIN32OLE,我不知道如何创build对象。