从Internet上下载ActiveX: 本章中介绍的大部分HTML标记的作用是很明显的,浏览器看到标记后就把标记的要求显示出来。整个过程简单易懂。但是ActiveX 标记却相当不简单。当浏览器看到一个 标记后会发生什么事? 我们知道它不会只是简单地在屏幕绘制控件──ActiveX控件提供了比这多得多的功能。
Microsoft已作出了一个新的Windows API 调用供浏览器使用棗CoGetClassObjectFromURL。当浏览器看到一个 < OBJECT> 标记时,它先分析出CLASSID 、CODEBASE 和_Version 参数,并把这些参数传送给CoGetClassObjectFromURL。如有必要,这个API可以来完成控件的下载、验证和安装。这个API调用做的第一步,是检查当前注册表中是否包含着对CLASSID的引用。你可以在注册表的HKEY_CLASSES_ROOT|CLSID关键字中找到这一引用。如图8.10所示。
WEB链接 关于标记的规范及其相联系的API调用处于经常变动之中,若想得到有关标记的最新信息,请参看http://www. w3.org/TR/WD-object.html。
如果CoGetClassObjectFromURL找到了安装在客户上的ActiveX控件的实例,它就检查其版本号。当安装在客户机上的控件版本号大于等于HTML页上指出的版本号时,CoGetClassObjectFromURL就装载本地控件,而不再从Internet上下载这个控件。控件装载完后,CoGetClassObjectFromURL就为它创建一个类工厂(Class Factory),并把类工厂传送回浏览器(一个类工厂和其它工厂一样工作,它产生出一些项,在上述情况下,它允许浏览器产生对象的一个实例)。否则,API 调用就请求浏览器从Internet站点下载代码。
下载是一个异步处理过程──Windows等待下载完成的过程中能完成其它与ActiveX有关的任务。一旦浏览器完成下载并在必要时解压缩后,就调用Windows 信任提供者服务函数WinVerifyTrust。这个服务到ActiveX 控件内部检查并确定是否有签名块。签名块包含有作者姓名、公开密钥以及控件内容加密摘要等。可以把ActiveX 控件签名块看成是支票的签名、驾驶执照或一份合约,它不仅指出你是谁,而且还验证你是不是你说的你是谁(you are who you sayyou are)。若WinVerifyTrust 调用找到了一个签名块(也称为证书),它就对证书进行证实。每个证书能够包含一个父证书的名称。WinVerifyTrust沿着证书的分层树上溯直至到达根证书。然后它就在可信任的根证书列表中找这份根证书。若能找到,CoGetClassObjectFromURL自动地装入控件并为它创建一个类工厂。否则,用户就会收到一条该控件不可信的消息(当我们在第10章中创建一个ActiveX控件并在Web页中使用时你会看到这一消息的)。
0652312143443567.JPG
注 公开密钥的作用如同共用房屋或公寓的安全门钥匙──它使你能进入大楼。私有密钥则如同公用房屋或公寓的室门钥匙──它使你进入你的起居室。
即使一个 ActiveX 控件不出现在可信任的列表中,用户仍可选择是否安装这个ActiveX控件。若选择安装这个控件,用户就会被问及是否想把控件作者添加到他们的信任列表中去。向列表添加作者姓名,意味着同一作者的任一新控件将会立即得到承认。我们将在第十四章中更详细地讨论安全问题。
这些控件安装在什么地方呢? 理论上,控件设计者可以把控件放在任何位置。但是,大部分从Internet下载的ActiveX控件,都不会自动地出现在用户的类似System (系统)文件夹这样的地方。实际上,它们被添加到名为OCCACHE的一个特殊文件夹中,这个文件夹可以出现在用户机器的任何位置。通常你可以在 Windows 主文件夹、/SYSTEM 文件夹或用户的Internet文件夹中找到这个文件夹。(一些浏览器还使用ActiveX Control Cache文件夹,它位于存放ActiveX控件的Window主文件夹中)。
注 可以找到从Internet上下载的ActiveX控件的最普遍的位置是OCCAHE文件夹。
装入控件还不是工作的全部,控件在安装过程中还要对自身进行注册。在大多数情况下,这意味着要调用DllRegisterServer API 函数。完成安装及注册后,CoGetClassObjectFromURL 函数把与控件相联系的类工厂传回浏览器。浏览器使用类工厂创建一个对象实例,并对标记传送的参数进行初始化,(必要的话)将控件显示到屏幕上。
ActiveX与Netscape Navigator
如果你管理着一个内部网站点,你总是能控制让谁访问站点以及它们应该用什么浏览器来进行访问。这时,如果想使用ActiveX,那么,你就只需要简单地要求每个人都使用Internet Explorer就可以了。但是,对于Internet站点来说却做不到这一点。所以就不得不确保站点支持尽可能多的浏览器。InternetExplorer直接支持ActiveX,而Netscape Navigator却不是这样。幸运地是,有一种可供选择的办法使ActiveX 可以在这样的环境中工作。
NCompass Labs,Inc.公司生产了一种称为ScriptActive的插件,它允许使用Netscape Navigator 3.0看到含有ActiveX控件的HTML页。在写本书时,NCompass的插件和Internet Explorer 3.0的ActiveX控件在能力上是类似的。在使用这个插件之前,可能需要花些时间研究一下它。NCompass在http: //www.ncompasslabs.com/为ScriptActive(及其它产品)提供支持。
不幸的是,使用当前版本的ScriptActive不太简单。你不得不操作标记的一些特殊格式来让它工作。还算幸运,这个插件中还包含有可以完成大部分工作的HTML转换实用程序,名称是NConvert。程序列表8.7显示的是使用这个实用程序创建标准的ActiveMovie控件所产生的结果。
0652312144178435.JPG
0652312144296515.JPG
警告 一旦从一个特定的标记向一个标记和 标记组合的转换,就不要通过单击HTML页上邻接元素的标记来编辑ActiveX 控件。在某些情况下,编辑器会改变标记,使之不能正常工作。最好创建自己的Web页,并在Internet Explorer中测试它,然后添加所需的标记,使它通过NCompassScriptActive插件来进行工作。
请注意,NConvert采纳了 标记的信息并在同一信息上添加一个< EMBED> 标记。Navigator能识别出 标记是要向插件中传达某种信息,插件用ScriptActive完成它的工作。因为Internet Explorer不能理解上下文中的标记,多出来的这些信息不引起任何问题。这一部分额外的代码的(存在)理由是相当明显的。ScriptActive插件需要一个特殊的TYPE属性,使用它指定对象的因特网MIME类型。根据供货商的说法,ScriptActive将来的版本中不再需要这一附加信息,并且能够不加修改地使用标记。
技巧 一旦NCompass ScriptActive插件安装成功,用右键单击文件时,就会看到 NConvert 关联菜单项,这个项包含两个选项:NConvert (转换)和 Set Destination Folder(目的文件夹设置)。使用SetDestination Folder这个选项,可以告诉实用程序,你想把转换过的文件放于何处,如果不想用转换过的文件复盖原来的文件,那么,就要指定一个特殊目录。Convert选项的作用是插入产品的当前版本所需的所有标记。
ScriptActive还支持VBScript,但是它是通过添加一个外部的AXS文件来实现的。一定要保证AXS文件与包含VBSCript的HTML文件在同一个目录中。NConvert 添加一些JavaScript行,从而建立Navigator和ScriptActive之间的联系。ScriptActive收到请求后,就在AXS文件中寻找合适的VBScript代码。不幸地是,ScriptActive 对VBscript 的支持相当有限,在使 AXS 文件工作之前,请对这个文件中的VBScript代码进行再加工。如果计划在一个站点上同时使用Internet Explorer 和Navigator,那么,最好的方法是优先使用JavaScript而尽量避免使用VBScript。
使用ScriptActive带来的另一个问题是,它不能总是让你访问与对象相联系的属性。事实上,支持的级别甚至会随机器而变,具有相同配置且使用相同硬件的两台机器,在一个具体的Web页上,也可能显示出不同的结果。不同的控件看起来也提供可变化的访问级别,复杂的控件往往比简单的控件出的问题更多。考虑到Internet处于不断变化之中且ActiveX技术相对比较年轻,出现这些问题也不值得大惊小怪。你能够期盼获得的最好结果是显示控件于屏幕,至于它能不能实际工作则是另一回事了。
尽管存在这些问题,使用ActiveX控件的前途是太光明了,不允许忽视它。类似于ScriptActive的第三方厂商的插件,差不多是在Web站点上能够使用ActiveX的唯一途径,并且仍能保证访问站点的大多数人,能够实实在在地看到你所提供的内容。有传言说,Netscape Navigator的下一版将直接支持ActiveX,但在今天,ScriptActive依然是你最好的解决方案。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-123255/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-123255/

从Internet上下载ActiveX(转)相关推荐

  1. vc:如何从Internet上有效而稳定地下载文件

    http://www.vckbase.com/index.php/wv/172 如何从Internet上有效而稳定地下载文件 ,这是很多网络应用程序要考虑的重要问题,本文提供的代码段针对这个问题进行了 ...

  2. 【转】从网页上下载控件时制作CAB包的方法

    Internet 软件分发单位是"软件包",它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)的 CAB 文件 (.cab) 所组成.一个分发单位也可以包含软件 ...

  3. 通过wget在Linux上下载Java JDK会显示在许可证页面上

    当我尝试从Oracle下载Java时,我却最终下载了一个页面,告诉我我需要同意OTN许可条款. 抱歉! 为了从Oracle技术网下载产品,您必须同意OTN许可条款. 确保... 您的浏览器启用了&qu ...

  4. Android使用Service从服务器上下载一个安装包的全过程

    前言:在这里完成了一个完整的从服务器上下载数据的实例! 一.我使用的时OkHttp进行网络通信,所以首先在gradle的dependencies中添加如下依赖: compile 'com.square ...

  5. 无线远程上下载PLC程序

    远程上下载西门子1200PLC程序,在线调试 (工程项目交给你们,技术难题交给巨控_何工) 概述:远程控制技术是控制领域的-项重要技术.传统的远程控制主要包括:在传统的企业网络配置中,要进行远程访问, ...

  6. tomcat域名绑定,把自己机器里的站点发布到Internet上,花生壳的使用[转]

    导读: 可以看到tomcat的欢迎页面,可以进入 Status Tomcat Administration Tomcat Manager 页面则说明站点已经配置准备好了!然后就是域名的问题!哈哈!有个 ...

  7. python从Route Views Archieve上下载解析.bz2数据包

    python从Route Views Archieve上下载解析.bz2数据包 1.下载压缩包 2.解压缩包 3.解析解压缩后文件 #encoding:utf-8 import os import r ...

  8. AWS计算云上下载代码命令 git clone url

    AWS计算云上下载代码命令 git clone url https://blog.csdn.net/qq_42672770/article/details/81317778

  9. 从github上下载项目到eclipse

    第一步:把代码下载到本地的仓库中  到github后选择自己想下载的项目,拷贝它的URL,图示如下:  进入eclipse中    点击后如下:    继续  按照图片指示继续(大白菜next教程)  ...

  10. PIX 525下的怪问题(需在防火墙后的同子网上激活之后才能在INTERNET上使用)?...

    一.网络拓朴(PIX525是透明模式) internet----pix525---switch---各个具有公网IP的20台服务器 这20台服务器,其中有七台是IBM3650的.且PIX 525的IO ...

最新文章

  1. i7 7代 linux,【Intel 酷睿i7 7代(移动版)参数】Intel 酷睿i7 7代(移动版)系列CPU参数-ZOL中关村在线...
  2. 才做三个月的新业务,为何唐岩对陌陌直播寄予厚望
  3. 《走进git时代系列一》 你该怎么玩?
  4. [Python图像处理] 二十六.图像分类原理及基于KNN、朴素贝叶斯算法的图像分类案例
  5. SAP系统财务模块的集团公司处理模式
  6. 安装 paddleocr 报错 gcc: error trying to exec ‘cc1‘: execvp: 没有那个文件或目录
  7. C++学习之路:适合C++新手的练手项目,高薪之路必备项目!
  8. AVRNET 学习笔记UDP部分
  9. Java分页详细步骤
  10. 三菱伺服驱动器示例_三菱伺服电机+编码器(伺服控制器)的接线示例
  11. 微信小程序项目实例——投骰子
  12. 吉他调音器 android,GuitarTuna - 吉他调音器
  13. ubuntu 22.04 搜狗输入法 的问题
  14. 笔记本自带键盘与IDEA快捷键冲突
  15. 数学知识复习:三重积分
  16. 支付宝无线商户签约指南
  17. 尋找《案件取证操作教程EnCase》.ppt。
  18. Linux(Ubuntu14.04)虚拟机镜像的制作过程
  19. 13个提高大脑学习效率的技巧
  20. 【学习笔记】矩阵运算入门

热门文章

  1. steam有没有c语言软件,Steam 免费游戏一键领取(已更新,需自行添加代码)
  2. 走进中关村软件园-光环敏捷PMI-ACP落地分享会
  3. VB 注册ocx控件的方法
  4. VMWARE平台STS证书过期
  5. 面试技巧 面试复盘 编程技术 架构 看这一篇就够了
  6. html中什么字体的英文好看,英语字体有哪些?英语哪种字体最好看
  7. 《统计决策论及贝叶斯分析》
  8. 前端研习录(02)——CSS内联样式、内部样式及外部样式
  9. 【2020年高被引学者】 车万翔 哈尔滨工业大学
  10. 计算机发展史的第五个阶段,信息技术的发展历程是怎样的? 信息技术的发展历程分五个阶段...