簡體   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