Comment désactiver l'animation de programmation fenêtre sous Vista Aero?
-
16-09-2019 - |
Question
Mon application ne screenshots automatisée de plusieurs formes créées dynamiquement. Cela fonctionne parfaitement sous Windows XP, mais ne fonctionne pas bien sous Vista Aero. La plupart des formes apparaissent dans les captures d'écran semi-transparent. Le problème réside dans l'animation de la fenêtre de Aero.
Comment puis-je vérifier / désactiver / activer cette animation à l'intérieur d'un programme Delphi (2007+)?
Ou comme alternative: Comment puis-je assurer que le formulaire est affiché correctement avant de faire la capture d'écran
La solution 2
Le lien dans le commentaire de Shoban m'a conduit dans la bonne direction. Une vérification rapide a montré une enveloppe pour le DwmApi dans la VCL et de ce qu'il est allé tout droit. Voici le code que j'utilise avec succès maintenant:
uses DwmApi;
...
SaveDwmCompositionEnabled := DwmCompositionEnabled;
if SaveDwmCompositionEnabled then
DwmEnableComposition(DWM_EC_DISABLECOMPOSITION);
...
if SaveDwmCompositionEnabled then
DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
Autres conseils
Aero serait La désactivation de dommage -. En général, il est pas une bonne idée de changer le choix du style de l'interface utilisateur de l'utilisateur
Vous pouvez être en mesure de tirer la forme d'une autre manière. Une chose qui vient à l'esprit utilise le PaintTo méthode pour peindre sur une toile. (En fait, si vous prenez des captures d'écran des formes comme un moyen d'obtenir ce que il semble que vous n'avez pas besoin probablement montrer les formes du tout - les créés avec VISIBLE false et les peindre à un bitmap uniquement. leur montrer si l'utilisateur a besoin d'interagir avec eux.)
Vous pouvez ajouter une ressource manifeste dans le fichier exe, de notifier Vista que vous voulez que l'application fonctionne sans Aero http://www.google.be/search?q=vista+ manifeste + ressource + delphi