Как программно изменить текущую тему Windows?

Конечно, есть веские причины windows-applications для программного изменения windows текущей темы. Например. инструменту theme автоматического тестирования windows-application может потребоваться переключение windows-application между различными темами, чтобы windows-programming убедиться, что приложение windows-application правильно работает со всеми windows-programming из них.

Как пользователь, вы windows можете изменить тему, дважды windows щелкнув файл .theme в Windwos Explorer, а theme затем закрыв всплывающий windows-programming апплет панели управления. Вы windows-programming можете легко сделать то же windows самое из кода. Приведенные windows-applications ниже шаги отлично подходят windows-application для меня. Я тестировал только theme Windows 7.

  1. Используйте SHGetKnownFolderPath(), чтобы получить папку «Local AppData» для пользователя. Файлы тем хранятся в подпапке Microsoft\Windows\Themes. Файлы тем, хранящиеся там, применяются напрямую, а файлы тем, хранящиеся в другом месте, дублируются при их выполнении. Поэтому лучше использовать файлы только из этой папки.
  2. Используйте ShellExecute() для выполнения файла .theme, который вы нашли на шаге 1.
  3. Дождитесь применения темы. Я просто позволяю своему приложению спать на 2 секунды.
  4. Вызовите FindWindow('CabinetWClass', 'Personalization'), чтобы получить дескриптор окна панели управления, которое появляется при применении темы. Заголовок «Персонализация», вероятно, будет отличаться в версиях Windows, отличных от английского (США).
  5. Вызов PostMessage(HWND, WM_CLOSE, 0, 0), чтобы закрыть окно панели управления.

Это не очень элегантное windows-application решение, но оно работает.

windows

themes

2022-11-05T06:10:09+00:00
Вопросы с похожей тематикой, как у вопроса:

Как программно изменить текущую тему Windows?