gpt4 book ai didi

activex - new ActiveXObject() 和 WScript.CreateObject() 有什么区别?

转载 作者:行者123 更新时间:2023-12-01 23:43:46 26 4
gpt4 key购买 nike

根据Microsoft documentation ,可以使用 ActiveXObject() 创建 COM 对象的实例和 WScript.CreateObject()功能。好像是线条

var objXL = new ActiveXObject("Excel.Application");

var objXL = WScript.CreateObject("Excel.Application");

是一样的。这是一个真实的假设吗?如果不是,有什么区别?非常感谢显示差异的示例。

P.S. 这篇被标记为重复的帖子是关于 VBScript 的 CreateObject() 之间的区别的。方法和 JScript 的 WScript.CreateObject() .它回答提到 JScript 的 ActiveXObject()没有进一步阐述的构造函数。

最佳答案

它们一样吗?

简而言之,答案是肯定的,它们是相同的(从某种意义上说,它们执行相同的实例化自动化对象的工作)。

基本上与具有全局函数 CreateObject() 的 VBScript 不同,在基于 ECMAScript 第三版的 JScript 中没有这样的等价物。因此,Microsoft 添加了自己的扩展程序 ActiveXObject,其功能与 CreateObject 相同。

这两种语言都可以托管在 Windows Scripting Host 中,这使它们可以访问 WScript.CreateObject(),这是另一种执行完全相同功能但仅在 上下文中的方法WScript 对象,只能通过 Windows 脚本宿主使用。

跟进

关于它们是否相同存在一些争论,我仍然坚持我原来的答案它们是相同的。但是,我承认我比较的是 VBScript CreateObject() 和 JScript new ActiveXObject() 而不是 Wscript.CreateObject()(这是 < em>略微不同)。

让我们明确一点,所有这些函数和对象都服务于相同的目的,即实例化自动化对象 (COM)。为了支持这一点,这里提供了每个的官方描述;

WScript - CreateObject() Method

Creates a COM object

JScript - ActiveXObject Method

Enables and returns a reference to an Automation object

VBScript - CreateObject() Function

Creates and returns a reference to an Automation object

如果它们完全相同,那么它们的意义何在?我们已经有了特定于语言的自动化实例化方法,那么 Wscript.CreateObject() 的意义何在?

不同之处在于,当使用第二个参数调用时,它允许您指定一个前缀,用于区分该 COM 对象的事件处理程序。

这是一个 example taken from this answer这显示了如何使用第二个参数来设置 objIE_ 的前缀,然后该前缀将用于为与该 COM 对象关联的任何事件处理程序添加前缀,在本例中为 InternetExplorer.Application对象。

// 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 ;
}

它允许打开 Internet Explorer 实例并通过绑定(bind)事件导航到捕获的 URL,一旦 Internet Explorer 窗口关闭,脚本将结束。

因此,尽管它们并不完全相同,但它们确实执行相同的实例化自动化 (COM) 对象的功能。


有用的链接

关于activex - new ActiveXObject() 和 WScript.CreateObject() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64626674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com