如何仅获取窗口的可见部分(Windows、gdi32、user32 等)

2024-06-25

我只想获取窗口中窗口的可见部分,作为一个区域。

只想获取用户看到的区域。 当然,以编程方式。这是一个例子。我有以下窗口组成:

+------------------------------------------+
 |                                          |
 |           +=============+                |
 |           |             |                |
 |           |    A   +--------------------------+
 |           |        |                          |
 |    C      |        |             B            |
 |           |        +--------------------------+
 |           |             |                |
 +-----------|             |----------------+
             |             |
             +-------------+

假设我只对窗口 A 感兴趣。 然后我需要的是一个区域的句柄,如下所示:

          +=============+                
          |             |                
          |    A  +-----+
          |       |                          
          |       |                         
          |       +-----+
          |             |                
          |             |
          |             |
          +-------------+

或者,我应该能够通过以下方式获取任何其他窗口的区域。

到目前为止,我用过本指南 https://devblogs.microsoft.com/oldnewthing/20030902-00/?p=42693,并且我同意 GetClipBox 返回 0、1、2 或 3,如果您相应地有 0 -> Error,1 表示 NULLREGION(生成的 rgn 对用户不可见),2 -> SIMPLEREGION 和 3 表示 COMPLEXREGION。到目前为止,我需要复杂的区域。

大师提问:但我如何获得它的坐标和尺寸 ?

(添加信息)

是否可以将复杂区域(由操作系统创建,而不是我创建)重建为其组成的简单区域。冯远建议你不能:

http://www.codeguru.com/forum/archive/index.php/t-126543.html http://www.codeguru.com/forum/archive/index.php/t-126543.html

(添加信息)

那么,有没有办法求出 A 和 A 的区域?将其转换为 PolyPath 或具有角坐标的漂亮几何图形 ?

顺便说一句,我使用 JNA (Java) ,但解决相同问题的 C# 或 .VB 代码就足够了。

Cheers.


您可以枚举所有桌面窗口以及所有监视器,并组合它们的矩形。我不确定是否有更好的方法。

请注意,如今 Windows“谎报”了窗口的确切尺寸(Aero 窗口边框比实际报告的稍大,除非您设置特殊标志)。

另请注意,窗口可以具有由每个应用程序定义的透明部分(除了 Aero 下始终具有的透明窗口边框之外)。

在高 DPI 系统上,您还需要小心,Windows 在坐标方面向您的应用程序“撒谎”,除非您特意将其标记为支持 DPI。

另请注意,即使是“不可见”窗口也可以通过 Aero 的任务栏、Alt-Tab 或 Flip3D 缩略图功能可见...因此,实际上,在启用了 DWM 的 Vista 和 Windows 7 上,答案是您的窗口可能是始终完全可见。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅获取窗口的可见部分(Windows、gdi32、user32 等) 的相关文章

随机推荐