1

Firefoxのアドオン/拡張機能内からFirefoxのX11WId(ウィンドウID)を取得する方法を見つけようとしています。

チェックアウトしましたがnsIWindowMediator、見つかりませんでした。nsIXULBrowserWindownsIXULWindow

Xlibを使用してウィンドウツリーを検索し、タイトルやタイプなど、現在のウィンドウの属性に一致するものを探すという通常の方法は使いたくありません。

4

1 に答える 1

0

それを取得できるのはnsIEmbeddingSiteWindow.siteWindowだけだと思います(そのタイプはGtkWidget*Linux上にあり、そこからウィンドウIDを取得できるはずです)。nsIEmbeddingSiteWindowトップレベルウィンドウのインスタンスを取得するのは比較的簡単です。

Components.utils.import("resource://gre/modules/Services.jsm");

var embedding = Services.ww.getChromeForWindow(window)
                  .QueryInterface(Components.interfaces.nsIEmbeddingSiteWindow);

問題は、siteWindowプロパティが[noscript]アノテーターでマークされていることです。JavaScriptからはアクセスできません。そのため、実際にそのプロパティを取得するには、バイナリXPCOMコンポーネント(C ++で記述)を使用する必要がありました。それがあなたにとって許容できる解決策であるかどうかわからない。唯一の選択肢は、実際にウィンドウツリーを検索することです。

于 2012-06-16T09:51:41.720 に答える