浏览器编程中如何得到下载文件的通知?

该方法的具体实现是参照lingll写的,有兴趣的可以去看看他的博客。

 

想必使用过IE的人都知道,在下载问些文件的时候,比如论坛附件的时候,会新建一个空白页,紧接着弹出保存文件的对话框,接着关闭这个空白页。当然应该关闭的,这个空白页没有任何用处。

 

问题在于如何准确的在下载文件的时候获得这样的通知?答案就是实现IDownloadManager接口。实践证明,FileDownload事件在某些时候不准确,不好用。

并且,IDownloadManager接口在得到通知的同时还更详细的信息,描述如下:

 

Private Sub IDownloadManager_Download(ByVal pmk As olelib.IMoniker, ByVal pbc As olelib.IBindCtx, ByVal dwBindVerb As Long, ByVal grfBINDF As Long, pbindinfo As olelib.BINDINFO, ByVal pszHeaders As Long, ByVal pszRedir As Long, ByVal uiCP As Long)

End Sub

 

因为此时可以用olelib.SysAllocString(pmk.GetDisplayName(pbc, Nothing))得到目标URL,那么还可做一些判断,比如.html等文件就不要下载了,直接返回S_OK即可。如果你仅仅是为了得到通知,那么返回INET_E_DEFAULT_ACTION即可。既然已经可以得到URL,那么此时可以调用某些下载器来下载。这在某些不允许用下载工具的网站下还有很有作用的。

 

甚至你可以自己写一个简单点的下载工具直接下载到事先定义好的目录,岂不方便?

 

在得到下载事件之后就简单多了,检查当前页是不是空白页,是的话,用代码关闭即可。

 

该接口的作用远不局限于此,具体的可参阅MSDN的描述。

 

PS:实现这个接口后可能会有点小的弊病,参见我当的提问:

http://topic.csdn.net/u/20080603/11/48fc10c6-2808-4fe6-8ae5-df9080d2f096.html

当然,这也是可解决的,这是后话了,以后可能会谈到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值