如果窗口存在,如何签入xlib? 我在GCC中用Linux编写C++库。 程序在新的浏览器窗口中使用打开网页 system("firefox https://www.webpage.com");

如果窗口存在,如何签入xlib? 我在GCC中用Linux编写C++库。 程序在新的浏览器窗口中使用打开网页 system("firefox https://www.webpage.com");,c++,x11,xlib,C++,X11,Xlib,之后,我使用xlib来确定每个打开的浏览器窗口的标识符。 然后程序使用 XRaiseWindow(display, window) 以制作每个窗口和OCR的屏幕截图 但如果我手动关闭浏览器窗口并尝试使用 XRaiseWindow与相应的标识符一起生成BadWindow错误并终止程序 因此,如果存在具有给定窗口标识符的窗口,如何签入xlib?来自: 169)如何检查窗口ID是否有效? 我的程序具有远程显示器上窗口的ID。 在对窗口执行任何操作之前,我想检查它是否存在 因为X是异步的,所以不能保证

之后,我使用xlib来确定每个打开的浏览器窗口的标识符。 然后程序使用

XRaiseWindow(display, window)
以制作每个窗口和OCR的屏幕截图

但如果我手动关闭浏览器窗口并尝试使用
XRaiseWindow
与相应的标识符一起生成BadWindow错误并终止程序

因此,如果存在具有给定
窗口
标识符的窗口,如何签入xlib?

来自:

169)如何检查窗口ID是否有效?
我的程序具有远程显示器上窗口的ID。 在对窗口执行任何操作之前,我想检查它是否存在

因为X是异步的,所以不能保证窗口 从你拿到身份证到你离开 将事件发送到窗口或以其他方式操纵它。你应该做什么 要做的是发送事件而不检查,但安装一个错误处理程序 捕获任何
BadWindow
错误,这将指示窗口没有 不再存在。这项计划将起作用,除非在[罕见的]情况下: 原始窗口已被销毁,其ID已重新分配给另一个窗口 窗户

您可以使用此方案生成一个检查有效性的函数 窗户的边缘;您可以通过调用 请求后执行
XSync()
,但仍不能保证 窗口将在结果之后存在(除非抓取sterver)。上  总的来说,捕捉错误而不是预先检查更可取

长话短说:你不能:p你只能控制伤害