如何确保启用Aero效果?

时间:2011-02-25 06:41:56

标签: c# wpf winapi aero dwm

我们确定是否有任何API或玻璃效果已经激活?在我看到的一些代码中,如果DllNotFoundException抛出,那么它们会确保它不活动或不存在。是否有更好或更标准的方式?

这是将Aero Effect用于extend glass area in WPF的解决方案。

1 个答案:

答案 0 :(得分:10)

this MSDN page上,它建议您使用DwmIsCompositionEnabled检测Glass:

  

当桌面组成状态时   更改,WM_DWMCOMPOSITIONCHANGED   消息是广播的。没有   参数告诉你它是否存在   启用或禁用,因此取决于您   如果调用DwmIsCompositionEnabled   你有兴趣要做的代码   检查是直截了当的 - 棘手的   部分是决定你想要的   窗口,看看组成是否   禁用。

[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern bool DwmIsCompositionEnabled();

// Check to see if composition is Enabled
if (Environment.OSVersion.Version.Major >= 6 && DwmIsCompositionEnabled())
{
    // enable glass rendering
}
else
{
    // fallback rendering
}

但是我不确定你是否可以“启用Aero”但是“禁用玻璃”,如果是,那么该方法的结果是什么。