XLIB C - 通过PID获取窗口

时间:2017-02-25 15:12:30

标签: c x11 xlib

我从xlib开始,我想知道是否可以使用C中的xlib来捕捉"一个带有PID的窗口,可以移动窗口,调整大小......?

例如,询问我的程序firefox窗口的宽度和高度。我不知道我的问题是否更清楚。

谢谢

2 个答案:

答案 0 :(得分:4)

我猜你的意思是拥有该窗口的(Linux或POSIX)客户端的进程ID。

但你的问题没有任何意义:X客户端可能在没有process-id的某个操作系统上运行,或者它可能在远程机器上运行(不同于运行X11服务器的机器) ),例如与ssh -X(然后你不能用那个pid做多少)。请务必了解有关X Window System(以及客户端,服务器,窗口管理器的角色)的更多信息。

但是,你可以学习(有痛苦和关怀)X11 Window protocols and architecture(包括X11 core protocol),EWMH规范(以及ICCCM)。查看_NET_WM_PID& XGetWMClientMachine

(Xlib&所有X protocols实际上都是复杂;您需要阅读数千页才能理解所有这些内容; 2017年这项工作可能已经过时,例如,因为Wayland;最好使用一些更高级别的工具包,如QtGTK)。

如果你想写一些X window manager(它们是复杂的野兽,因为与X相关的约定变得非常复杂),考虑研究一些现有的源代码并根据你的需要进行调整....

答案 1 :(得分:0)

您可以iterate through all windows并按名称搜索您想要的程序。之后,您可以使用XMoveResizeWindow随意移动和调整大小。