Как обновить после SPI_SETDISABLEOVERLAPPEDCONTENT? - PullRequest
0 голосов
/ 26 августа 2011

При установке SPI_SETDISABLEOVERLAPPEDCONTENT с использованием

User32.SystemParametersInfo(SPI_SETDISABLEOVERLAPPEDCONTENT, 0, true, User32.SPIF_UPDATEINIFILE)

флажок «Удалить фоновые изображения» в «Центре удобства доступа» установлен правильно, однако он не оказывает никакого влияния.Только после нажатия кнопки «ОК» в Центре легкости доступа настройка будет правильно активирована и фоновое изображение будет удалено.Есть ли способ принудительно обновить программу?Для многих других настроек SystemParametersInfo() достаточно постоянной SPIF_UPDATEINIFILE, но не в этом случае.

1 Ответ

2 голосов
/ 26 августа 2011

Вам, вероятно, понадобится также SPIF_SENDCHANGE: _UPDATEINIFILE гарантирует, что значение будет сохранено в реестре (или где-либо еще соответствующим образом), чтобы оно вступило в силу в будущих сеансах, но оно делает это в режиме без вывода сообщений, не уведомляя ни одно из работающих в данный момент приложений- так они заметят только при перезапуске.Использование _SENDCHANGE заставляет API отправлять сообщение WM_SETTINGSCHANGE всем окнам верхнего уровня, уведомляя их о том, что что-то изменилось;Хорошо написанные приложения перечитают настройки из API или реестра в этот момент и обновят / перекрасят.Панель управления Ease Of Access очень вероятно использует оба флага.

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