国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-18 15:59:44
字體:
來源:轉載
供稿:網友
使用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所示。

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

(圖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()的各種可能語法進行了討論。最后讓我們看看下面的總結表格:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巩义市| 佛山市| 北宁市| 华安县| 页游| 五大连池市| 曲周县| 阆中市| 黔南| 江口县| 梧州市| 深水埗区| 日喀则市| 乐清市| 贞丰县| 玉溪市| 内江市| 苗栗市| 神木县| 毕节市| 景谷| 台安县| 资阳市| 六安市| 沾益县| 迁安市| 申扎县| 昌图县| 义马市| 新津县| 白城市| 体育| 阿拉善左旗| 吴桥县| 肇州县| 蓬安县| 子洲县| 白银市| 扶沟县| 太仆寺旗| 道孚县|