Я признаю, что это не очень хороший ответ, но обычный способ регистрации событий VBScript - это использование функции GetRef
для получения ссылки на обработчик событий, например, с объектом MSXML2.XMLHTTP
:
Set oHTTP = CreateObject("MSXML2.XMLHTTP")
oHTTP.Open "GET", "http://www.google.com", True
oHTTP.OnReadyStateChange = GetRef("oHTTP_OnReadyStateChange")
Sub oHTTP_OnReadyStateChange
' do something
End sub
oHTTP.Send
Проблема в том, что я попробовал его для вашего кода, т.е.
Set oHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
oHTTP.Open "GET", "http://www.google.com", True
oHTTP.OnResponseFinished = GetRef("oHTTP_OnResponseFinished")
Sub oHTTP_OnResponseFinished
' do something
End sub
oHTTP.Send
, и он не сработал, получая ошибку
Object not ''t не поддерживает это свойство или метод: 'oHTTP.OnResponseFinished'
, но, возможно, это может дать вам отправную точку, или, возможно, вы можете использовать библиотеку MSXML2
вместо этого?обновив этот ответ с помощью другого способа обработки событий COM - используйте второй параметр для функции CreateObject
, который позволяет указать префикс функции, который связывает функции с объектами, например,
Set oHTTP = CreateObject("WinHttp.WinHttpRequest.5.1", "oHTTP_")
oHTTP.Open "GET", "http://www.google.com", True
Sub oHTTP_OnResponseFinished
' do something
End sub
oHTTP.Send
к сожалению, это тоже не работает - должно быть, что IWinHttpRequestEvents
интерфейс недоступен