如何用到它的事件函数
比如:
void OnResponseDataAvailable(
[in] SAFEARRAY(unsigned char) *Data
);
Data [in]
A zero-based array of bytes that receives the response data received by Microsoft Windows HTTP Services (WinHTTP) up to the point that this event occurs. This is a VARIANT of type VT_ARRAY | VT_UI1.
来源:http://msdn.microsoft.com/en-us/library ... s.85).aspx
如何利用 OnResponseDataAvailable 编写 下载进度条 等等!!
比如:
Code: Select all
URLDownloadToFile(URL,FilePath,Timeout=-1)
{
ComObjError(0) ;禁用 COM 错误通告。禁用后,检查 A_LastError 的值,脚本可以实现自己的错误处理
WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WebRequest.Open("GET", URL, true) ;true为异步获取,默认是false。龟速的根源!!!卡顿的根源!!!
WebRequest.Send()
WebRequest.WaitForResponse(Timeout) ;WaitForResponse 方法确保获取的是完整的响应
ADO:=ComObjCreate("adodb.stream") ;adodb.stream 才能读取 WebRequest.ResponseBody()
ADO.Type:=1 ;以二进制方式操作
ADO.Open() ;开启物件
ADO.Write(WebRequest.ResponseBody()) ;写入物件。注意没法将 WebRequest.ResponseBody() 存入一个变量,所以必须用这种方式写文件
ADO.SaveToFile(FilePath,2) ;文件存在则覆盖
ADO.Close()
return,1
}