1

我正在尝试找出如何从 Firefox 插件/扩展中获取 Firefox 的 X11 WId(窗口 ID)。

查了nsIWindowMediatornsIXULBrowserWindow但是nsIXULWindow没找到。

我宁愿不采用(ab)使用 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 回答