有没有人知道使用以下选项背后的原因:
Wscript.CreateObject("some.object")和
CreateObject("some.object")在VBScript中?当我找到使用Wscript.CreateObject的文档或示例时,我通常使用CreateObject重写,因为它似乎总是有效的,这样我就可以很容易地在HTA或ASP中重用代码。但我一直在想,为什么会有这个功能,如果你在VBScript中以这样或那样的方式使用,会有什么不同。
发布于 2009-04-24 20:17:56
当你只用一个参数调用它们时,两者之间没有区别。它们做的是完全一样的事情。
只有在使用两个参数调用时,这两个参数之间的差异才会明显。这些语句
Wscript.CreateObject("some.object", "AnotherParam")和
CreateObject("some.object", "AnotherParam")做完全不同的事情:
VBScript CreateObject函数将第二个参数解释为远程计算机名,并尝试在该远程计算机上创建命名的COM对象;在此示例中,它尝试在名为"AnotherParam“的远程计算机上实例化ProgId为"some.object”的对象的实例。WScript CreateObject方法将第二个参数解释为用于处理来自对象的事件的子例程前缀。这两个GetObject函数具有类似的关系。
(改编自TechNet的“比较VBScript CreateObject和GetObject函数与WSH”一节。)
发布于 2009-04-24 20:11:40
我猜WScript对象有CreateObject方法,所以任何Windows Script语言都可以创建COM对象。
作为一个全局函数,VBScript具有这种能力,但其他Windows Script宿主语言可能没有。
例如,JScript没有全局CreateObject函数(我相信)(但是,它有var a = new ActiveXObject("...")语法,所以您也不需要在JScript中使用WScript.CreateObject )。
我猜这两个函数之间没有区别。
DCOM EDIT:这是有区别的(但仅当您试图在远程主机上实例化对象时),请参阅@Thomas Petersen给出的答案。
发布于 2011-03-09 08:13:47
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 ;
}https://stackoverflow.com/questions/787369
复制相似问题