Car*_*Gil 5 vbscript events httpwebrequest
我使用的程序运行 .VBS 脚本
那么,在VBScript中如何处理WinHttpRequest对象的OnResponseFinished事件呢?
Set oHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
oHTTP.Open "GET", "http://www.google.com", True
oHTTP.Send
Run Code Online (Sandbox Code Playgroud)
小智 0
我承认他的答案不是一个很好的答案,但是注册 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
Run Code Online (Sandbox Code Playgroud)
问题是,我尝试了你的代码,即
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
Run Code Online (Sandbox Code Playgroud)
它不起作用,出现错误
对象不支持此属性或方法:“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
Run Code Online (Sandbox Code Playgroud)
不幸的是,这也不起作用 - 一定是IWinHttpRequestEvents
接口无法访问