【问题标题】:I need to get the list of all the windows displayed or hidden in the desktop我需要获取桌面中显示或隐藏的所有窗口的列表
【发布时间】:2013-07-08 22:58:45
【问题描述】:

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

起初我期待真正的基本功能的完整覆盖,例如仅从Xlib 检索显示器的刷新率,后来我发现我需要Xrandr

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

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

【问题讨论】:

  • 顺便说一句,我设法获得输入而不是焦点(就 windows 而言),我知道如何获取光标的坐标,但没有 windows 上的信息它是无用的。跨度>
  • @n.m.问题:使用 DRI 库更好吗?我注意到 xlib 在使用时不是最新最好的,它缺乏很多功能。
  • 什么 DRI 库?开罗?它位于 Xlib 之上,而不是代替它。

标签: c++ c x11 xlib


【解决方案1】:

您可以通过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);

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

【讨论】:

  • 好的,我会尽快尝试,但是用户焦点呢?
  • 对不起,离开了 - XGetInputFocus as n.m.说
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多