從文件中返回對(duì) Automation 對(duì)象的一個(gè)引用。
GetObject([pathname] [, class])
類參數(shù)采用的語(yǔ)法是 appname.objectype ,包括了以下部分:
使用 GetObject 函數(shù)可以從文件中訪問(wèn)一個(gè) Automation 對(duì)象。可以將由 GetObject 返回的對(duì)象賦值給對(duì)象變量。例如:
var CADObject; CADObject =GetObject(
"C:\\CAD\\SCHEMA.CAD")
;
在執(zhí)行這段代碼時(shí),將啟動(dòng)與指定的 pathname 相關(guān)的應(yīng)用程序,所指定文件中的對(duì)象將被激活。如果 pathname 是長(zhǎng)度為零的字符串 ("") ,那么 GetObject 將返回指定類型的一個(gè)新實(shí)例。如果忽略了 pathname 參數(shù),那么 GetObject 將返回指定類型的當(dāng)前活動(dòng)實(shí)例。如果不存在指定類型的對(duì)象,那么將出錯(cuò)。
一些應(yīng)用程序允許激活文件的一部分。要實(shí)現(xiàn)此功能,可以在文件名的尾部添加一個(gè)感嘆號(hào) (!) ,然后在感嘆號(hào)后跟上一個(gè)字符串來(lái)指定要激活的文件部分。關(guān)于如何創(chuàng)建這個(gè)字符串的詳細(xì)信息,請(qǐng)參閱創(chuàng)建該對(duì)象的應(yīng)用程序的文檔。
例如,在一個(gè)繪畫應(yīng)用程序中,可能在文件中存儲(chǔ)了繪畫的很多層次?梢允褂孟旅娴拇a激活名為 SCHEMA.CAD 的圖畫中的一層。
var LayerObject =GetObject(
"C:\\CAD\\SCHEMA.
CAD!Layer3")
;
如果沒(méi)有指定對(duì)象的類, Automation 將根據(jù)所提供的文件名來(lái)決定要啟動(dòng)的應(yīng)用程序和要激活的對(duì)象。但是,一些文件可能支持不止一種對(duì)象的類。例如,一個(gè)圖畫可能支持三種不同的對(duì)象類型:應(yīng)用程序?qū)ο、繪畫對(duì)象,以及工具欄對(duì)象,所有這些都是同一個(gè)文件中的部分。要指定文件中希望激活的對(duì)象,可以使用可選的 class 參數(shù)。例如:
var MyObject; MyObject =GetObject(
"C:\\DRAWINGS\\SAMPLE.DRW", "FIGMENT.DRAWING")
;
在前面的例子中,F(xiàn)IGMENT 是繪畫應(yīng)用程序的名稱,而 DRAWING 是它支持的一種對(duì)象類型。對(duì)象被激活后,可以使用定義的對(duì)象變量來(lái)引用它。在前面的例子中,可以通過(guò)對(duì)象變量 MyObject 來(lái)訪問(wèn)新對(duì)象的屬性和方法。例如:
MyObject.Line(9, 90); MyObject.InsertText(9, 100, "Hello, world."); MyObject.SaveAs("C:\\DRAWINGS\\SAMPLE.DRW");
注意 如果當(dāng)前已經(jīng)有了對(duì)象的實(shí)例,或者想要由已經(jīng)加載了的文件創(chuàng)建對(duì)象,那么可以使用 GetObject 函數(shù)。如果沒(méi)有當(dāng)前的實(shí)例,而且也不想由已經(jīng)加載的文件來(lái)啟動(dòng)對(duì)象,那么可以使用 ActiveXObject 對(duì)象。
如果對(duì)象自身已經(jīng)注冊(cè)為單實(shí)例對(duì)象了,那么無(wú)論執(zhí)行多少次 ActiveXObject 也只會(huì)創(chuàng)建對(duì)象的一個(gè)實(shí)例。對(duì)于單實(shí)例對(duì)象, GetObject 在用長(zhǎng)度為零的字符串 ("") 語(yǔ)法調(diào)用時(shí)總是返回相同的實(shí)例,而如果忽略了 pathname 參數(shù)就會(huì)出錯(cuò)。