2012-04-11 6 views
3

Я пытаюсь включить Aero для моего приложения (плагин Firefox работает с «одиночным процессом» с браузером), но я не могу этого сделать. ОС - Windows 7 64 бит.DwmEnableComposition не включает Aero

Это код:

BOOL bEnabled = FALSE; 
if(SUCCEEDED(DwmIsCompositionEnabled(&bEnabled)) && !bEnabled){   
    HRESULT hres = DwmEnableComposition(DWM_EC_ENABLECOMPOSITION); 
} 

DwmEnableComposition должна позволить композиции, но это не так, и функция возвращает:

S_OK 

Любая помощь будет оценена, спасибо!

ответ

2

DwmEnableComposition() не имеет никакого эффекта, когда он отключен. Единственная цель - уведомить Windows о том, что вы запускаете или завершаете операцию, несовместимую с DWM.

Кроме того, это зависит от пользователя, как выглядит их ОС, но не для его настройки.

+0

Спасибо за ваш ответ, программа спрашивает у пользователя, хочет ли он включить Aero на машине. MSDN говорит, что он будет * включить * или * отключить * Aero, я могу отключить Aero, но не включить его с помощью этого метода; поэтому я закончил делать это, заглянув в службу uxsms, сначала включил тему Windows 7 Basic, а затем начал сервис. –

4

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

DwmEnableComposition(DWM_EC_ENABLECOMPOSITION); 

Из MSDN:

DWM состав будет автоматически включается, когда все процессы, которые отключившие состав назвали DwmEnableComposition, чтобы включить его или иметь были прекращены.

Вы не можете включить, вы только объявить, что вам больше не нужно его выключенным. (Причина, по которой Microsoft не позволяет вам включить композицию, заключается в том, что you can't be trusted to not try to do it.)

Вы также должны сдаться, когда находитесь позади. Опять же из MSDN:

Примечание Эта функция нежелателен из Windows 8 Consumer Preview. DWM больше не может быть программно отключен.

 Смежные вопросы

  • Нет связанных вопросов^_^