本文主要記錄,VBS中,CreateObject 和 WScript.CreateObject 的不同。
CreateObject 是什么:
他是一個 VBScript 的內置函數(Function),或者說是一個方法(Method),取決這個單詞被用在了什么地方。
CreateObject 的作用:
微軟官方文檔說,它的作用是:Creates an Automation object of the specified class。翻譯過來就是,用於創建一個指定類型的,自動化對象。而,An object is an instance of a class,所以,可以進一步解釋為,它的作用是,創建一個指定 Class 的 Instance (實例)。不覺得,這個內置函數的作用,很像是 Python 里的 import xxx as y
么!
為什么要使用 CreateObject 函數:
VBScript 的運行環境中,自帶的 Object 只有14個,或者說 Windows Scripting Host (WSH) 環境中,自帶的 Object 只有14 個。因此能解決的問題比較有限,所以,VBScript 總會遇到,靠自帶 Object 解決不了的問題。這時,為了解決問題(自動化),VBScript 就需要調用(借用)其他 “外部的Object” 或者 “程序”。那么,如何調用呢?答案就是,使用 CreateObject 函數!一個很好的例子就是,CreateObject("Excel.Application")
。這個例子是,VBScript 在調用外部的 Excel 對象,來自動化 Excel 操作!要是不太理解WSH,可以去看我另一篇文章:Windows Scripting Host (WSH) 是什么?
CreateObject 和 WScript.CreateObject 有什么不同:
細心的同學,或發現,在使用 CreateObject 函數的過程中,會在代碼中,看到兩種不同的情況:
- CreateObject (直接使用函數)
- WScript.CreateObject (作為 Wscript 的 Method 來使用)
那么這兩種,使用方法,區別是什么呢?區別如下:
-
CreateObject 是 VBScript 的內置函數,屬於語言的一部分;而 WScript.CreateObject 是 WSH 中 WScript 對象的 Method;在 VBS 語言中,CreateObject 總是可用的,而 WScript.CreateObject 只有在宿主為 wscript.exe 和 cscript.exe 的情況下才可以使;在 WMI、QTP、SecureCRT、EmEditor 等,其他宿主環境是無法使用的。
-
這兩種函數,所使用的參數的,含義不同;它倆的第一個參數,含義是相同的,但是它倆的第二個參數,含義就完全不同了;CreateObject 的第二個參數用來通過 DCOM 在遠程服務器上創建對象;而 WScript.CreateObject 的第二個參數用來創建本地對象並響應事件。
-
這兩種函數的速度不一樣;因為 CreateObject 是 VBS 的內置函數,不需要通過COM來調用,所以稍微快了一點點。
-
建議,盡量使用 CreateObject 函數,除非你需要響應事件;因為這樣 可移植性更好、速度更快、代碼更短。
參考閱讀:
- CreateObject Method | Microsoft Docs
- Instance (computer science) - Wikipedia
- VBScript CreateObject Function
- VBS調用Windows對象中server.CreateObject和wscript.creatobject的區別_百度知道
- VBS中CreateObject和WScript.CreateObject的區別