繁体   English   中英

另一个工作区/桌面上的窗口的xcb_get_image_reply失败

[英]xcb_get_image_reply fails for window on another workspace/desktop

Ubuntu(xfce)提供虚拟桌面即工作空间。 我想获得放置在另一个虚拟桌面上的应用程序的屏幕截图。 我成功创建了xcb连接,我可以通过它的标题找到应用程序窗口。 问题是xcb_get_image_reply失败了。 我做这样的事情:

    auto cookie = xcb_get_image(m_XCBConnection, XCB_IMAGE_FORMAT_Z_PIXMAP, m_XCBWindow, x, y, width, height, ~0);
    xcb_generic_error_t * err = nullptr;
    auto image = xcb_get_image_reply(m_XCBConnection, cookie, &err);

    // xcb_connection_has_error( m_XCBConnection ) returns no error

    if ( err ) {
        // here I have err->error_code == 8
        free( err );
    }

如果我理解XCB错误编码一般XCB错误解释我得到的错误描述为:

匹配 InputOnly窗口用作DRAWABLE。 在图形请求中,GCONTEXT参数与目标DRAWABLE参数的根和深度不同。 某些参数(或参数对)具有正确的类型和范围,但它无法以请求所需的其他方式匹配。

但我不知道我应该怎么做。

注意:如果两个应用程序都在同一个虚拟桌面上,则上述解决方案可以正

引用https://www.x.org/releases/X11R7.6/doc/xproto/x11protocol.html#requests:GetImage

如果drawable是一个窗口,则窗口必须是可见的,[或]匹配错误结果。

因此,GetImage请求失败,因为您要截取的窗口不可见。 除了屏幕上可见的内容之外,X11服务器不会(真正)保留任何内容。 其他一切都没有保存在任何地方。

我想获得放置在另一个虚拟桌面上的应用程序的屏幕截图。

基本上:X11不能这样做,除了切换到其他虚拟桌面,等到(如何?)有问题的窗口重新开始,然后抓取截图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM