【发布时间】:2013-07-04 10:34:48
【问题描述】:
所以我有一个 X 窗口(属于另一个进程),我想触发该窗口的调整大小事件,最好不实际调整它的大小。
我的第一种方法是调整窗口大小两次,第二次又回到原来的大小,但我失败了。问题是有问题的窗口是全屏显示的,显然在这些窗口上调用XResizeWindow 或XMoveResizeWindow 没有任何作用(这在某种程度上是有道理的)。如果窗口不是全屏模式,它可以正常工作。
因为这只是为了快速测试,所以我开始想知道是否可以在 X 服务器中为该窗口伪造/注入调整大小事件。对于看起来很简单的 MS Windows,在谷歌搜索时找到了很多示例,但对于 X,我似乎不走运。
背景(无论如何人们可能会问;)):我正在全屏启动 VMware Player 实例,在某些情况下启动后,Windows 客户机不会根据主机更改它的分辨率(但主要是确实如此,这要归功于客户机上安装了 VMware Tools)。该虚拟机用于连接不同大小屏幕的多台机器上,因此我无法将图像预配置为具有正确的分辨率。目前,如果分辨率错误,用户会被告知退出并重新进入全屏,但这很不方便。所以我的想法是简单地告诉 VMplayer 它只是在启动后调整了大小,但也许有更好的方法......
【问题讨论】:
-
强制窗口关闭全屏模式,然后再打开。您需要发送客户端消息,请参见示例,例如here.