基础教程 ActiveX Scripting概要

上传人:琴**** 文档编号:19127744 上传时间:2017-11-18 格式:DOC 页数:5 大小:149.50KB
返回 下载 相关 举报
基础教程 ActiveX Scripting概要_第1页
第1页 / 共5页
基础教程 ActiveX Scripting概要_第2页
第2页 / 共5页
基础教程 ActiveX Scripting概要_第3页
第3页 / 共5页
基础教程 ActiveX Scripting概要_第4页
第4页 / 共5页
基础教程 ActiveX Scripting概要_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基础教程 ActiveX Scripting概要》由会员分享,可在线阅读,更多相关《基础教程 ActiveX Scripting概要(5页珍藏版)》请在金锄头文库上搜索。

1、基础教程 ActiveX Scripting 概要-vc 相关链接:进入论坛打口水战 写程序员自己的博客 在线测试一下自己的水平 目前,ActiveX Scripting 还不能像我们谈论过的 VBScript 和 JavaScript 语言那样,成为一种语言(宏或其它形式的语言,本章下一节将讨论 JavaScript 语言)。最好将它定义为客户机与服务器之间的一种通信方法。实质上,它是 Microsoft 为OLE 自动化起的新名称。说 OLE 自动化与 ActiveX Scripting 完全相同也许不够准确,因为 Microsoft 没有把 ActiveX Scripting 的能力停留

2、在应用级别上。(大多数 Microsoft 产品和诸如 CorelDRAW 之类的一些其它产品,在应用级别上支持OLE 自动化!)ActiveX Scripting 还包括了 Internet。可移植性问题 本书前面的例子中,MFC AppWizard(应用程序向导)提供了OLE 自动化复选框,这一点也许你已注意到。这一复选框,像诸如 CorelDRAW 之类的产品一样,向你的应用程序添加相同种类的脚本能力。换言之,可以在本地的机器或网络中使用脚本能力。但是,这一能力仍然不是完整的 ActiveX Scripting,因为它不包括 Internet。你仍然需要手工地向 Visual C 应用程

3、序添加这种功能。因为 ActiveXScripting 标准还没有最后定下来,所以你看到的仍然是进展中的东西。既然 ActiveX Scripting 不是语言,而是通信规范,那么,脚本语言,包括语法,这一类问题就留给了脚本供货商来提供。这一标准的目的在于定义一种方法,使脚本主机可以调用各种脚本引擎,并且用于 OLE 容器中对象间的通信。从实质上看,脚本更像是可执行代码的大杂烩,它可能含有文本、伪代码,甚至还有原始二进制格式的可执行代码。ActiveX Scripting 的实质是,它是基于 OLE 的、可用于应用程序和 Internet 的通信媒介。WEB 链接 写作本书时,ActiveX

4、Scripting 说明书仍在变动之中。如果打算用ActiveX Scripting 作为其它技术的替代或补充,也许要用些时间看一下最新动向。进而,本节并不完全涵盖 OLE 主机和脚本引擎需要的所有接口方法的调用语法。欲了解目前 ActiveX Scripting 说明更多的信息,请查看http:/ ActiveX Scripting 主机的信息,下列两个站点不错:http:/ sdk/inetsdk/help/wsh/wobj_2.htm 和 http:/ inetsdk/help/compdev/scripting/hosts.htm。如果想多了解一些关于建立一个ActiveX Scrip

5、ting 引擎的需求,请查看:http:/ 它是支持脚本引擎的一种应用程序。定义脚本时,是脚本主机接受这个脚本并向引擎发出命令。ActiveX Scripting 主机的最通用的例子是 Internet Explorer 3.0。使用插件可以向 Netscape Navigator 添加这种能力。第 8 章讨论过一种插件棗 NCompass ScriptActive。脚本引擎,当然不限于这些产品中的任何一种。你可以在一个定制的浏览器应用程序中建立它,或者在一些应用程序中找到它。例如,很有可能,在不远的将来,Microsoft 会使其全部应用程序产品(如 MicrosoftWord)都符合这一标

6、准。一个 ActiveX 脚本引擎是一个对象,这个对象才真正地对脚本进行解释。对精确的语言语法甚至脚本的形式都没有限制。理论上,写 ActiveX 脚本,可使用任意语言,包括 VBScript、Java 和 JavaScript 。和本节后面要讨论的任何一种 OLE 对象一样,一个 ActiveX 脚本引擎提供的是特殊接口。另外,可以使用 OLE 自动化包装工具写出 ActiveX 脚本引擎(Microsoft 计划为 ActiveXScripting 提供一种特殊形式的 OLE 自动化包装器)。使用包装器格式的好处是,它保持了代码的短小精炼这对于浏览器和在线脚本引擎都是理想选择。不利之处是,

7、如果直接写出 ActiveX Scripting 接口,你将失去对运行时你可以有的名字空间、持久模型以及其它著作元素的控制。ActiveX Scripting 要求有四种新的接口元素。可选项 IActiveScriptSite 和可选项IActiveScriptSiteWindows 接口为主机专用,而 IActiveScript 和可选项IActiveScriptParse 接口则为脚本引擎专用(若不实现 IActiveScriptParse,则需要实现某种形式的 IPersist 接口)。每个接口元素执行下面列出的一种具体功能:IactiveScriptSite 这个接口的主要目的是为 A

8、ctiveX Scripting 引擎创建一个站点。这与其它的 OLE 实现中的容器的概念(idea)相对应 容器容纳的是诸如 ActiveX控件之类的东西。因为这是一个容器接口,所以它监测脚本的开始、终止及脚本出错等等一类的事件。IactiveScriptSiteWindow 任一个提供用户接口的 ActiveX Scripting 主机,也需要提供本接口(服务器不一定应用它)。实际上,如果需要用于脚本目的的窗口,则也需要实现这一接口。IActiveScriptSiteWindow 提供了两种主要方法(尽管可以提供其它所需的方法):GetWindow()用于创建窗口,EnableModele

9、ss( ) 则设置窗口的模式(modal)条件。GetWindow()的功能类似于 OLE 自动化专用的IOleWindow:GetWindow()函数,而 EnableModeless()的功能则类似于IOleInPlaceFrame:EnableModeless()函数。IactiveScript 这一接口使你与脚本本身一起工作,用它可得到脚本的站点、启动和终止脚本、使用脚本项目、关闭脚本、或者建立线程状态与参数。IactiveScriptParse 这一接口从脚本主机接受脚本,它使你能创建一个新脚本、 向一个现存脚本中添加原始脚本片段或对一个现存脚本进行分析。Visual C 提供了一个

10、方便的实用程序,称为 OLE/COM Object Viewer(OLE/COM 对象浏览器),使用它可以更详细地看到这些接口(Microsoft 在其 Visual C 的最新版本中将名称缩写为 OLE View(OLE 浏览器)。本书中我们将多次用到这个实用程序,如果你还没有安装的话,应该安装上它。让我们先看一看 ActiveX Scripting issue 的主机端。和以前提到的一样,Visual C 仍然提供一个 OLE 自动化接口,这个接口不提供与 Internet 连接的功能。接着请打开 OLE/COM Object Viewer,就会看到一叠文件夹。打开 Document Ob

11、jects(文档对象)文件夹,再打开 XYZ Single Document 文件夹,就会看到接口列表,与图 9.1 类似,这些接口是 MFC 实现的,建立应用程序时可使用它们。请注意在左边的窗格中的 IOle Window 接口已被选中。看一下右边的窗格,可以看到这个接口提供五种方法。进一步研究表明,这些方法之一是 GetWindow()。前面提到过,没有 IActiveScriptSiteWindow 接口,而 IOleWindow 接口却存在,这意味着你的应用程序支持 OLE 自动化,而不支持 ActiveXScripting。现在,如果你看一下这个列表中的每个其它应用程序,(如果有的话

12、)包括 Office97,就会发现,没有一个应用程序是支持 ActiveX Scripting 的。警告 如果在 OLE/COM Object Viewer 中创建了应用程序或控件的实例,而后没有不释放相应实例,那么就会发生奇怪的事情。例如,你的机器会意外地死机! 每当你查看一个应用程序或控件支持的接口时,就不得不创建一个实例来完成这个操作。通过查看应用程序的名称,也能够知道是否存在一个对象的实例。OLE/COM Object Viewer 用粗体显示打开的对象。为了释放你创建的实例,用右键单击对象名(比如是 XYZ Single Document),然后在上下文相关菜单中选择 Release

13、Instance(释放实例)即可完成。幸运的是,OLE/COM Object Viewer 在你离开该工具时总是会关闭对象的实例,但是如果在查看会话期间机器的内存开始不够用时,就应该关闭对象的实例。应该记住,每创建一个实例,就要占用一些内存。客户端对 ActiveX Scripting 也是支持的,至少在一种初步形式上是这样。释放 XYZ Single Document 的实例,然后关闭 Document Object 文件夹。接着打开ActiveX Scripting Engine 文件夹,可以看到两个项,一个是 JavaScript,另一个是VBScript。这两个项都是 Internet

14、 Explorer 支持的,但我们期望看到NetscapeNavigator 也支持它们。打开 JScript Language(JavaScript)项,可以看到如图 9.2 所示的典型的接口列表(你的列表也许会稍有不同)。图 9.2 在 OLE 视图中查看 JavaScrip请留意被选中的项 IActiveScript,它是我前面描述过的第一个客户机端接口,在它下面,可以看到 IactiveScript-Parse 项,它是我前面描述的第二个客户机端接口。这两个元素的存在,意味着 Internet Explorer 当前把 ActiveX Scripting 做为一个客户机来支持它。但是,

15、在 OLE/COM Object Viewer 的这一部分中却连一个相联系的服务器项都找不到。让我们对于 ActiveX Scripting 的主机与客户机的关系再多说几句。一个 ActiveX Scripting 会话期,要涉及到三个不同的元素:主机、引擎以及包含代码和控件的窗口(页)。在这三个元素之间建立通信的过程有 8 个步骤: 1. 主机根据需要装入文档或工程。这不是 ActiveX Scripting 专用任务,因为任意环境都需要执行这一步。2. 主机创建一个脚本引擎。通常,它要使用标记中的 PROGID 属性,并通过调用 CoCreatInstance()来完成这个任务。3. 然后装入脚本。主机完成这件事的方式有几种。如果脚本存贮为驻留(Persisted)数据,那么,主机就使用引擎的 IPersist:Load()把它再次装入内存。如果主机需要装入一个新脚本,那么它就调用 IActiveScriptParse:InitNew()或者IPersist:InitNew()创建一个空脚本。把脚本当成文本来维护的主机,然后调用IActiveScriptParse:ParseScriptText()把脚本装入引擎(使用其它格式维护脚本的主机则不得不设计自己的装入方法)。4. 主机把脚本装入后,必须用实体填入引

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号