gpt4 book ai didi

windows - Hook Win32 API 事件以在桌面完全加载时收到通知

转载 作者:可可西里 更新时间:2023-11-01 10:21:51 26 4
gpt4 key购买 nike

想象一个场景,当用户登录并且没有注销切换到另一个用户时。然后切换回来。当切换回来时(因为我们从未退出),Windows 将首先显示黑色桌面,然后进行一些窗口闪烁(尤其是有 2 个显示器),最后将所有内容重新安排到我们离开的状态。闪烁和重新排列需要一些时间(大约 1 秒)。

获取有关桌面已完全加载的通知的最有效方法是什么?我需要这个,因为我想在桌面完全加载时调用我的特定功能。

一个选项是 Hook 到 WM_PAINT,但我使用了 Spy++,我在桌面上得到了 12 个 WM_PAINT 事件,所以这并不可靠。有人知道另一种方法吗?

最佳答案

找到了一个简单得多的解决方案。调用 DwmFlush()。该函数是 Windows DWM api 的一部分。

这是我测试过的示例代码,它实际上可以在 Windows 8.1 中实现快速用户切换:

while (true)
{
HRESULT hr = DwmFlush();

if (hr == S_OK)
{
std::cout << "TRUE" << std::endl;
}
else
{
std::cout << "FALSE" << std::endl;
}

Sleep(1000);

}

关于windows - Hook Win32 API 事件以在桌面完全加载时收到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26743701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com