我需要获取桌面上显示或隐藏的所有窗口的列表

时间:2013-07-08 22:58:45

标签: c++ c x11 xlib

我正在尝试使用X11相关库(例如XlibXrandr)编写代码。

起初,我期待全面覆盖真正的基本功能,例如仅从Xlib检测显示器的刷新率,之后我发现我需要Xrandr。< / p>

现在我需要获取桌面上显示或隐藏的所有窗口的列表,我不考虑使用Gnome / KDE / XFCE ...扩展,因为我知道那些只是X11的装饰器,但我无法真正找到能够枚举X服务器中打开的窗口的函数或宏。 我还需要获取焦点窗口的ID /名称。

我的问题是:Xlib能够做到这一点吗?因为从Xlib采用的术语来看,我怀疑这个函数甚至可能存在。

1 个答案:

答案 0 :(得分:2)

您可以使用XQueryTree

获取子窗口列表
XQueryTree - query window tree information

Status XQueryTree(Display *display, Window w, Window *root_return, Window *parent_return, Window **children_return, unsigned int *nchildren_return);

因此,要获得完整列表,您必须从根窗口开始,并以递归方式为每个窗口的所有子项调用它。