Как программно отключить анимацию окон под Vista Aero? - PullRequest
4 голосов
/ 16 июля 2009

Мое приложение делает автоматические скриншоты нескольких динамически создаваемых форм. Это отлично работает в Windows XP, но не работает в Vista Aero. Большинство форм отображаются полупрозрачными на скриншотах. Проблема заключается в анимации окна Aero.

Как я могу проверить / отключить / включить эту анимацию из программы Delphi (2007+)?

Или как альтернатива: как я могу убедиться, что форма отображается правильно перед созданием скриншота?

Ответы [ 3 ]

1 голос
/ 17 июля 2009

Жаль, что отключение Aero - вообще не стоит менять стиль пользовательского интерфейса пользователя.

Возможно, вы сможете нарисовать форму другим способом. Одна вещь, которая приходит на ум, - это использование метода PaintTo для рисования на холсте. (На самом деле, если вы воспринимаете скриншоты форм как способ получить то, на что это похоже, вам, вероятно, вообще не нужно показывать формы - создайте их с установленным для Visible значением false и закрасьте их в растровое изображение. покажите им, если пользователь должен взаимодействовать с ними.)

0 голосов
/ 18 июля 2009

Ссылка в комментарии от Шобана привела меня в правильном направлении. Быстрая проверка показала обертку для DwmApi в VCL, и с этого момента она пошла прямо вперед. Вот код, который я успешно использую сейчас:

uses DwmApi;
...
  SaveDwmCompositionEnabled := DwmCompositionEnabled;
  if SaveDwmCompositionEnabled then
    DwmEnableComposition(DWM_EC_DISABLECOMPOSITION);
...
  if SaveDwmCompositionEnabled then
    DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
0 голосов
/ 17 июля 2009

Вы можете добавить ресурс манифеста в исполняемый файл, чтобы уведомить Vista, что вы хотите, чтобы приложение работало без Aero http://www.google.be/search?q=vista+manifest+resource+delphi

...