2008-10-29 89 views
0

我即將開始一個項目,該項目需要Firefox插件才能發出對客戶端Windows計算機上安裝的COM DLL的調用,並且我很難估計此承諾的複雜性。從Firefox插件調用COM對象

我對COM有相當多的經驗,所以我並不害怕它。我對Firefox插件的使用經驗不多,但我認爲這不是我的問題所在。

有沒有人做過類似的事情?

Firefox是否允許其插件與外界自由溝通?

有沒有插件或示例代碼的地方做了這樣的事情(谷歌出現了一些有用的結果)?

更新:當然,我更喜歡不需要在C++中構建擴展的解決方案(如果可能的話)。

回答

2

在C++中創建一個XPCOM以像往常一樣與COM對象通信。然後XPCOM擴展可以提供給Javascript來完成擴展的其餘部分(我猜主要是GUI)。但是,這就是我所瞭解的全部信息:-)

2

您可能會感興趣IE Tab extension,它是開源的。我沒有看,但我想它確實訪問使用IE的顯示器。

0

如果你這樣做,你幾乎肯定會需要使用XPCOM。看看Shanti Rao的JSDB,它支持Javascript中的COM/ActiveX。 ActiveX的東西在一個名爲wrap_com.cpp的文件中。它支持大多數IDispatch接口; IDispatch的Invoke方法是使這項工作的神奇。

這是多麼複雜取決於你希望這是來自「簡單」的Javascript。如果你實現了一個名爲IDispatchObject的XPCOM事物,那麼你必須傳入一個參數數組&的名字,那麼它可能不會太難。如果你想創建一個通用的方法來動態綁定COM對象&直接引用它們,那就更難了...不確定在JSDB中使用的技術是否會繼承到XPCOM。