[阅读: 342] 2005-03-15 14:46:59
URLDownloadToFile
HRESULT URLDownloadToFile(
LPUNKNOWN pCaller,
LPCSTR szURL,
LPCSTR szFileName,
DWORD dwReserved,
LPBINDSTATUSCALLBACK lpfnCB);
pCaller
仅当调用者是一个ActiveX对象才使用,对于一个非ActiveX对象的应用程序这个参数应该为NULL
szURL
为要下载的绝对URL 文件名,这个参数不能为空。
szFileName
包含创建的目标文件名
dwReserved
必须为零
lpfnCB
一个指向 IBindStatusCallback 接口的指针, IE通过它向你通知下载的进度。
利用URLDownloadToFile()下载文件可以分下面几个步骤:
1. 提供一个要下载的URL文件名。
2. 构造一个目标创建文件的完整路径含文件名。
3. 创建一个IbindStatusCallback派生类,编写OnProgress()重载函数。
4. 派生一个类对象的事例
5. 调用URLDownLoad 函数,由于这个函数调用是同步的,因此你最好在一个工作者线程中调用这个函数,
6. 在OnProgress函数中,提供任何你需要的进度指示信息和其它界面,函数返回值告诉IE是继续下载或者是放弃下载。.
使用IbindStatusCallback
IBindStatusCallback 回调接口共有8个方法,但是你只需关心OnProgress(). 其它方法只需返回 E_NOTIMPL.
OnProgress 实现的规范是:
HRESULT OnProgress(
ULONG ulProgress,
ULONG ulProgressMax,
ULONG ulStatusCode,
LPCWSTR szStatusText );
ulProgress
到目前为止已经下载的字节数。
ulProgressMax
要下载的文件大小,0表示大小未知,需要注意的是,这个值仅在OnProgress调用期间变化,所以你不能把它保存到一个静态变量中,你应该在每次调用时检查这个值。
ulStatusCode
状态标志,这个值可以为下列一些值:
BINDSTATUS_BEGINDOWNLOADCOMPONENTS,
BINDSTATUS_INSTALLINGCOMPONENTS,
BINDSTATUS_ENDDOWNLOADCOMPONENTS.
szStatusText
图形界面中使用的字符串,由IE 提供,这个变量可能为NULL,在使用前应该检查这个变量。
OnProgress() 返回 S_OK 告诉IE 要继续下载, E_ABORT 则表示放弃下载