不錯(cuò)的一篇VBS-JSCRIPT GETOBJECT理解
2019-10-26 17:59:08
供稿:網(wǎng)友
2年前,當(dāng)時(shí)自己在寫ASPSHELL的時(shí)候 一直不理解為什么
GetObject("WinNT://.") 可以獲得本地系統(tǒng) 的一些重要信息
當(dāng)時(shí)MSDN是這樣一個(gè)解析的
-----------
Windows 腳本宿主
GetObject 方法
請參閱
WScript 對(duì)象 | CreateObject 方法 | DisconnectObject 方法
用指定的 ProgID 檢索現(xiàn)有的對(duì)象或從文件中創(chuàng)建新對(duì)象。
object.GetObject(strPathname [,strProgID], [strPrefix])
參數(shù)
object
WScript 對(duì)象。
strPathname
包含保留到磁盤中的對(duì)象的文件的完全限定路徑名。
strProgID
可選。對(duì)象的程序標(biāo)識(shí)符 (ProgID)。
strPrefix
可選。在要同步對(duì)象的事件時(shí)使用。如果您提供 strPrefix 參數(shù),則 WSH 會(huì)在創(chuàng)建對(duì)象后將該對(duì)象的輸出接口連接到腳本文件。
說明
如果對(duì)象的實(shí)例存儲(chǔ)在內(nèi)存中,或者您要從文件創(chuàng)建對(duì)象,則使用 GetObject 方法。如果內(nèi)存中沒有當(dāng)前的實(shí)例,并且您不希望從文件創(chuàng)建對(duì)象,則請使用 CreateObject 方法。GetObject 方法可用于所有的 COM 類,而與用于創(chuàng)建對(duì)象的語言無關(guān)。如果您提供 strPrefix 參數(shù),則 WSH 會(huì)在創(chuàng)建對(duì)象后將該對(duì)象的輸出接口連接到腳本文件。當(dāng)對(duì)象引發(fā)事件時(shí),WSH 將調(diào)用在事件名稱開頭附加 strPrefix 的子例程。例如,如果 strPrefix 是 MYOBJ_,對(duì)象引發(fā)的事件名為 OnBegin,則 WSH 調(diào)用腳本中的 MYOBJ_OnBegin 子例程。
如果某個(gè)對(duì)象被注冊為單實(shí)例對(duì)象,則只創(chuàng)建該對(duì)象的一個(gè)實(shí)例(無論您執(zhí)行了多少次 GetObject,都是如此)。GetObject 方法返回的實(shí)例總是與用零長度字符串語法 ("") 調(diào)用的實(shí)例相同,如果未提供路徑參數(shù),則會(huì)發(fā)生錯(cuò)誤。GetObject 方法不能用于獲得對(duì)用 Visual Basic 4.0 或更低版本創(chuàng)建的 Microsoft Visual Basic 類的引用。
示例
下面的 VBScript 代碼啟動(dòng)與指定的文件 (strPathname) 相關(guān)聯(lián)的應(yīng)用程序:
Dim MyObject As Object
Set MyObject = GetObject("C:/CAD/SCHEMA.CAD")
MyApp = MyObject.Application
某些應(yīng)用程序允許您激活文件的一部分。為此,在文件名的結(jié)尾處添加一個(gè)感嘆號(hào) (!),并在其后附加一個(gè)標(biāo)識(shí)文件中要激活部分的字符串。例如,在繪圖應(yīng)用程序中,文件中存儲(chǔ)的繪圖可能有多層。下面的代碼激活名為 SCHEMA.CAD 的繪圖文件中的某一層:
Set LayerObject = GetObject("C:/CAD/SCHEMA.CAD!Layer3")
如果未指定對(duì)象的類 (strProgID),則 COM 確定要從該文件名啟動(dòng)的應(yīng)用程序。某些文件可支持多個(gè)對(duì)象類。例如,某個(gè)繪圖可能支持三個(gè)不同類型的對(duì)象:應(yīng)用程序?qū)ο蟆⒗L圖對(duì)象和工具欄對(duì)象。所有這些都可能在同一個(gè)文件中。