我需要在桌面上显示或隐藏所有窗口的列表
I need to get the list of all the windows displayed or hidden in the desktop
我正在尝试使用与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);
因此,要获得一个完整的列表,您必须从根窗口开始,并为每个窗口的所有子窗口递归地调用它。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息