以编程方式(第一次!)启用航空主题/桌面组合

时间:2011-03-29 14:03:32

标签: c# windows-7 dwm

我想以编程方式在Windows 7计算机上启用桌面合成(首选C#),并且已经尝试使用臭名昭着的DwmEnableComposition P / Invoke进行。但是,如果从未启用DWM(并且性能测试尚未运行),这似乎不起作用。但是,我可以通过“个性化”控制面板启用DWM,无需运行性能测试。

因此,我的问题是:如何以编程方式执行相同的操作?第二个问题:如何实现设置的更改是持久的(例如,如果我在启用了DWM的计算机上设置DwmEnableComposition(false),则在应用程序退出后重新启用)?

2 个答案:

答案 0 :(得分:1)

我找到了比第一个更难讨厌的解决方案:调用winsat dwm会在Aero完成后自动打开Aero并且硬件支持它 - 并且它不会更改壁纸等。

答案 1 :(得分:0)

答案是:你做不到。


Microsoft没有为程序提供编程方式来启用或禁用用户计算机上的桌面合成。

  

他们不提供API的原因是程序可能会使用它   在过去,微软信任的开发人员不要做错事。那已经改变了

     

Because programmers were trusted to do the right thing

DwmEnableComposition仅适用于您的应用程序暂时禁用 DWM,如果您与合成兼容。当用户已将其关闭时,它不能用于打开合成。

过去5年内销售的任何计算机都能以图形方式使用合成,如果支持,Windows会默认打开它。它被关闭的唯一原因是:

  • 用户将其关闭
  • 正在运行另一个不支持合成的应用程序

在任何一种情况下:你不应该(因此不能)打开它。

你做不到。