我现在面临一个问题,让我几乎要疯了JavaScript的 - 问题与具有多个接口的COM对象
我在HTA一个javascript必须调用某些COM对象
VAR COM1 =新的ActiveXObject( “PROGID”);
它正常工作,几乎所有的COM对象,除外实现2个接口IComOne和IComTwo一个COM对象
是否有为了告诉他只使用“IComOne以“铸造”的COM1对象的方式“界面?
我会为任何建议感激......
我现在面临一个问题,让我几乎要疯了JavaScript的 - 问题与具有多个接口的COM对象
我在HTA一个javascript必须调用某些COM对象
VAR COM1 =新的ActiveXObject( “PROGID”);
它正常工作,几乎所有的COM对象,除外实现2个接口IComOne和IComTwo一个COM对象
是否有为了告诉他只使用“IComOne以“铸造”的COM1对象的方式“界面?
我会为任何建议感激......
这是一个几年自从我上次曾与脚本和COM打,但我认为剧本只能调用由IDispatch接口提供了方法。如果你的组件不支持这个,你不能使用它。例如,不像您可以在任何对象上调用IUnknown.AddRef。
您可以使用Windows SDK的OLE/COM对象查看器实用程序更深入地了解您的组件。
首先,如果两个接口是双再就是的IDispatch
多种实现 - 一个用于每个接口,即用于QI上IDispatch
= IComOne
QI为IDispatch
上IComTwo
!。
com1
将指向默认界面上的IDispatch
impl(如IComOne
)。一种获得IDispatch
impl在IComTwo
上的方法是如果在IComOne
上有方法将自己投掷到IComTwo
(在自动发生retval时为IDispatch
的QI)。所以var com1 = ...
然后var com2 = com1.GetSecondInterface()
。
如果“progID”是关闭的外部组件,您也可以使用“投射助手”来执行此操作。