CreateObject和Wscript.CreateObject有什么区别?

时间:2009-04-24 20:06:46

标签: windows vbscript wsh

有没有人知道使用该选项背后的原因:

Wscript.CreateObject("some.object")

CreateObject("some.object")
在VBScript中

?当我找到使用Wscript.CreateObject的文档或示例时,我通常使用CreateObject重写,因为它似乎总是有效,然后我可以轻松地在HTA或ASP中重用代码。但是我一直想知道为什么这个功能存在,如果你在VBScript中使用这种或那种方式会有什么不同。

3 个答案:

答案 0 :(得分:25)

当你用一个参数调用它们时,两者之间没有区别。做同样的事情。

如果您使用两个参数调用,则两者之间的区别仅在于证明。陈述

Wscript.CreateObject("some.object", "AnotherParam")

CreateObject("some.object", "AnotherParam")

做完全不同的事情:

  

VBScript CreateObject函数将第二个参数解释为远程计算机名称,并尝试在该远程计算机上创建命名的COM对象;在此示例中,它尝试在名为“AnotherParam”的远程计算机上使用ProgId“some.object”实例化对象的实例。 WScript CreateObject方法将第二个参数解释为子例程前缀,用于处理来自对象的事件。两个GetObject函数同样相关。

(改编自TechNet, “使用WSH比较VBScript CreateObject和GetObject函数”。)

答案 1 :(得分:5)

我猜WScript对象具有CreateObject方法,因此任何Windows脚本语言都可以创建COM对象。

VBScript具有作为全局函数的能力,但其他Windows Script主机语言可能不具备。

例如,JScript没有全局CreateObject函数(我相信)(但它确实具有var a = new ActiveXObject("...")语法,因此您不需要使用WScript.CreateObject JScript要么)。

我猜这两个函数没有区别。

编辑 存在差异(但只有当您尝试在远程主机上实例化DCOM对象时),请参阅@Thomas Petersen的答案。

答案 2 :(得分:4)

JScript没有全局CreateObject? WScript不能使用JScript?

Code from devGuru

// JScript
var objIE = WScript.CreateObject("InternetExplorer.Application","objIE_")
objIE.Visible = true

while (objIE.Visible){
    WScript.Sleep(500);
}

function objIE_NavigateComplete2(pDisp, URL){
    WScript.Echo("You just navigated to", URL)
} 

function objIE_OnQuit(){
    boolBrowserRunning = false ;
}
相关问题