Как мне реализовать IDownloadProgressChangedCallback с использованием WIN32OLE?

Я хотел бы загрузить обновления Windows, используя WIN32OLE в Ruby. Я сталкиваюсь с проблемами, зная, какой COM-объект использовать, чтобы получить аргументы, необходимые IUpdateDownloader:: BeginDownload. В настоящее время я могу выполнять синхронную версию загрузки обновлений, но мне бы очень хотелось узнать, как я могу использовать асинхронный метод.

Нечто подобное работает сейчас:

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()

Однако вместо вызова "Download()" я хотел бы использовать "BeginDownload()". Как я могу создать экземпляр IDownloadProgressChangedCallback (например). Я думаю, что это может быть очевидно в C#, но, используя WIN32OLE, я не уверен, как создать объект.

0 ответов

Другие вопросы по тегам