Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式(首次!)启用aero主题/桌面合成_C#_Windows 7_Dwm - Fatal编程技术网

C# 以编程方式(首次!)启用aero主题/桌面合成

C# 以编程方式(首次!)启用aero主题/桌面合成,c#,windows-7,dwm,C#,Windows 7,Dwm,我想以编程方式在Windows7机器上启用桌面合成(首选C#),并且已经尝试使用臭名昭著的DwmEnableCompositionp/Invoke来实现。但是,如果从未启用DWM(并且性能测试尚未运行),则这似乎不起作用。但是,我可以通过“个性化”控制面板启用DWM,而不运行性能测试 因此,我的问题是:如何以编程方式实现同样的功能?第二个问题:如何实现设置中的更改是持久的(例如,如果我在启用了DWM的机器上设置了DwmEnableComposition(false),那么一旦应用程序退出,它就会

我想以编程方式在Windows7机器上启用桌面合成(首选C#),并且已经尝试使用臭名昭著的
DwmEnableComposition
p/Invoke来实现。但是,如果从未启用DWM(并且性能测试尚未运行),则这似乎不起作用。但是,我可以通过“个性化”控制面板启用DWM,而不运行性能测试


因此,我的问题是:如何以编程方式实现同样的功能?第二个问题:如何实现设置中的更改是持久的(例如,如果我在启用了DWM的机器上设置了
DwmEnableComposition(false)
,那么一旦应用程序退出,它就会重新启用)?

答案是:您不能这样做


Microsoft不公开程序在用户计算机上启用或禁用桌面合成的编程方式

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

DwmEnableComposition
仅当您的应用程序与composition不兼容时才临时禁用DWM。当用户已经关闭构图功能时,它不能用于打开构图功能

过去5年中售出的任何计算机都能以图形方式使用composition,如果Windows支持composition,则默认情况下会将其打开。关闭它的唯一原因是:

  • 用户将其关闭
  • 正在运行另一个不支持组合的应用程序
无论哪种情况:你都不应该(因此也不能)打开它


你不能那样做。

答案是:你不能那样做


Microsoft不公开程序在用户计算机上启用或禁用桌面合成的编程方式

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

DwmEnableComposition
仅当您的应用程序与composition不兼容时才临时禁用DWM。当用户已经关闭构图功能时,它不能用于打开构图功能

过去5年中售出的任何计算机都能以图形方式使用composition,如果Windows支持composition,则默认情况下会将其打开。关闭它的唯一原因是:

  • 用户将其关闭
  • 正在运行另一个不支持组合的应用程序
无论哪种情况:你都不应该(因此也不能)打开它


你不能这样做。

我发现了一个比我的第一个解决方案更糟糕的解决方案:调用
winsat dwm
将在完成后自动打开Aero,如果硬件支持它,并且不会更改墙纸等。

我发现了一个比我的第一个解决方案更糟糕的解决方案:调用
winsat dwm
将打开Aero一旦完成,如果硬件支持,则会自动完成,并且不会更改墙纸等。

Windows仅支持禁用自己程序的合成功能。不能在系统范围内打开或关闭Aero。禁用Aero时也不能启用合成。这是合乎逻辑的,一个程序没有必要改变具有如此广泛副作用的系统设置。好的,那么让我重新表述这个问题:我如何以编程方式启用aero主题?您只处于5个阶段中的第3阶段。讨价还价也无济于事。shell32.dll不同意…Windows只支持禁用自己程序的合成。不能在系统范围内打开或关闭Aero。禁用Aero时也不能启用合成。这是合乎逻辑的,一个程序没有必要改变具有如此广泛副作用的系统设置。好的,那么让我重新表述这个问题:我如何以编程方式启用aero主题?您只处于5个阶段中的第3阶段。讨价还价也无济于事。shell32.dll不同意……如果没有API,程序员会找到另一种方法:rundll32.exe shell32.dll、Control_RunDLL desk.cpl desk、@Themes/Action:OpenTheme/File:“C:\Windows\Resources\Themes\aero.theme”@Christoph。很可能你可以在没有用户许可的情况下修改用户的计算机。通常我们称之为恶意软件。请注意,Windows中不再有“快速启动”菜单,或者程序无法将自己添加(或锁定)到“开始”菜单,或者Windows 7中的新任务栏。这都是因为开发者不能被信任去做正确的事情。桌面合成已关闭。这是有原因的。除非你有很好的理由打开它:你正在做一件坏事。考虑到你的应用程序无法关闭,我想不出任何理由打开它。我同意这是一个巨大的解决方案,你不应该这样做。但是,我有一个由几十个节点组成的集群,我不能在每个节点上都使用GUI。我本以为一旦安装了team green的驱动程序,DWM就会自动打开,但事实并非如此。顺便说一句,我所做的与无人值守的WAIK安装相同。如果没有API,程序员会找到另一种方法:rundll32.exe Shell32.dll、Control_RunDLL desk.cpl desk、@Themes/Action:OpenTheme/File:“C:\Windows\Resources\Themes\aero.theme”@Christoph很可能是您可以在未经用户许可的情况下修改用户的计算机。通常我们称之为恶意软件。请注意,Windows中不再有快速启动菜单,或者程序无法添加(或pin)他们自己打开了“开始”菜单,或者Windows 7中的新任务栏。这都是因为不能信任开发人员做正确的事情。桌面合成功能关闭了。关闭它是有原因的。除非你有很好的理由打开它:你做了一件坏事。考虑到你的应用程序无法关闭它,我想不出有什么原因可以关闭它