用这个函数复制网页的内容到硬盘,有的时候网络不好或其他原因,这个函数会挂起很长时间,搞得我的程序也挂起了。我想设定一个很小的时间,如果没有下载下来就强迫它返回。不知道怎么实现?

解决方案 »

  1.   

    在调用URLDownloadToFile之前记录时间
    然后在回调里面得到当前时间,两个时间比一下大小
      

  2.   

    刚才看了以下,IBindStatusCallback::OnProgress 返回E_ABORT 可以直接终止下载
    lpfnCB
    Address of the caller's IBindStatusCallback interface. URLDownloadToFile calls this interface's IBindStatusCallback::OnProgress method on a connection activity, including the arrival of data. IBindStatusCallback::OnDataAvailable is never called. Implementing IBindStatusCallback::OnProgress allows a caller to implement a user interface or other progress monitoring functionality. It also allows the download operation to be canceled by returning E_ABORT from the IBindStatusCallback::OnProgress call. This can be set to NULL. 
      

  3.   

    怎么设这个回调函数?是不是我先运行URLDownloadToFile, 然后我过一段时间调用IBindStatusCallback::OnProgress , 如果返回的是 E_ABORT, 就证明还没下载完成?
      

  4.   

    还是没搞懂,又涉及到URL Monikers, 看的我是一头雾水。URL Monikers到底有什么用?
      

  5.   

    可不可以让URLDownloadToFile在一个线程里运行,然后控制这个线程的生命周期?
      

  6.   

    怎么删除广告啊,好烦啊,今天碰到两次了。
    另外,用IBindStatusCallback绑定URL是可以知道下载进度,但是还是不能判断时间啊,如果URLDownloadToFile下载不来数据,那么后面就不会调用OnProgress这个函数,那么我们怎么知道什么时候结束呢?我现在的代码就是这个情况,如果网页有链接,但是这个链接是空的,那么URLDownloadToFile就挂起了,半天才返回。
      

  7.   

    URLDownloadToFile可以在一个线程里运行,我就这么做过啊。
    看一下IBindStatusCallback接口吧。