IE扩展系列(之自定义下载器一)

        首先,翻译段msdn中的文章。
(英文出处:http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/ext/overview/downloadmgr.asp)

实现一个自定义下载器
       在Microsoft IE 5.5版本引入一个可自定义下载器的功能,通过一个COM组件来处理文件下载进程,以此来扩展IE或其他web浏览器。
       通过实现一个自定义下载器,浏览器应用程序的扩展功能展现出一个用户接口,比如:你能创建一个下载器来浏览MPEG文件或启动某个应用程序。
      下载器需要由COM来实现,使其暴露IUnkown和IDownloadManager接口,IDownloadManager拥有一个IDownloadManager::Download方法,能被IE等web浏览器调用来下载文件。当浏览器中一个文件被选择下载,这个自定义下载器将以两种方式被访问:
1. 如果IServiceProvider接口中的IServiceProvider::QueryService方法已被实现,web浏览器首先调用IServiceProvider::QueryService来接收IDownloadManager接口指针,下例示范IServiceProvider::QueryService方法的一种可能实现:

None.gif STDMETHODIMP CServiceProvider::QueryService(REFGUID guidService,
None.gif                                            REFIID riid,
None.gif                                            
void   ** ppv)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    HRESULT hr 
= E_NOINTERFACE;
InBlock.gif
InBlock.gif    
if (guidService == SID_SDownloadManager && riid == IID_IDownloadManager)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
// Create new CDownloadMgr object using ATL.
InBlock.gif
        CComObject<CDownloadMgr>* pDownloadMgr;
InBlock.gif        hr 
= CComObject<CDownloadMgr>::CreateInstance(&pDownloadMgr);
InBlock.gif        
InBlock.gif        
// Query the new CDownloadMgr object for IDownloadManager interface.
InBlock.gif
        hr = pDownloadMgr->QueryInterface(IID_IDownloadManager, ppv);
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
return hr;
ExpandedBlockEnd.gif}

2. IE6或其后版本,如果web浏览器没实现IServiceProvider::QueryService方法,或者IE自身不能实现IServiceProvider::QueryService方法,应用程序会检查注册表中包含COM下载器的CLSID键。此CLSID可在以下两个位置任意一处提供:
HKEY_LOCAL_MACHINE
 Software
  Microsoft
   Internet Explorer
    DownloadUI
HKEY_CURRENT_USER
 Software
  Microsoft
   Internet Explorer
    DownloadUI
如果应用程序无法定位到自定义下载器,将使用默认下载接口。

转载于:https://www.cnblogs.com/unreal/articles/642395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
源代码推荐——VB实现IE下载管理器扩展 ------ 摘要 这个例子演示了如何实现一个自定义IE下载管理器,当IE下载一个文件,VBWebDownloader.exe就会启动来下载它。 (这个项目支持断点续传,而且代码相对简单) 注意:一些第三方的IE下载扩展可能会和这个例子程序冲突,所以在尝试这个例子之前最好临时屏蔽它们。 安装/卸载 A. 安装 对于32bit系统,或者32bit IE运行在54bit系统,安装 VBIEDownloadManagerSetup(x86) 项目输出的VBIEDownloadManagerSetup(x86).msi。对于 64bit IE安装 VBIEDownloadManagerSetup(x64) 项目输出的 VBIEDownloadManagerSetup(x64).msi。 B. 卸载 运行安装时候所用的那个安装程序,并且选择卸载。 演示:(不翻译了,自己看吧) Step1. Open this project in VS2010 and set the platform of the solution to x86. Make sure that the projects VBIEDownloadManagerSetup, VBWebDownloader and VBIEDownloadManagerSetup(x86) are selected to build in Configuration Manager. NOTE: If you want to run this sample in 64bit IE, set the platform to x64 and select VBIEDownloadManagerSetup, VBWebDownloader and VBIEDownloadManagerSetup(x64) to build. Step2. 生成解决方案 Step3. Right click the project VBIEDownloadManagerSetup(x86) in Solution Explorer, and choose "Install". Step4. Open 32bit IE and visit the the download link of Microsoft .NET Framework 4 http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7. Click the "Download" button on this page, and then VBWebDownloader.exe will be launched. In VBWebDownloader.exe, you will find that the url is http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe and the local path is D:\dotNetFx40_Full_x86_x64.exe Step5. Click the button "Download" in VBWebDownloader.exe, it will start to download the file, and after a few minutes, you will find a file D:\dotNetFx40_Full_x86_x64.exe in Windows Explorer. 下载: http://code.msdn.microsoft.com/VBIEDownloadManager-3287b087

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值