在哪里可以找到 /usr/include/X11/extensions/Xcomposite.h

2024-04-11

我需要将我的应用程序放在全屏视频上并捕获它以放入我的 python tkinter 应用程序中的“画中画”框架中。我回顾了通常的嫌疑人(图像抓取, mss等),但它们似乎都只是抓取监视器上可见的内容。似乎没有人能够抓住一扇看不见的窗户。

我在以下位置找到了这个 C 程序堆栈溢出看起来很有希望:

  • 使用 X11 的 Xcomposite 扩展获取被覆盖、不可见或最小化的窗口的屏幕截图 https://stackoverflow.com/questions/21512177/get-a-screenshot-of-a-window-that-is-cover-or-not-visible-or-minimized-with-xcom
#include <stdlib.h>
#include <stdio.h>

#include <X11/Xlib.h>
#include <X11/X.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xrender.h>

int
main ()
{
  Display *display = XOpenDisplay (NULL);
  XID xid = 90177543; // xdotool search --name "World of Warcraft" | head -1

  // Check if Composite extension is enabled
  int event_base_return;
  int error_base_return;
  if (XCompositeQueryExtension (display, &event_base_return, &error_base_return))
    printf ("COMPOSITE IS ENABLED!\n");

  // Requests the X server to direct the hierarchy starting at window to off-screen storage
  XCompositeRedirectWindow (display, xid, CompositeRedirectAutomatic);
  // Preventing the backing pixmap from being freed when the window is hidden/destroyed
  // If you want the window contents to still be available after the window has been destroyed,
  // or after the window has been resized (but not yet redrawn), you can increment the backing
  // pixmaps ref count to prevent it from being deallocated.
  Pixmap pixmap = XCompositeNameWindowPixmap (display, xid);

  // Get window attributes
  XWindowAttributes attr;
  Status s = XGetWindowAttributes (display, xid, &attr);
  if (s == 0)
    printf ("Fail to get window attributes!\n");

  // Extract the data
  XRenderPictFormat *format = XRenderFindVisualFormat (display, attr.visual);
  int width = attr.width;
  int height = attr.height;
  int depth = attr.depth;

  // What we need to do now is to create an XRender Picture for the window,
  // which we'll need to draw it with the Render extension.
  // A picture is a basically a handle to a server side struct with some
  // additional information about a drawable (in this case a window),
  // such as its format, which clipping region should be used when
  // drawing it (if any), whether it should be tiled etc.
  XRenderPictureAttributes pa;
  pa.subwindow_mode = IncludeInferiors;
  Picture picture = XRenderCreatePicture (display, xid, format, CPSubwindowMode, &pa);

  // We now have all the information we need in order to be able to draw the window
  // using the Xrender extension, and we've created and prepared a source picture
  // for the window for this purpose.
  // The Xrender function we'll use to draw the window is XRenderComposite().

  //XRenderComposite (display, PictOpSrc, picture, None, ???destination???, 0,0, 0,0, 0,0, width, height);

  XFreePixmap (display, pixmap);
  XCompositeUnredirectWindow (display, xid, CompositeRedirectAutomatic);

  return 0;
}

现在真正的问题...

我的问题是这一部分:

#include <X11/Xlib.h>
#include <X11/X.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xrender.h>

所有这些文件都位于/usr/include/X11除了<X11/extensions/Xcomposite.h>。我可以在哪里找到它?

Ubuntu 16.04 LTS (ESM),内核 4.14.216-0414216-通用。太忙于学习新东西而无法打破,嗯,错误,升级到新版本。

FWIW这是一个已经可以使用的音乐播放器应用程序,单击按钮即可调低电视音量并恢复音乐。我只是增强它以移动到电视上,拍摄全屏视频并将其放入专辑插图通常旋转的 tkinter 框架中。定时器结束后,电视恢复,音乐播放器移回其来源的其他显示器。因此,我认为我找到的这个 C 程序是唯一的解决方案,但我欢迎罐装解决方案。


If you ,你会发现它生活在libxcomposite-dev包,所以你需要安装它。

为了找到这个,我访问了packages.ubuntu.com,然后在“搜索包的内容”下输入“Xcomposite.h”,为“分发”选择“xenial”,以及“包含名称以关键字结尾的文件的包” “就像这样:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在哪里可以找到 /usr/include/X11/extensions/Xcomposite.h 的相关文章

随机推荐

  • 如何限制我网站的 API 用户?

    我网站的合法用户偶尔会使用 API 请求攻击服务器 从而导致不良结果 我想设定一个限制 即每 5 秒不超过一次 API 调用或每分钟 n 次调用 尚未弄清楚确切的限制 显然 我可以将每个 API 调用记录在数据库中 并对每个请求进行计算 看
  • 来自终端的 Linux powershell 命令返回命令未找到

    我有一个运行 Ubuntu Server 16 04 且带有 Powershell 的 Linux 机器 如果我从 Linux 终端运行 sudo powershell Invoke Webrequest http ipinfo io js
  • 如何测试在 VB.net TabControl 中选择了哪个选项卡

    我有一个带有两个 TabPage 的 TabControl 我想知道测试当前显示哪个选项卡的最佳方法是什么 我不知道为什么我无法弄清楚这一点 TabControl SelectedTab http msdn microsoft com en
  • F# 查询串联

    我在用SqlDataConnectionF 中的数据提供程序迁移一些行 迁移的一部分是在 3 个表之间进行连接 如下所示 将其视为表的继承A B C where B and C继承自A所以我需要得到的是 类似 Linq Bs Join As
  • 为什么非自定义标头包含在 Access-Control-Request-Headers 中?

    我正在尝试发送跨源请求 就Access Control Request Headers就我而言 我在 FireFox Chrome 和 Safari 中遇到了不同的行为 Chrome Access Control Request Heade
  • 如何在 Netbeans 中设置 java 编译器

    我正在进入 Java7 开发 并且我已将 JDK7 添加到Java 平台并在项目属性中选择它 但是当我编译时 我收到如下消息 warning java lang Boolean class java lang Boolean class m
  • 如何“对齐”2个字符串?

    首先让我解释一下 对齐 的含义 假设我们必须字符串 例如AGBCDEFABCDIEFK 他们的 结盟 是 A G B C D E F A B C D I E F K A B C D E F 另一个 相当简单的 例子 因为我相信我的问题可能与
  • 在 React 中使用 setState 更新对象

    我如何将多个状态传递给setState 这是一个例子 getInitialState function return list newFilm searchWord searchDetails componentDidMount funct
  • 使用javascript在两种颜色之间切换的最佳方法?

    Javascript初学者在这里 我本质上想做一个简单的切换 如果元素是黑色的 请将其更改为白色 如果是白色 请将其更改为黑色 function changeClass if document getElementById myButton
  • std::chrono 在当前日期上添加天数

    我想使用 std chrono 来查找根据过期时间计算未来的日期 过期期限是一个整数 指定 从现在起的天数 那么如何使用 chrono lib 来查找 100 天后的日期呢 假设你有一个time point http en cpprefer
  • `printf("...") || 的语义printf(“…”) || printf("…")`

    我想知道以下语句在 C 中会打印什么 printf hello n printf goodbye n printf world n 我通常习惯使用 cout 在 C 中打印一些内容 此外 我对这种方式使用的管道和双管道运算符感到困惑 谢谢你
  • 使用brew在MacOSx上安装Redis JSON

    如何使用brew 在 macOSx 上安装 RedisJSON 如何在不编译redis的情况下启用redis上的模块 我不想使用 docker 客户端 Redis Stack 可能是最简单的方法 它不仅仅是 RedisJSON 还包括 Re
  • 从 Node JS 中的生成器获取返回值

    我似乎无法弄清楚如何获取生成器的返回值 有人知道我做错了什么吗 function getGeneratorReturn var generator runGenerator var generatorReturn null var done
  • 使用 Mimes 验证 Laravel 文件 Post - Word 文件

    我有一张已发布的表格 我正在尝试使用验证来仅接受 Word 文档 我尝试使用哑剧类型 但似乎不起作用 而且我无法发现我的错误
  • SQLAlchemy 中的复杂外键约束

    我有两张桌子 SystemVariables and VariableOptions SystemVariables应该是不言自明的 并且VariableOptions包含所有变量的所有可能选择 VariableOptions有一个外键 v
  • 正确使用 Scala 特征和 case 对象

    为了掌握 Scala 类和特征的窍门 这里有一个简单的例子 我想定义一个指定各种操作的类 可以通过多种方式实现 我可以从以下开始 sealed trait Operations def add def multiply 例如 我可能会用一个
  • Windows 批处理脚本中的 URL 编码

    我有一个 Windows 批处理脚本 用于快速进行 Google 搜索 但是 我不知道如何对特殊字符进行一般编码 就像我尝试搜索 C 一样 井号会破坏它 这是我的代码 SET q https www google com q SET q q
  • Laravel Blade 使用自定义函数

    我有一个刀片 用于打印表格的内容 对于某些列 我需要根据要打印的值添加 CSS 类 例如 如果 OK 则添加绿色类 否则添加红色类 当然逻辑会更复杂 但重点是所有逻辑都会与风格相关 哪一个是保存此类函数 方法的最佳推荐位置 我需要创建模型吗
  • 如何在 Android 中以编程方式关闭“询问使用 WLAN”?

    我将收到 一个应用程序请求使用 WLAN 的权限 允许吗 当我尝试更改 WiFi 状态时 Android 5 1 真实手机三星 SM J5008 中的提示窗口 我有谷歌一些信息 例如https groups google com d msg
  • 在哪里可以找到 /usr/include/X11/extensions/Xcomposite.h

    我需要将我的应用程序放在全屏视频上并捕获它以放入我的 python tkinter 应用程序中的 画中画 框架中 我回顾了通常的嫌疑人 图像抓取 mss等 但它们似乎都只是抓取监视器上可见的内容 似乎没有人能够抓住一扇看不见的窗户 我在以下