4

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

这是在 WPF 中使用 Aero Effect扩展玻璃区域的解决方案。

4

1 回答 1

10

此 MSDN 页面上,它建议您可以使用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”而是“禁用 Glass”,如果可以,该方法的结果是什么。

于 2011-02-25T07:03:21.587 回答