0

私はc++を使用してxpcomコンポーネントを開発しました。コンポーネントにGetHWND()メソッドがあります。また、javascriptを使用して別のxpcomコンポーネントを開発しました。javascriptxpcomコンポーネントでGetHWND関数を利用したい。私はそうするために次のコードを使用しています。

netscape.security.PrivilegeManager.enablePrivilege( "UniversalBrowserRead");

netscape.security.PrivilegeManager.enablePrivilege( "UniversalXPConnect");

var myComponent = Components.classes ['@ dougt / WebLock']。createInstance(Components.interfaces.IWebLock);

myComponent = myComponent.QueryInterface(Components.interfaces.IWebLock);

var res = myComponent.GetHWND(mainWindow.content.document);

しかし、「ReferenceError:netscapeisnotdefined」としてエラーが発生しています。私はグーグル検索をしましたが、それに対する解決策を見つけられませんでした。

私はMozillaFirefoxを使用していますが、同じように機能させたいと思っています。

この問題から抜け出すのを手伝ってください。前もって感謝します。

4

2 に答える 2

1

これらは必要ありません:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
于 2010-02-05T12:14:35.003 に答える
0

拡張コードが実行されると、Chrome 権限が付与され、XPCOM レイヤーとコンポーネントにアクセスできるようになります。

私が見たいのは、ニコライが言及した行で機能するかどうかです. そして2番目の項目>> C++コンポーネントのインターフェースがどのように定義されているか。XPIDL は HWND 型を認識しないため、別の型を提供する必要があります。または、ネイティブ型を使用できますが、[スクリプト可能な] インターフェイスではサポートされていません。

于 2010-04-01T08:08:03.803 に答える