VBS中CreateObject和WScript.CreateObject的區(qū)別介紹
更新時(shí)間:2013年05月08日 22:00:51 作者:
很多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ì)象的方法。類(lèi)似于批處理中內(nèi)部命令和外部命令的關(guān)系。在VBS中,CreateObject總是可用的,而WScript.CreateObject只有在宿主為wscript.exe和cscript.exe的情況下才可以使用,在WMI、QTP、SecureCRT、EmEditor等其他宿主環(huán)境是無(wú)法使用的。
CreateObject和WScript.CreateObject的區(qū)別二:
如果只用第一個(gè)參數(shù),那么CreateObject和WScript.CreateObject幾乎是相同的;但是如果要用到第二個(gè)參數(shù),那么兩者就完全不同了。CreateObject的第二個(gè)參數(shù)用來(lái)通過(guò)DCOM在遠(yuǎn)程服務(wù)器上創(chuàng)建對(duì)象;而WScript.CreateObject的第二個(gè)參數(shù)用來(lái)創(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.dhdzp.com"
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ù),不需要通過(guò)COM來(lái)調(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è)好處:可移植性更好、速度更快、代碼更短。
作者: Demon
鏈接: http://demon.tw/programming/vbs-createobject-wscript-createobject.html
CreateObject是VBS的內(nèi)置函數(shù),屬于語(yǔ)言的一部分;而WScript.CreateObject是Windows腳本宿主(wscript.exe和cscript.exe)提供的WScript對(duì)象的方法。類(lèi)似于批處理中內(nèi)部命令和外部命令的關(guān)系。在VBS中,CreateObject總是可用的,而WScript.CreateObject只有在宿主為wscript.exe和cscript.exe的情況下才可以使用,在WMI、QTP、SecureCRT、EmEditor等其他宿主環(huán)境是無(wú)法使用的。
CreateObject和WScript.CreateObject的區(qū)別二:
如果只用第一個(gè)參數(shù),那么CreateObject和WScript.CreateObject幾乎是相同的;但是如果要用到第二個(gè)參數(shù),那么兩者就完全不同了。CreateObject的第二個(gè)參數(shù)用來(lái)通過(guò)DCOM在遠(yuǎn)程服務(wù)器上創(chuàng)建對(duì)象;而WScript.CreateObject的第二個(gè)參數(shù)用來(lái)創(chuàng)建本地對(duì)象并響應(yīng)事件。
一個(gè)響應(yīng)事件的簡(jiǎn)單例子:
復(fù)制代碼 代碼如下:
Dim IE
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Visible = True
IE.Navigate "http://www.dhdzp.com"
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ù),不需要通過(guò)COM來(lái)調(diào)用,所以CreateObject比WScript.CreateObject要稍微快一點(diǎn)點(diǎn)(雖然幾乎可以忽略不計(jì)):
復(fù)制代碼 代碼如下:
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è)好處:可移植性更好、速度更快、代碼更短。
作者: Demon
鏈接: http://demon.tw/programming/vbs-createobject-wscript-createobject.html
相關(guān)文章
vbs AD日志開(kāi)啟腳本nableKerbLog的腳本
AD日志開(kāi)啟腳本2008-06-06
用VBS來(lái)代替BAT或CMD文件進(jìn)行命令
忽然想到要用VBS來(lái)代替BAT或CMD文件進(jìn)行命令集成,于是開(kāi)始下苦工學(xué)習(xí)了一番!在網(wǎng)上找了好久終于找到東西。2008-06-06
vbs 注冊(cè)表實(shí)現(xiàn)木馬自啟動(dòng)
自己搗鼓了半天,終于寫(xiě)出了個(gè)腳本,實(shí)現(xiàn)flux在注冊(cè)表中的啟動(dòng),當(dāng)然是更隱蔽的方法,別人知道了這個(gè)地方也就沒(méi)戲了。2009-05-05
把任意文件轉(zhuǎn)成vbs文件的file2vbs的vbs代碼
文章作者:xiaolu [BST] 信息來(lái)源:邪惡八進(jìn)制信息安全團(tuán)隊(duì)(www.eviloctal.com) 這個(gè)不是exe2vbs 所有類(lèi)型的文件都可以轉(zhuǎn)化的 不過(guò)限于string的大小 文件不能太大 我測(cè)試過(guò)3m的文件是可以的2008-05-05
超級(jí)厲害的VBS定時(shí)提醒腳本 Remind.vbs
這個(gè)是我見(jiàn)過(guò)的最有特色的腳本提醒程序了,時(shí)間|提示語(yǔ),具體使用方法可以參考例子2008-06-06
可以將文件轉(zhuǎn)換為vbs語(yǔ)句的vbs代碼
可以將文件轉(zhuǎn)換為vbs語(yǔ)句的vbs代碼...2007-03-03
VBS中用CDO.Message發(fā)送郵件的實(shí)現(xiàn)代碼
曾經(jīng)在編寫(xiě)VBS版U盤(pán)小偷程序的時(shí)候Google過(guò)怎么用VBS發(fā)送E-Mail,不知道為什么當(dāng)時(shí)Google不到,可能是眼花了吧。2011-01-01

