DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> Javascript實例教程(20) OLE Automation(5)
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 的ActiveX

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved