DwmEnableComposition not enabling Aero

DwmEnableComposition not enabling Aero

本文关键字:Aero enabling not DwmEnableComposition      更新时间:2023-10-16

我正在尝试为我的应用程序启用 Aero(一个与浏览器一起运行"单个进程"的 Firefox 插件),但我没有这样做。操作系统是Windows 7 64位。

这是代码:

BOOL bEnabled = FALSE;
if(SUCCEEDED(DwmIsCompositionEnabled(&bEnabled)) && !bEnabled){         
    HRESULT hres = DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
}

DwmEnableComposition应该启用组合,但它没有,该函数也返回:

S_OK

任何帮助将不胜感激,谢谢!

不能启用 DWM 组合;只能请求禁用它。当您完成需要关闭它时,您可以致电

DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);

从 MSDN:

当禁用合成的所有进程都调用 DwmEnableComposition 以启用它或已终止时,将自动启用 DWM 组合。

您不必启用它,只需宣布不再需要禁用它。(Microsoft不允许你启用合成的原因是,不能信任你尝试这样做。

你也应该在落后的时候放弃。再次来自MSDN:

注意:此函数已从 Windows 8 消费者预览版中弃用。无法再以编程方式禁用 DWM。

DwmEnableComposition()

系统范围内禁用时不起作用。它的唯一目的是通知 Windows 您正在启动或完成与 DWM 不兼容的操作。

此外,这取决于用户他们的操作系统是什么样子,而不是由程序来配置它。