Qt / C ++获取所有应用程序窗口的Xid

时间:2016-03-29 14:50:14

标签: c++ qt

我在Qt / C ++中使用gstreamer,我想使用" ximagsrc xid = [MyXid]",用我的每个窗口的Xid替换[MyXid]电脑。 我找到了以下命令行:

wmctrl -l
0x02a00002  0 Fry XdndCollectionWindowImp
0x02a00005  0 Fry unity-launcher
0x02a00008  0 Fry unity-panel
0x02a0000b  0 Fry unity-dash
0x02a0000c  0 Fry Hud
0x02c0000a  0 Fry Desktop
...

获取ID。 (我能够使用" ximagsrc xid = 0x02a00002"例如)

但我在Qt / C ++和

编程

我想自动获取这些值。我可以通过C ++启动这个命令行但是如果" wmctrl"没有安装在计算机上,我的程序将无法正常工作。 (这对我来说似乎也是一种糟糕的方式,不是吗?)

有没有办法用C ++或Qt做到这一点?

谢谢,

度过美好的一天!

3 个答案:

答案 0 :(得分:1)

您可以使用wmctrl,而不是使用xwininfo,而这可能更容易使用。

如果要在程序中实现此功能,可以使用xlib或xcb来实现从X服务器检索此信息的客户端。查看wmctrlxwininfo的源代码,了解他们是如何做到的。

答案 1 :(得分:0)

尝试使用xwininfoxwininfo -root -children

答案 2 :(得分:0)

谢谢你的答案。

我终于拿了wmctrl的源代码并将其更改为我需要的东西我猜它可以用于windows。不幸的是,它不适用于Mac,但无论如何gstreamer for Mac录制屏幕仍然是一个糟糕的插件无法做到这一点。