在 X11 下获取 Firefox 的窗口 ID (WId)



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

nsIWindowMediatornsIXULBrowserWindownsIXULWindow签出,但还没有找到。

我宁愿不采用通常的方式(ab)使用Xlib在窗口树中搜索与当前窗口的属性(如标题,类型等)匹配的窗口树。

我认为唯一可以得到它的地方是nsIEmbeddingSiteWindow.siteWindow(它的类型在Linux上是GtkWidget*,应该可以从中获取窗口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++编写)来实际检索该属性。不知道这对您来说是否是可接受的解决方案。唯一的选择应该是搜索窗口树。

最新更新