Javascript实例教程(20) OLE Automation(5)

javascript|教程

使用JavaScript中的OLE Automation

5. 怎样处理应用程序的实例

文档模板是应用程序和它支持的文档之间的连接。文档模板有两种类型:单一文档,它只能一次打开一个类型的文档;多文档模板,它允许多个文档同时被打开。下面的表格列出了Windows应用程序的各种类型:

单文档界面(SDI)应用程序

单文档界面(MDI)应用程序

老类型的应用程序

新类型的应用程序

一个实例

多个实例

老类型的SDI应用程序只能一次管理一个文档,但它支持在不需要开始应用程序的另外一个实例的情况下关闭一个文档再打开另外一个文档。这样的应用程序总是支持每次运行应用程序的多个实例。从对象的生命周期实施观点来看,老类型的SDI应用程序是更MDI应用程序是一样的。

新类型的SDI应用程序可以一次管理一个 文档对象,但是它不支持在不需要开始应用程序的另外一个实例的情况下关闭一个文档再打开另外一个文档。也就是说,如果激活的文档关闭,整个应用程序就关闭。当一个新的文档被打开,新的应用程序的实例就被装载。如果用户从应用程序的"File"菜单种选择"New" 或者"Open",一个新的应用程序的实例就被创建以处理这个附加的文件。这样的应用程序总是支持一次运行应用程序的。

MDI应用程序使用多文档模板。它可以在应用程序的一个实例中管理多个文档。这种类型的MDI应用程序不支持同时运行应用程序的多个实例。每次只有应用程序的一个实例可以存在。

MDI应用程序使用多文档模板。它可以在应用程序的单一实例中管理多个文档对象。这种类型的MDI应用程序支持每次运行应用程序的多个实例。微软的Word就一个 MDI应用程序,它支持应用程序的多个实例。

使一个给定的应用程序于上面的应用程序类型关联起来是不困难的。你可以简单地重复装载应用程序,并且注意是否每次有新的实例被创建。
使用JavaScript中的OLE Automation

5. 怎样处理应用程序的实例

比如,我们装载微软的Word三次,微软的Excel装载四次,Allaire HomeSite装载一次,Adobe Photoshop装载一次,然后看看结果的任务条,如图1所示。

(图1)

如图1所示,你可以看到Word和Excel都支持多个实例,而HomeSite和Photoshop不支持。这个任务条知识反应可视应用程序的实例。如果应用程序只是通过OLE Automation被装载,那它就不会出现在任务条上除非它是可见的。因此,你应该使用Ctrl+Alt+Del组合键来装载Close程序对话框(它可以让你彻底关闭应用程序)。

现在我们可能已经熟悉了实例,下面让我们来看看ActiveXObject() 和GetObject() 函数:

var objVar = new ActiveXObject(class);

如果对象被作为单一实例对象进行注册,那么对象就只有一个实例被创建。不管ActiveXObject()被多少次调用,你将得到对象的相同实例的引用。

如果对象示以多个实例对象(比如微软的Word)进行注册,那么对象的新实例被创建。而ActiveXObject()被调用的次数反应了实例的总数。比如 ,如果类为Word.Application,那么应用程序的新实例将被创建。

var objVar = new ActiveXObject(class, servername);

这条语句跟前面的语句是一样的,但是它在不同的服务器注册了ActiveX对象:

var objVar = GetObject(, class);

在Jscript中,这条语句将产生一个错误,因为Jscript不接受一个省略的参数紧跟着 一个逗号(,)。但是,这条语句的目的示想在Jscript中实现指定一个空的字符串而不是只是为了省略参数。在VB和VBScript中,这条语句将返回对象的实例。只有当对象不能发现的时候才会发生错误:

var objVar = GetObject("", class);

在Jscript中,这条语句将返回对象的当前实例。只有当对象不能发现的时候才会发生错误。
使用JavaScript中的OLE Automation

5. 怎样处理应用程序的实例

在VB和VBScript中,这条语句返回对象的新实例,除非对象被作为单一实例进行注册,如果是这种情况的话当前的实例将被返回。实际上,GetObject()函数的版本就是ActiveXObject()构造器。

var objVar = GetObject(pathname);

如果文档对象没运行,对象的服务器应用程序的新实例就被装载,并且应用程序被通知打开相应的文件。这里值得注意,参数必须代表现有的文件:

var objVar = GetObject(pathname, class);

即使文档已经被打开处于运行应用程序实例的状态下,应用程序新的实例总是被装载。

至此我们已经对ActiveXObject()和GetObject()的各种可能语法进行了讨论。最后让我们看看下面的总结表格:

任务

函数

创建OLE服务器的新实例,它没有运行

ActiveXObject()

创建OLE服务器的新实例,它已经运行

ActiveXObject()

利用Visual Basic 的ActiveXObject()来创建类的一个实例

ActiveXObject()

利用远程机器的ActiveXObject()创建一个类的实例

ActiveXObject()

装载OLE服务器并装载一个subject的实例

GetObject()

取回OLE服务器的现存的实例

GetObject()

时间: 2024-11-01 22:20:58

Javascript实例教程(20) OLE Automation(5)的相关文章

Javascript实例教程(20) OLE Automation(1)

javascript|教程 使用JavaScript中的OLE Automation 在前面的教程中我们已经有提到JavaScript中的OLE Automation.在本节的教程中,我们将一起来讨论一下JavaScript是怎样利用Automation的强大功能来扩展服务端脚本的能力的. 实际上Automation并不是新的事物.它已经在好几年前就流行了,但是被ActiveX脚本语言的支持是一个新的应用.如果你已经有了Visual Basic 或者Visual C++的编程背景,本节教程将介绍

Javascript实例教程(20) OLE Automation(6)

javascript|教程 使用JavaScript中的OLE Automation 6. 怎样提高脚本程序的性能 自从我们处理重的对象模型(比如Word.Application)和应用程序实例,注意系统的资源示相当重要的.一旦我们完成对应用程序实例的处理,我们必须去掉它,以从内存重清除对象的实例.在Jscript中有唯一的方法来实现,它就是应用程序对象的Quit()方法,以下是一个例子: var wdApp = new ActiveXObject("Word.Application"

Javascript实例教程(20) OLE Automation(4)

javascript|教程 使用JavaScript中的OLE Automation 4.怎样检索一个Automation对象存在的实例 Jscript支持同样Visual Basic中的GetObject()函数.它的一般的语法如下: var objVar = GetObject([pathname][, class]); objVar指定了一个变量来保留实例化对象的引用.Pathname是完全的路径和包含ActiveX对象的文件名.Class指定在字符串的表单中对象的类.Class参数使用了

Javascript实例教程(20) OLE Automation(3)

javascript|教程 使用JavaScript中的OLE Automation 3. 怎样创建Automation对象的新实例 Jscript(微软版本的JavaScript)是一个宽松类型的语言.换句话说,变量不是明显定义为指定的数据类型.你不能声明一个变量为指定的对象类型,所以早绑定不可能在JScript中.Jscript的ActiveXObject()构造函数通常用于为对象创建一个迟绑定界面: var wdApp; // 一个普通变量 wdApp = new ActiveXObjec

Javascript实例教程(20) OLE Automation(2)

javascript|教程 使用JavaScript中的OLE Automation 2. 什么是绑定 在你适用一个对象模型的属性.方法和事件之前,你必需首先创建一个计划性的引用给包含了你想适用的属性.方法或者事件的类.你可以通过声明一个局部对象变量以保留一个引用给这个对象来实现这个目的.然后,你要为局部变量指定一个对象的应用. VB和VBScript使用CreateObject()函数,来实现在Jscript使用这个ActiveXObject()构造函数的时候为一个Automation对象允许

Javascript实例教程(20) OLE Automation(7)

javascript|教程 使用JavaScript中的OLE Automation 7. 怎样处理集对象 Automation对象与其它的Jscript对象有些有相同的结构.它暴露了多种方法和属性,我们可以对它们进行处理.如果你从来没有接触Visual Basic,你可能就不熟悉集对象了.集就是相关项的组.集用在Visual Basic主要是为了保持跟踪许多事情,比如从你的程序(表单集)中装载表单,或者表单(控件集)中的所有控件. Visual Basci提供了集类,这样你就可以创建你自己的集

Javascript实例教程(21) OLE Automation(6)

javascript|教程 使用javascript中的OLE Automation 6. 怎样提高脚本程序的性能 自从我们处理重的对象模型(比如Word.Application)和应用程序实例,注意系统的资源示相当重要的.一旦我们完成对应用程序实例的处理,我们必须去掉它,以从内存重清除对象的实例.在Jscript中有唯一的方法来实现,它就是应用程序对象的Quit()方法,以下是一个例子: var wdApp = new ActiveXObject("Word.Application"

Javascript实例教程(21) OLE Automation(5)

javascript|教程 使用javascript中的OLE Automation 5. 怎样处理应用程序的实例 文档模板是应用程序和它支持的文档之间的连接.文档模板有两种类型:单一文档,它只能一次打开一个类型的文档:多文档模板,它允许多个文档同时被打开.下面的表格列出了Windows应用程序的各种类型: 单文档界面(SDI)应用程序 单文档界面(MDI)应用程序 老类型的应用程序 新类型的应用程序 一个实例 多个实例 老类型的SDI应用程序只能一次管理一个文档,但它支持在不需要开始应用程序的

Javascript实例教程(21) OLE Automation(4)

javascript|教程 使用javascript中的OLE Automation 4.怎样检索一个Automation对象存在的实例 Jscript支持同样Visual Basic中的GetObject()函数.它的一般的语法如下: var objVar = GetObject([pathname][, class]); objVar指定了一个变量来保留实例化对象的引用.Pathname是完全的路径和包含ActiveX对象的文件名.Class指定在字符串的表单中对象的类.Class参数使用了