Можно ли изменить параметры производительности визуальных эффектов из приложения? - PullRequest
2 голосов
/ 28 марта 2012

Я изменяю значение реестра, найденное по адресу:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ VisualEffects.

Для моих целей он может хранить значение DWORD 0, 1, 2. Эти значения соответствуют переключателям «Визуальные эффекты» в «Параметры производительности» в Windows 7; «Пусть Windows выберет то, что лучше для моего компьютера», «Настроить для лучшего внешнего вида» и «Настроить для лучшей производительности» соответственно.

Если вы используете реальный экран «Параметры производительности», вносите изменения и нажимаете «Применить», визуальные настройки в Windows будут перезагружены, как и ожидалось. Если вы программно измените значение, оно ничего не сделает.

Есть ли способ сделать это в коде?

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Чтобы развернуть комментарий Раймонда:

На вкладке «Визуальные эффекты» имеется пятнадцать отдельных параметров производительности.Переключатель «Настроить для лучшего внешнего вида» включает их все.«Настройка на лучшую производительность» отключает их все.«Пусть Windows выбирает то, что лучше для моего компьютера», предположительно устанавливает их на основе индекса опыта Windows или какого-то подобного метода.

Вы не сможете реализовать «Пусть Windows выбирает, что лучше для моего компьютера».«из приложения, или, по крайней мере, не легко.Но вы должны иметь возможность реализовать две другие опции, используя SystemParametersInfo и устанавливая каждую из пятнадцати отдельных опций.

Вам нужно будет определить пятнадцать настроек, соответствующих параметрам на вкладке «Визуальные эффекты»: некоторые из них будут достаточно очевидными, другие могут быть методом проб и ошибок.Надеемся, что если вы установите переключатель на «Пользовательский», при открытии вкладки «Визуальные эффекты» вы увидите изменения, внесенные вашим приложением, и вы сможете определить, правильно ли вы настроили настройку.

Возможно, вы также захотите установить значение реестра для переключателя, чтобы пользователь мог видеть правильную вещь, если он откроет панель управления.

Приложение: для сценария, который вы описываете, вы, вероятно, захотите сначала прочитать все текущие настройки, а затем восстановить их.Либо прочитайте и восстановите настройки реестра, либо просто не трогайте их.

1 голос
/ 28 марта 2012

Насколько мне известно, реестр работает как любое другое хранилище.

Когда приложения нуждаются в значении из реестра, они проверяют его. Большинство приложений читают реестр только при первом запуске. Обычно вам нужно перезапустить соответствующее приложение, если вы вручную измените одну из записей реестра. Даже если перезапуск не требуется, вам все равно придется выяснить, как вызвать это конкретное приложение для повторного извлечения этой конкретной записи.

Таким образом, чтобы ответить на ваш вопрос, не существует волшебной команды «обновить», которая будет выдавать текущее значение записи реестра в соответствующие приложения.

Теперь реальный вопрос, который вы хотите задать: «Есть ли способ заставить Windows перезагрузить параметры производительности?». Я не знаю, как это сделать.

Если есть доступный вызов WinApi, он, вероятно, попросит вас указать новое значение и позаботится об обновлении реестра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...