加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

触发Windows UAC提示时是否有WinAPI消息?

发布时间:2020-12-14 01:35:41 所属栏目:Windows 来源:网络整理
导读:当触发UAC提示时(不是我的应用程序),它会破坏某些东西(我相信它是Direct3D设备句柄),这会导致屏幕显示最后一帧而不是运动图像. 我没有编写显示3D图像的代码(它是一个插件),但在UAC提示后,如果我调整窗口大小,图像将返回. 有没有办法检测UAC提示关闭所以我可
当触发UAC提示时(不是我的应用程序),它会破坏某些东西(我相信它是Direct3D设备句柄),这会导致屏幕显示最后一帧而不是运动图像.

我没有编写显示3D图像的代码(它是一个插件),但在UAC提示后,如果我调整窗口大小,图像将返回.

有没有办法检测UAC提示关闭所以我可以调用代码来刷新显示以补偿?

解决方法

UAC提示通常显示在安全桌面上,因此它伴随着切换到不同的桌面(参见 SwitchDesktop).虽然您可以关闭此选项并且没有UAC提示导致桌面切换,但出于安全原因,它默认处于打开状态,几乎可以肯定是您看到任何类型的视觉中断的原因.

您可以使用SetWinEventHook function,监听EVENT_SYSTEM_DESKTOPSWITCH event,以便收到发生这种情况的通知.你会得到一些误报,因为其他情况可能导致桌面切换,但在所有这些情况下继续重绘可能并不是什么大问题.

但这是一般解决方案,可能无法可靠地运行.通常,您不应该能够检测到安全桌面何时可见,因为这会打开可能的安全漏洞.

问题没有指定您使用的Direct3D版本,但如果它是旧版本(例如Direct3D 9),那么此桌面切换将被处理,就好像渲染设备丢失一样.在您的情况下,更好的解决方案可能是为丢失设备通知(EC_DEVICE_LOST)安装处理程序,以便您可以正确响应,包括重新建立句柄和强制重绘.

但是,对于Direct3D的现代版本,这应该不是问题,因为它们是为了识别桌面切换事件而编写的. UAC提示是导致桌面切换的一种常见方案;锁定工作站是另一个.这两个都切换到安全的Winlogon桌面.较新的WDDM感知版本的Direct3D(例如,Direct3D 9Ex,或Direct3D 10及更高版本)should handle this seamlessly,without losing the rendering device and without experiencing any visual disruption.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读