JavaScript - 具有多个接口的COM对象的问题

时间:2011-02-01 15:40:08

标签: javascript com

我面临的问题让我几乎疯了

我在HTA中有一个javascript,必须调用一些COM对象

var com1 = new ActiveXObject(“progID”);

几乎所有COM对象都可以正常工作,除了实现2个接口的COM对象IComOne和IComTwo

有没有办法“转换”com1对象以告诉他只使用“IComOne”界面?

我很感激任何建议......

2 个答案:

答案 0 :(得分:0)

自从我上次使用脚本和COM以来已经有几年了,但我认为脚本只能调用IDispatch接口提供的方法。如果您的组件不支持此功能,则无法使用它。例如,你可以在任何对象上调用IUnknown.AddRef。

您可以使用Windows SDK的OLE / COM对象查看器实用程序更深入地了解组件。

答案 1 :(得分:0)

首先,如果两个接口都是双重接口,那么IDispatch有多个实现 - 每个接口一个,即IDispatch上的IComOne的QI!= {{1}的QI } IDispatch

IComTwo会将com1 impl指向默认界面(例如IDispatch)。获得IComOne imp IDispatch的一种方法是,如果IComTwo上有一个方法将自我强制转换为IComOne(自动调整,IComTwo的QI会自动发生) 。所以IDispatch然后var com1 = ...

如果“progID”是关闭的外部组件,你也可以制作一个“施放助手”来做这件事。