我現在面臨一個問題,讓我幾乎要瘋了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」是關閉的外部組件,您也可以使用「投射助手」來執行此操作。