我正在使用gcc在Linux中编写c ++库。 程序使用
在新的浏览器窗口中打开网页system("firefox https://www.webpage.com");
之后我使用xlib来确定每个打开的浏览器窗口的标识符。 然后程序使用
逐个引发firefox窗口XRaiseWindow(display, window)
为了制作每个窗口和OCR的屏幕截图。
但如果我手动关闭浏览器窗口并尝试使用
XRaiseWindow
使用相应的标识符生成 BadWindow 错误并终止程序。
那么我如何检查xlib是否存在具有给定window
标识符的窗口?
答案 0 :(得分:1)
来自X FAQ:
169)如何检查窗口ID是否有效?
我的程序在远程显示器上有一个窗口的ID。 我想在做任何事之前检查窗口是否存在。因为X是异步的,所以不能保证窗口 在您获得ID和您的时间之间仍然存在 将事件发送到窗口或以其他方式操纵它。你应该做什么 do是发送事件而不检查,但安装错误处理程序 捕获任何
BadWindow
错误,这表示窗口没有 更长的存在。除了[罕见]之外,这个方案将有效 原始窗口已被销毁,其ID重新分配给另一个窗口 窗口。您可以使用此方案制作检查有效性的功能 窗户;您可以通过调用使此操作几乎同步
XSync()
请求后,虽然仍无法保证 窗口将在结果后存在(除非抓住了消防员)。在 总的来说,抓住错误而不是预先检查是可取的。
长话短说:你不能:P你只能破坏控制。