非活动窗口的屏幕截图

非活动窗口的屏幕截图

如何截取非活动窗口的屏幕截图?如果我有 2 个窗口,我想捕获在后台运行的窗口的屏幕截图。

答案1

为了详细说明之前的答案和评论,捕获非活动窗口(如完全或部分隐藏)的屏幕截图的能力似乎取决于窗口管理器。

使用以下(已给出)命令:

import -window <windowid> image.png

或者

xwd -id <windowid> | convert xwd:- image.png

-ofconvert用于使用来自管道的标准输入,xwd:告诉输入的格式)似乎可以在启示(e17,使用 Fedora 19 进行测试)捕获以下屏幕截图:

  • 完全或部分隐藏的窗口;
  • 最小化窗口;
  • 其他工作区上的窗口。

我检查过开箱(相同配置)和凯德(使用旧的 Scientific Linux 4.8 和最新版本ImageMagick(是的,令人难以置信的是它编译了......))并且在这两种情况下,屏幕截图仅显示显示层顶部的内容 - 也就是说,仅显示屏幕上已经可见的内容。

要点是该import命令检查to bemap_state返回的字段,如果不是,则返回错误。例如可以使用以下命令进行检查:XGetWindowAttributesIsViewablemap_state

xwininfo -id <windowid> | grep 'Map State'

它似乎总是IsViewable在 e17 下,而IsUnMapped一旦窗口最小化或其他什么,它就会在 openbox 和 KDE 下。

虽然不确定为什么当使用其他 WM 部分恢复窗口时,e17 的屏幕截图总是干净的,而它与其他窗口混合,但显然这也与 WM 处理显示的方式有关。

无论如何,显然这是 WM 的问题。如果能有一个 WM 能够和不能对隐藏窗口进行屏幕截图的列表就好了——我不会这样做。

答案2

“不活跃”是什么意思? “没有焦点”或“被其他窗口隐藏”?在第一种情况下,gimp 会毫无问题地执行此操作(文件 -> 创建 -> 屏幕截图)。在第二种情况下,它更困难(如果可能的话)。

答案3

for i in `xprop -root|grep "_NET_CLIENT_LIST_STACKING(WINDOW): 窗口 id" |tr '#' ','|tr ',' '\n'| grep 0x`;do xwininfo -id $i|grep "窗口 ID" ;完成

使用上面的内容我能够获取 Windows id。并使用

微信信息
能够找到窗口的标签或名称或标题。

答案4

kde的解决方案

系统设置->显示和监视器->合成器->始终保留窗口缩略图

相关内容