Используется ли DwmIsCompositionEnabled в Windows 8?

Согласно включение и управление композицией DWM:

Примечание Начиная с Windows 8 информация в этом разделе больше недействительна. DWM больше нельзя отключить программно, и его нельзя отключить, когда приложение пытается рисовать на основной поверхности дисплея. Следующая информация относится только к системам Windows 7 и более ранним версиям.

ХОРОШО. Таким образом, мы больше не можем программно отключить DWM. Но можно ли его все же отключить? Будет ли pfEnabled из DwmIsCompositionEnabled всегда иметь значение TRUE в Windows 8?

Если композицию можно каким-то образом отключить, является ли DwmIsCompositionEnabled каким-либо образом полезным?


person Jake Petroules    schedule 12.12.2012    source источник
comment
Без DWM не может быть никаких приложений Магазина. Я не понимаю сути вопроса, вы собираетесь писать код, который может работать только на Win8, но не на Win7? Это немного неразумно.   -  person Hans Passant    schedule 12.12.2012
comment
Что заставляет вас думать, что? Мое приложение выполняет пользовательскую прорисовку в Vista/7 в зависимости от состояния DWM, поэтому я просто хочу знать, всегда ли DwmIsCompositionEnabled возвращает значение true в Windows ›= 8.   -  person Jake Petroules    schedule 12.12.2012


Ответы (2)


Согласно Диспетчер окон рабочего стола всегда включен (Windows) в MSDN:

В Windows 8 диспетчер окон рабочего стола (DWM) всегда включен и не может быть отключен конечными пользователями и приложениями.

В Windows 8 компоновка рабочего стола DWM является основным компонентом операционной системы и не может быть отключена. За некоторыми исключениями, настольная композиция всегда включена; он запускается перед входом пользователя в систему и остается активным в течение всего сеанса.

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

Приложения не могут использовать DwmEnableComposition для отключения композиции рабочего стола. В целях обеспечения обратной совместимости вызов этого API завершится успешно; однако композиция рабочего стола не отключена

Ну, есть довольно категоричный ответ. Мне несколько любопытно, к чему относится за некоторыми исключениями... пожалуйста, добавьте комментарий, если вы знаете. :)

person Jake Petroules    schedule 16.12.2012

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

Проблема только в том, что не очень понятно, как его использовать для обычных приложений!

Это не отключает DWM как таковое, но определенно отключает композицию: просто загрузите калькулятор PowerToy для Windows XP и попробуйте запустить его в режиме совместимости с Windows 8, и вы увидите старую тему. все еще есть:

person user541686    schedule 18.02.2013
comment
Технически любое приложение может отключить политику неклиентского рендеринга DWM с помощью метода DwmSetWindowAttribute, после чего вместо стекла снова появится базовая тема. Однако, на самом деле, это не меняет того, что возвращает IsCompositionEnabled, поскольку это глобальное состояние системы, а не состояние приложения. - person Ray; 31.10.2014