使用VBScript在Windows 7 Pro上获取进程列表时,将使用名为 getobject.vbs 的脚本:
Dim objWMIService
'
' case 1: this works:
'
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
WScript.Echo "GetObject() worked."
'
' case 2: this does not work:
'
Set objWMIService = WScript.GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
WScript.Echo "WScript.GetObject() does not work. So this line never runs."
'
' ...
'
Set objWMIService = Nothing
在案例1中,GetObject()运行良好。
但在案例2中,当使用WScript.GetObject()时,会发生以下错误:
GetObject()是一种WScript方法,请参阅Microsoft ref .. 为什么不能通过 WScript.GetObject()形式的完整引用来调用它?
作为比较,这两个电话都有效:
Dim xobj
Set xobj = CreateObject("Excel.Application")
Set xobj = WScript.CreateObject("Excel.Application")
答案 0 :(得分:4)
有a GetObject function of the VBScript language 和 a GetObject method of the WScript object。它们不一样,它们的原型和用法/语用不同。
更新评论:
阅读Eric Lippert的article,了解为什么有类似函数的host- 和语言提供的变体。
我的重击规则:使用Create / GetObject()的语言版本,除非您需要主机应用程序提供的附加内容(例如事件)。