在 C# 中刷新 Windows 航空预览时遇到问题

问题描述

我想刷新在 Windows 上将鼠标悬停在任务栏图标上时(或 Alt+Tabbing 时)显示的 aero 预览。

我发现一个名为 DwmInvalidateIconicBitmaps函数看起来很有前途,但是当我使用它时:

[DllImport("dwmapi.dll")]
static extern int DwmInvalidateIconicBitmaps(IntPtr hwnd);
...
int res = DwmInvalidateIconicBitmaps(MyWindowHandle);

res 设置为 -2,147,024,809。当我查看十六进制时,它显示FFFF FFFF 8007 0057,根据 this site,它似乎对应于 E_INVALIDARG

然而,我的窗口句柄有效并且在其他地方成功使用。我遇到的另一个站点提到无法加载 DLL 时可能会引发此错误。这可能是问题吗?

我也没有看到 pinvoke site 中提到的这个函数,尽管我确实看到了其他 DWM 函数,这很奇怪。

Windows 10 / .NET 核心

解决方法

documentation 明确规定了这一点:

hwnd

位图失效的窗口或选项卡的句柄 通过这个电话。 这个窗口必须属于调用进程

如果不是这种情况,您将收到 p 错误。