这个问题专门针对 Windows Embedded Standard 7,但我相信它也适用于非嵌入式 Windows 7。我使用的是带有 Intel HD2000/HD3000 显卡的 i7-2600 / i7-2600K。
在 Windows 7 中(可能还有其他版本?)会出现一个弹出窗口询问“是否要更改配色方案以提高性能?”这个问题。
我感兴趣的不是抑制弹出窗口的方法,而是按需触发弹出窗口的方法。听我说:我们正在为嵌入式产品使用 WES7,对于这种产品,弹出窗口是不可接受的(用户可能没有鼠标来关闭它们,因此可能需要重新启动机器),并且有报告称这种弹出窗口偶尔会出现。我们的计划是修复导致弹出窗口的任何原因,并抑制弹出窗口本身,即使存在问题。为了解决潜在的问题(我们的应用程序中存在一些错误?缺少某些资源?不当使用 GPU?),确切地知道哪些状态可能导致弹出窗口会很有帮助。为了绝对确保弹出窗口被抑制,能够可靠地触发它将很有用。
那么究竟什么状态会触发此弹出窗口?已经提出它与 GPU 内存直接相关。在该链接中有一个实验,他们打开大量应用程序并观察(动态)GPU 内存的上升。但是他们还提到,在他们的情况下,Windows 不会弹出窗口,而是自动更改为基本配色方案,没有任何警告。当我重现实验时,我发现了同样的事情 - Windows 关闭了 Aero,没有任何警告或弹出窗口。
我还编写了一个小型 WPF 应用程序,旨在消耗动态 GPU 内存,用于打开和关闭大量包含位图的窗口。果然,动态 GPU 内存稳步上升,直到最终 Windows 关闭 Aero,没有任何警告或弹出窗口。在我的情况下,当我达到最高限制(~1650MB)时,就会发生这种情况
我可以通过连接屏幕并将其设置为非常高的分辨率来耗尽专用 GPU 内存。当专用内存接近极限时,Windows 会自动禁用 Aero,而不会发出任何警告或弹出窗口。(我的情况是 64MB)
我知道弹出窗口能发生在硬件和 WES7 映像的这种组合上,但我无法实现它。从我的实验来看,它似乎与 GPU 内存(专用或动态)中的某些阈值没有直接联系,似乎还有其他因素。
我们也遇到过这种情况,即在弹出窗口出现的同时,应用程序的一部分变得无响应,因此有关产生弹出窗口的条件的任何信息都可能是导致此挂起的原因的线索。有可能。
是否有人有可靠的方法触发计算机上的弹出窗口,而不是 Windows 自动禁用 Aero?是否有人确切知道导致弹出窗口的条件,与自动 Aero 禁用不同?