使用VirtuaWin时,获取Explorer窗口的GetWindowRect返回非常负面的值

5
我正在编写一个列出我Windows桌面上每个窗口的程序,但似乎只有一个窗口的GetWindowRect返回的矩形具有非常负的y坐标。可能的问题如下:(1)我有多个显示器,但(1a)y坐标非常负,大约为-24000,而(1b)其他窗口在两个显示器上都没有这种情况;(2)我正在使用VirtuaWin虚拟桌面工具,但(2a)其他窗口,在多个不同的虚拟桌面和两个显示器上,都没有这种情况;(3)我正在使用Python编写程序,并使用pywin32模块。涉及的窗口是Windows资源管理器窗口。它的大小和位置并不异常(至少从视觉上看)。当前活动虚拟桌面上的资源管理器窗口没有这种行为,但当我在其他虚拟桌面上创建资源管理器窗口时,它们会显示相同的意外效果。我正在运行Windows XP,并使用VirtuaWin 4.3版本。那么,到底发生了什么?
1个回答

3
所以,事实证明这与Python或多个监视器无关。VirtuaWin有两种在非当前虚拟桌面上隐藏窗口的方法。其中一种涉及隐藏窗口;另一种涉及搞乱它们的坐标以将它们移出屏幕。
坐标混淆技术用于Windows资源管理器窗口(我相信还包括某些版本的Internet Explorer窗口),因为这些应用程序如果你隐藏一个窗口然后创建一个新窗口,就会关闭先前隐藏的窗口!
因此,从2.6版本开始,VirtuaWin将属于这些应用程序的窗口移出屏幕而不是隐藏它们。
效果是这些窗口的y坐标从其“真实”值中减去了25000。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接