我想以编程方式在Windows 7计算机上启用桌面合成(首选C#),并且已经尝试使用臭名昭着的DwmEnableComposition
P / Invoke进行。但是,如果从未启用DWM(并且性能测试尚未运行),这似乎不起作用。但是,我可以通过“个性化”控制面板启用DWM,无需运行性能测试。
因此,我的问题是:如何以编程方式执行相同的操作?第二个问题:如何实现设置的更改是持久的(例如,如果我在启用了DWM的计算机上设置DwmEnableComposition(false)
,则在应用程序退出后重新启用)?
答案 0 :(得分:1)
我找到了比第一个更难讨厌的解决方案:调用winsat dwm
会在Aero完成后自动打开Aero并且硬件支持它 - 并且它不会更改壁纸等。
答案 1 :(得分:0)
答案是:你做不到。
Microsoft没有为程序提供编程方式来启用或禁用用户计算机上的桌面合成。
他们不提供API的原因是程序可能会使用它 在过去,微软信任的开发人员不要做错事。那已经改变了
DwmEnableComposition
仅适用于您的应用程序暂时禁用 DWM,如果您与合成兼容。当用户已将其关闭时,它不能用于打开合成。
过去5年内销售的任何计算机都能以图形方式使用合成,如果支持,Windows会默认打开它。它被关闭的唯一原因是:
在任何一种情况下:你不应该(因此不能)打开它。
你做不到。