如题,我想知道IE的插件是如何下载的?如何用BHO程序捕捉到?
我知道有些插件是以cab包的形式发布的,里面有些是DLL,有些是ocx,
奇怪的是有些是exe文件,像著名的swflash,更奇怪的是安装swflash插件时,在系统盘下会有很多文件出现,是exe文件释放出来的东西,不像有些以dll或是ocx发布的插件,只有这么一个dll或是ocx。
另外,我发现,某些个网页,安装某些个dll或是ocx时,也会出现很多文件,但是这些文件不是从dll或是ocx释放出来的,cab包里面也没有,我怀疑是IE下载下来的,那么这种情况是怎么回事?请大家指点一下

解决方案 »

  1.   

    在页面里面写:<object style="Z-INDEX:   101;   LEFT:   70px;   WIDTH:   952px;   POSITION:   absolute;   TOP:   0px;   HEIGHT:   1012px" classid="clsid:32E83368-5D8E-4D5A-B207-012EA5930E86"   codebase="url_of_your_cab.CAB#version=1,0,0,0" id=GetClient > 主要是
    1. classid 写正确2. codebase里面的verison属性
    如果本地没有,或者本地的版本比你version属性里面写的小,根据用户设置的安全级别,IE就会提示下载或者自动下载(当然也可能不下载,如果禁用activex)3.
    IE只会下载你写在codebase的文件,至于你说的"但是这些文件不是从dll或是ocx释放出来的,cab包里面也没有,我怀疑是IE下载下来的"
    可能是activex运行后生成的文件吧。
      

  2.   

    CAB形式的不算是插件吧。应该是控件或组件。IE是通过解析object标签来下载相应的文件的。具体如何解析的不知道。个人觉得应该和解析table等其他标签类似吧。除页面写好的要下载的文件又有其他的文件,这种情况不外乎两种方式:
    1.组件运行时的临时或从自己资源文件解析出来的其他文件。
    2.组件有下载功能,运行期间下载了需要的其他文件。
      

  3.   

    BHO功能很强大,但它不能解决所有的HTTP URL问题(指只实现IObjectWithSite接口),经过BHO的URL地址只有HTML文档,所有的脚本、图片等可以下载的内容或文件都不会经过BHO, 如果指望BHO拦截下载的拦截是不可行的。 如果想实现对这些下载的连接进行拦截需要实现 IInternetProtocol接口。IInternetProtocol接口继承了IInternetProtocolRoot接口。 你需要自己实现IInternetProtocolRoot接口中的Start()方法来实现对这些可下载链接的捕获。
      

  4.   

    to bdzwj:
    你是说在BHO里面实现IInternetProtocol接口,对吗?
    有相关的资料吗?我现在不是想拦截,而是要获取插件的信息,以及它下载的其他东西的信息,主要它的安装路径
      

  5.   

    IE怎么下载安装控件,微软有个规范的,叫 “Open Software Description”, 简称 OSD。 MSDN里有详尽的说明。