我们知道,实现IDownloadManager接口,并在注册里把DownloadUI改成我们的CLSID,就能在IDownloadManager::Download 截到要下载的内容,但注册表这个位置是兵家争之地,什么迅雷,flashget,QQ旋风,都把这个地方占了,所以问问大家,除了在这里截,还能在什么方面截呢?

解决方案 »

  1.   

    根据url的后缀名和header(application/octet-stream) 来判断吧
      

  2.   

    这种方法太低级了吧?很多链接是带转向,后面不带后序的,如http://www.xxx.com/down.php?id=12345
      

  3.   

    BHO俄话,自然就受IE的限制。
    或者你BHO捕获所有新打开的窗口,然后自己来分析.
      

  4.   

    实现IServiceProvider接口,在它的函数QueryService(REFGUID guidService, REFIID riid, void** ppvObject), guidService == SID_SDownloadManager时,*ppvObject = 你自己的IDownloadManager实现,这个会先于注册表那个接口调用。
      

  5.   

    别口轻轻说实现这个接口,实现倒容易实现,但怎么把这个实现的COM组件跟IE关联起来?
      

  6.   

    今天终于弄明白了,IServiceProvider的实现是在ActiveX的容器里实现。因为IE本身是一个容器+Web Browser。所以BHO是容器(也就是IE壳)为了扩展自己而提供的接口,看了很多资料,想完成容器这一功能,好像是不可能。
    这几天看看URL Monikor的相关知识吧,也行会有些转机,新单位工作压力很大呀!
    继续混分。
      

  7.   

    算了吧,混得也够送的了,送分吧。问题解决了,URL Moniker!
      

  8.   

    请楼主指点下吧,URL Moniker?