2009-09-28 69 views
9

我正在使用Windows 7 RTM,我不知道控制面板如何在不重新启动DWM(uxsms)的情况下如此平稳地更新Aero Glass颜色。 DwmSetColorizationColor不工作任何更多...Windows如何更改Aero Glass颜色?

回答

12

下面的方法应该是你的兴趣:

[DllImport("dwmapi.dll", EntryPoint = "#127", PreserveSig = false)] 
public static extern void DwmGetColorizationParameters(out WDM_COLORIZATION_PARAMS parameters); 

[DllImport("dwmapi.dll", EntryPoint = "#131", PreserveSig = false)] 
public static extern void DwmSetColorizationParameters(WDM_COLORIZATION_PARAMS parameters, uint uUnknown); 

public struct WDM_COLORIZATION_PARAMS { 
    public uint Color1; 
    public uint Color2; 
    public uint Intensity; 
    public uint Unknown1; 
    public uint Unknown2; 
    public uint Unknown3; 
    public uint Opaque; 
} 

确保您调用DwmSetColorizationParameters方法之前做出DwmIsCompositionEnabled呼叫或将失败。

正如你所看到的一些参数/属性是未知的。
欲了解更多的信息,这里是一个link (in German)

+1

+ 1抵消stupd -1。这个答案是对“如何做......”这个问题的回答。这可能就是它的原因。尽管我将原始问题解读为“How * does * it do ...”,而不是“* How *它会做什么......” – 2009-12-04 16:22:09

+0

在Windows 7中,原始方法DWMSetColorization会引发异常(它在Windows Vista中受到支持)。我认为这是他的意图,找到一种新的方法,提供与旧的功能相同的功能。一种选择是编写.theme文件并执行该文件,或使用上面指定的未记录方法。 – Zyphrax 2009-12-06 13:09:08