想象一下用户登录并且没有将交换机注销到另一个用户的情况。然后切换回来。当切换回来时(因为我们从未退出),Windows将首先显示黑色桌面,然后进行一些窗口闪烁(尤其是2个显示器),然后最终将所有内容重新安排到我们中断的状态。那种闪烁和重新安排需要一些时间(大约1秒钟)。
获取有关桌面完全加载的通知的最有效方法是什么?我需要这个,因为我想在桌面满载时调用我的特定功能。
一个选项是挂钩到WM_PAINT
,但是我使用了Spy ++,我在桌面上收到了12个WM_PAINT
个事件,因此不可靠。有人知道另一种方式吗?
答案 0 :(得分:2)
找到了一个更简单,更简单的解决方案。对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);
}