DwmGetWindowAttribute 返回错误的 RECT

问题描述

第一次在这里写问题,这个网站多年来对我帮助很大,谢谢!

DwmGetwindowAttribute 不会使用此代码返回窗口所在的确切矩形及其大小:

[DllImport("User32.dll")]
public static extern IntPtr GetForegroundWindow();

[DllImport("dwmapi.dll")]
public static extern int DwmGetwindowAttribute(IntPtr hwnd,DwmWindowAttribute dwAttribute,out RECT pvAttribute,int cbAttribute);

Intptr m_current_active_window_handle = GetForegroundWindow();
DwmGetwindowAttribute(m_current_active_window_handle,DwmWindowAttribute.DWMWA_EXTENDED_FRAME_BOUNDS,out RECT __rv,Marshal.SizeOf(typeof(RECT)));

我想在特定场合捕获活动/前景窗口,我在 2 个不同版本的窗口上进行了测试,但仍然无法使用我的设置..

双 1440p 显示器(均 100% 缩放)

Windows 10 企业版 LTSC 2019

Windows 10 专业版 (19042)

我在最小化/最大化期间禁用了动画,窗口下的阴影

这是我得到的,有时它会返回我的窗口,顶部有 2 个额外像素,其他 3 边没有黑色边框..

ps。忽略窗口周围的白色区域,它是故意在“窗口”周围显示额外的东西:

sample screenshot

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)