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

标签 c++ c x11 xlib

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

起初我希望能全面了解真正的基本功能,例如仅从 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/

相关文章:

c++ - 带指针的 std::swap 会导致段错误

c++ - .cpp 文件中纯虚函数的正确返回值应该是多少?

C 程序接收信号 SIGTRAP,每 3 次尝试运行良好

linux - 从 XCB 中的键名获取键码?

c - X11:如何正确支持每像素 16 位显示

C++:在基类的构造函数中调用重写的方法

c++ - 获取 range-v3 vector 对的交集

c - 在循环中打印字符串数组

c - 为什么变量值经过两次循环递增后就达到了5050? (循环到100)

r - 如何在没有显示器的机器上运行带有内联图形的 jupyter Rkernel notebook?