UAC提示通常显示在安全桌面上,因此它伴随着切换到不同的桌面(参见SwitchDesktop).虽然您可以关闭此选项并且没有 UAC提示导致桌面切换,但出于安全原因它默认处于启用状态,并且几乎可以肯定是您看到任何类型的视觉中断的原因.
您可以使用该SetWinEventHook功能监听EVENT_SYSTEM_DESKTOPSWITCH事件,以便接收已发生此事件的通知.你会得到一些误报,因为其他情况可能导致桌面切换,但在所有这些情况下继续重绘可能并不是什么大问题.
但这是一般解决方案,可能无法可靠地运行.通常,您不应该能够检测到安全桌面何时可见,因为这会打开可能的安全漏洞.
问题没有指定您使用的Direct3D版本,但如果它是旧版本(例如Direct3D 9),那么此桌面切换将被处理,就好像渲染设备丢失一样.在您的情况下,更好的解决方案可能是为丢失设备通知(EC_DEVICE_LOST)安装处理程序,以便您可以正确响应,包括重新建立句柄和强制重绘.
但是,对于Direct3D的现代版本,这应该不是问题,因为它们是为了识别桌面切换事件而编写的.UAC提示是导致桌面切换的一种常见方案; 锁定工作站是另一个.这两个都切换到安全的Winlogon桌面.较新的WDDM感知版本的Direct3D(例如,Direct3D 9Ex或Direct3D 10及更高版本)应该无缝地处理这种情况,而不会丢失渲染设备并且不会出现任何视觉中断.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |