Ваша первая попытка не удалась, поскольку редактирование реестра вручную никогда не является правильным способом изменения настроек системы.Как вы узнали, многие компоненты Windows (и другие приложения!) Считывают эти значения конфигурации один раз и кэшируют их, предотвращая распространение ваших изменений.Другая проблема (и вы будете удивлены, как часто я это вижу) - это приложения, которые пытаются обойти в реестре, как правило, портят вещи.
Вместо этого вам следует вызвать документированный API для изменения настроек.Почти всегда есть документированный способ сделать это, и если нет, то тогда вам не следует этого делать.
Это, похоже, один из таких случаев.Есть документированная DwmGetColorizationColor
функция, но нет соответствующей DwmSetColorizationColor
функции, как можно было бы ожидать.
Причина в том, что пользователь должен быть единственным, кто может изменять свои настройки окраски, а не другие приложения.Вы можете пообещать не злоупотреблять этим и вносить такие изменения только по явному запросу пользователя, но не всем приложениям можно доверять.Многие люди использовали бы его злонамеренно, поэтому эти функции не были задокументированы и раскрыты.
Но, как обычно, если вы нажимаете на, вы обычно можете найти недокументированный способ выполнения действий.Проблема с использованием недокументированных функций заключается в том, что нет гарантии, что они будут работать или продолжать работать.Их намеренно оставили недокументированными, потому что они могут измениться в новых версиях Windows.Вы должны использовать их только на свой страх и риск.
В этом случае, если вы используете программу типа DumpBin для получения списка всех экспортируемых функций из библиотеки DWM (dwmapi.dll
), вы увидитеряд недокументированных экспортируемых функций.
Вам интересны DwmGetColorizationParameters
и DwmSetColorizationParameters
.Обе эти функции принимают структуру COLORIZATIONPARAMS
в качестве аргумента, который содержит необходимые им значения.
Итак, вам необходимо выполнить обратный инжиниринг этих функций и получить соответствующие определения.Затем вы можете вызвать функцию DwmGetColorizationParameters
, передав структуру COLORIZATIONPARAMS
, чтобы получить текущие настройки конфигурации;изменить элемент структуры, который содержит текущий цвет окраски;и затем передайте эту модифицированную версию структуры в функцию DwmSetColorizationParameters
.
Я упоминал, что не рекомендую делать это?