不錯的一篇VBS-JSCRIPT GETOBJECT理解
來源:互聯網
上載者:User
2年前,當時自己在寫ASPSHELL的時候 一直不理解為什麼
GetObject("WinNT://.") 可以獲得本地系統 的一些重要訊息
當時MSDN是這樣一個解析的
-----------
Windows 指令碼宿主
GetObject 方法
請參閱
WScript 對象 | CreateObject 方法 | DisconnectObject 方法
用指定的 ProgID 檢索現有的對象或從檔案中建立新對象。
object.GetObject(strPathname [,strProgID], [strPrefix])
參數
object
WScript 對象。
strPathname
包含保留到磁碟中的對象的檔案的完全限定路徑名。
strProgID
可選。對象的程式標識符 (ProgID)。
strPrefix
可選。在要同步對象的事件時使用。如果您提供 strPrefix 參數,則 WSH 會在建立對象後將該對象的輸出介面串連到指令檔。
說明
如果對象的執行個體儲存在記憶體中,或者您要從檔案建立對象,則使用 GetObject 方法。如果記憶體中沒有當前的執行個體,並且您不希望從檔案建立對象,則請使用 CreateObject 方法。GetObject 方法可用於所有的 COM 類別,而與用於建立對象的語言無關。如果您提供 strPrefix 參數,則 WSH 會在建立對象後將該對象的輸出介面串連到指令檔。當對象引發事件時,WSH 將調用在事件名稱開頭附加 strPrefix 的子常式。例如,如果 strPrefix 是 MYOBJ_,對象引發的事件名為 OnBegin,則 WSH 呼叫指令碼中的 MYOBJ_OnBegin 子常式。
如果某個對象被註冊為單一實例對象,則只建立該對象的一個執行個體(無論您執行了多少次 GetObject,都是如此)。GetObject 方法返回的執行個體總是與用零長度字串文法 ("") 調用的執行個體相同,如果未提供路徑參數,則會發生錯誤。GetObject 方法不能用於獲得對用 Visual Basic 4.0 或更低版本建立的 Microsoft Visual Basic 類的引用。
樣本
下面的 VBScript 代碼啟動與指定的檔案 (strPathname) 相相關 App程式:
Dim MyObject As Object
Set MyObject = GetObject("C:\CAD\SCHEMA.CAD")
MyApp = MyObject.Application
某些應用程式允許您啟用檔案的一部分。為此,在檔案名稱的結尾處添加一個驚嘆號 (!),並在其後附加一個標識檔案中要啟用部分的字串。例如,在繪圖應用程式中,檔案中儲存的繪圖可能有多層。下面的代碼啟用名為 SCHEMA.CAD 的繪圖檔案中的某一層:
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
如果未指定對象的類 (strProgID),則 COM 確定要從該檔案名稱啟動的應用程式。某些檔案可支援多個對象類。例如,某個繪圖可能支援三個不同類型的對象:應用程式物件、繪圖對象和工具列對象。所有這些都可能在同一個檔案中。
在下面的 VBScript 代碼中,繪圖應用程式 FIGMENT 從 SAMPLE.DRW 檔案啟動,並開啟其中的 DRAWING 對象。
Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")
請參閱
WScript 對象 | CreateObject 方法 | DisconnectObject 方法
---------------
但是看完之後還沒有理解~~
N年之後的今天~~ 突然看了一篇文章~~~終於理解了
其實 GetObject 就是 從一個檔案 或者 對象中取得資訊 取得其操作
例如
GetObject("WinNT://.") 這個就是系統對象了~
而假如你系統裝了OFFICE的 EXCEL 那我們就可以這樣獲得對象
Set xls = GetObject("d:\1.xls","Excel.Application") ' 第一參數是 xls的檔案路徑 第2個參數是對象的類型
也可以讓他自動識別
Set xls = GetObject("d:\1.xls")