很多VBS新手都很困惑CreateObject和WScript.CreateObject有什么區(qū)別,為什么一些代碼中用CreateObject,而另一些卻用WScript.CreateObject
CreateObject和WScript.CreateObject的區(qū)別一:
CreateObject是VBS的內(nèi)置函數(shù),屬于語(yǔ)言的一部分;而WScript.CreateObject是Windows腳本宿主(wscript.exe和cscript.exe)提供的WScript對(duì)象的方法。類似于批處理中內(nèi)部命令和外部命令的關(guān)系。在VBS中,CreateObject總是可用的,而WScript.CreateObject只有在宿主為wscript.exe和cscript.exe的情況下才可以使用,在WMI、QTP、SecureCRT、EmEditor等其他宿主環(huán)境是無法使用的。
CreateObject和WScript.CreateObject的區(qū)別二:
如果只用第一個(gè)參數(shù),那么CreateObject和WScript.CreateObject幾乎是相同的;但是如果要用到第二個(gè)參數(shù),那么兩者就完全不同了。CreateObject的第二個(gè)參數(shù)用來通過DCOM在遠(yuǎn)程服務(wù)器上創(chuàng)建對(duì)象;而WScript.CreateObject的第二個(gè)參數(shù)用來創(chuàng)建本地對(duì)象并響應(yīng)事件。
一個(gè)響應(yīng)事件的簡(jiǎn)單例子:
代碼如下:
Dim IE
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Visible = True
IE.Navigate "http://www.jb51.net"
Do
WScript.Sleep 1000
Loop
Sub IE_OnQuit()
MsgBox "正在關(guān)閉Demon's Blog"
WScript.Quit
End Sub
CreateObject和WScript.CreateObject的區(qū)別三:
因?yàn)镃reateObject是VBS的內(nèi)置函數(shù),不需要通過COM來調(diào)用,所以CreateObject比WScript.CreateObject要稍微快一點(diǎn)點(diǎn)(雖然幾乎可以忽略不計(jì)):
代碼如下:
t = Timer
For i = 1 To 100000
Set WshShell = WScript.CreateObject("Wscript.Shell")
Next
WScript.Echo Timer - t
'By Demon
t = Timer
For i = 1 To 100000
Set WshShell = CreateObject("Wscript.Shell")
Next
WScript.Echo Timer - t
Demon的建議:盡量使用CreateObject函數(shù),除非你需要響應(yīng)事件。這樣至少有三個(gè)好處:可移植性更好、速度更快、代碼更短。