当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript实例教程(20) OLE Automation(5)

Javascript
jquery ajax提交表单数据的两种方式
js数字输入框(包括最大值最小值限制和四舍五入)
文本框的字数限制功能jquery插件
JavaScript让IE浏览器event对象符合W3C DOM标准
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
js版扫雷实现代码 原理不错
鼠标跟随的文字变动效果
JS 判断undefined的实现代码
Ext grid 添加右击菜单
javascript或asp实现的判断身份证号码是否正确两种验证方法
javascript 获取元素位置的快速方法 getBoundingClientRect()
javascript 面向对象继承
JavaScript 地震特效
jquery.ui.progressbar 中文文档
JS 拖动效果实现代码 比较简单
JS小框架 fly javascript framework
JS在IE和FF下attachEvent,addEventListener学习笔记
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
js 动态选中下拉框

Javascript 中的 javascript实例教程(20) OLE Automation(5)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 96 ::
收藏到网摘: n/a

  使用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);

如果文