javascript|教程
使用javascript中的OLE Automation
4.怎樣檢索一個Automation對象存在的執行個體
Jscript支援同樣Visual Basic中的GetObject()函數。它的一般的文法如下:
var objVar = GetObject([pathname][, class]);
objVar指定了一個變數來保留執行個體化對象的引用。Pathname是完全的路徑和包含ActiveX對象的檔案名稱。Class指定在字串的表單中對象的類。Class參數使用了文法library.object,這跟ActiveXObject函數的第一參數是一樣的。
總得說來,GetObject()函數在一個指定的檔案中訪問ActiveX 伺服器。雖然兩個參數是可選的,但是至少要提供其中一個參數。GetObject()函數是在存在ActiveX對象的當前執行個體的時候使用的。它不建立一個新的執行個體,比如ActiveXObject()函數。
如果你指定一個空的字元窗(""),GetObject()就返回一個對象的新執行個體,除非對象被註冊為單一的執行個體,在這種情況下,當前的執行個體被返回。但是,如果pathname沒有指定,對象的當前執行個體被返回。如果pathname沒有被指定就會產生一個錯誤,並且沒有對象的當前執行個體被發現。這裡注意,GetObject()函數不能用於獲得由Visual Basic建立的類的引用。
一些應用允許你訪問物件程式庫的特別部分。這時要在檔案名稱之後使用一個驚嘆號(!),緊接下來的字串是識別你想啟用的庫的一些部分。為了得到怎樣建立這個字串的資訊,你可以參見Automation伺服器的技術文檔。比如,在畫圖引用程式中的檔案可能擁有幾個圖層。你可以使用以下的代碼來在一個圖片中(比如 SCHEMA.CAD)啟用一個圖層:
var objVar = GetObject("C:\\CAD\\SCHEMA.CAD!Layer2");
一些檔案(其它的庫)可能支援更多的類。比如,一個畫圖檔案可能支援三種不同的類:應用程式物件、畫圖對象以及工具條對象。既然你只可以引用單一的對象,所以你必須指定你指的是哪個類:
var objVar = GetObject("C:\\DRAWINGS\\SAMPLE.DRW", "Figment.Drawing");
在前面的例子種,Figment是一個畫圖應用程式的名字,而Drawing是其中一個它支援的物件類型。