Как Windows меняет цвет Aero Glass?

Я использую Windows 7 RTM, и мне интересно, как панель управления может так плавно обновлять цвет Aero Glass без перезапуска DWM (uxsms). DwmSetColorizationColor больше не работает ...


person Fred    schedule 28.09.2009    source источник


Ответы (1)


Вам должны быть интересны следующие методы:

[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;
}

Обязательно вызовите DwmIsCompositionEnabled перед вызовом метода DwmSetColorizationParameters, иначе он не удастся.

Как видите, некоторые аргументы / свойства неизвестны.
Для получения дополнительной информации см. ссылка (на немецком языке)

person Zyphrax    schedule 28.11.2009
comment
+1 для противодействия тупому -1. Этот ответ является ответом на вопрос, как это происходит ... Вероятно, именно так он это делает. Хотя я читаю исходный вопрос как "Как делает это происходит ... а не Как это происходит ..." - person Ian Boyd; 04.12.2009
comment
В Windows 7 исходный метод DWMSetColorization выдает исключение (хотя он поддерживался в Windows Vista). Я предполагаю, что он намеревался найти новый метод, предлагающий те же функции, что и старый. Один из вариантов - написать файл .theme и выполнить его или использовать недокументированный метод, который я указал выше. - person Zyphrax; 06.12.2009