我正在尝试找出如何从火狐插件/扩展中获取火狐的X11 WId (窗口id)。
查看了nsIWindowMediator,nsIXULBrowserWindow,nsIXULWindow,但没有找到它。
我不想用通常的方式(Ab)使用Xlib来搜索窗口树,以查找与当前窗口的属性匹配的窗口,比如标题、类型等等。
发布于 2012-06-16 17:51:42
我认为唯一可以获取它的地方是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++编写)来实际检索该属性。我不知道这对你来说是不是一个可接受的解决方案。唯一的选择应该是搜索窗口树。
https://stackoverflow.com/questions/11057906
复制相似问题