我正在尝试使用 X11 相关库(例如 Xlib
和 Xrandr
)编写代码。
起初我希望能全面了解真正的基本功能,例如仅从 Xlib
中检索显示器的刷新率,后来我发现我需要 Xrandr
。
现在我需要获取桌面上显示或隐藏的所有窗口的列表,我没有考虑使用 Gnome/KDE/XFCE ...扩展,因为我知道那些只是 X11 的装饰器,但我无法真正找到能够枚举 X 服务器中打开的窗口的函数或宏。 我还需要获取处于焦点下的窗口的 ID/名称。
我的问题是:单独使用 Xlib
能够做到这一点吗?因为从 Xlib 采用的术语来看,我怀疑这个函数是否可能存在。
最佳答案
您可以使用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);
因此,要获得完整的列表,您必须从根窗口开始并为每个窗口的所有子窗口递归调用它。
关于c++ - 我需要获取桌面上显示或隐藏的所有窗口的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17537350/