Firefoxのアドオン/拡張機能内からFirefoxのX11WId(ウィンドウID)を取得する方法を見つけようとしています。
チェックアウトしましたがnsIWindowMediator
、見つかりませんでした。nsIXULBrowserWindow
nsIXULWindow
Xlibを使用してウィンドウツリーを検索し、タイトルやタイプなど、現在のウィンドウの属性に一致するものを探すという通常の方法は使いたくありません。
Firefoxのアドオン/拡張機能内からFirefoxのX11WId(ウィンドウID)を取得する方法を見つけようとしています。
チェックアウトしましたがnsIWindowMediator
、見つかりませんでした。nsIXULBrowserWindow
nsIXULWindow
Xlibを使用してウィンドウツリーを検索し、タイトルやタイプなど、現在のウィンドウの属性に一致するものを探すという通常の方法は使いたくありません。
それを取得できるのは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 ++で記述)を使用する必要がありました。それがあなたにとって許容できる解決策であるかどうかわからない。唯一の選択肢は、実際にウィンドウツリーを検索することです。