在 C# 中刷新 Windows aero 预览时遇到问题
Having trouble refreshing the Windows aero preview in C#
我想刷新将鼠标悬停在 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
我的window句柄是有效的,并且在其他地方成功使用。我遇到的另一个网站提到当无法加载 DLL 时会抛出此错误。这可能是问题所在吗?
虽然我确实看到了其他 DWM 函数,但我也没有在 pinvoke site 上看到这个函数,这很奇怪。
Windows 10 个/.NET 核心
documentation明确规定了这一点:
hwnd
A handle to the window or tab whose bitmaps are being invalidated
through this call. This window must belong to the calling process.
如果不是这种情况,您将收到 E_INVALIDARG
错误。
我想刷新将鼠标悬停在 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
我的window句柄是有效的,并且在其他地方成功使用。我遇到的另一个网站提到当无法加载 DLL 时会抛出此错误。这可能是问题所在吗?
虽然我确实看到了其他 DWM 函数,但我也没有在 pinvoke site 上看到这个函数,这很奇怪。
Windows 10 个/.NET 核心
documentation明确规定了这一点:
hwnd
A handle to the window or tab whose bitmaps are being invalidated through this call. This window must belong to the calling process.
如果不是这种情况,您将收到 E_INVALIDARG
错误。