2009-10-04 7 views
6

Comment imprimer des fenêtres réduites à l'écran? Je crois que c'est possible, puisque la barre des tâches de Windows peut créer un aperçu d'une fenêtre même si elle est minimisée.Comment puis-je imprimer des fenêtres réduites à l'écran?

+0

Le gestionnaire de bureau Vista parvient à le faire, donc je ne vois pas pourquoi pas. Comment bas niveau vous devez aller est une autre question ... – Noldorin

Répondre

3

Je suis assez confiant que ce n'est pas possible, au moins par une application externe comme la vôtre. Lorsqu'une fenêtre d'application est minimisée, la fenêtre ne peut pas (et ne reçoit pas) les messages WM_PAINT, ce qui signifie qu'il est impossible de demander à la fenêtre de se redessiner lorsqu'elle est réduite (ou de "prendre une photo"). Ceci est une limitation (ou une règle) de l'API Windows.

La barre des tâches « contourne ce » en affichant une image en cache (ce qui est le dernier cliché DWM a pris de la fenêtre avant qu'elle ne soit réduite au minimum) et il est donc pas en fait de prendre une photo actuelle de la fenêtre. Vous pouvez tester cela en exécutant une application qui se met à jour périodiquement, puis en la minimisant - vous verrez que l'image d'aperçu ne sera pas mise à jour jusqu'à ce qu'elle soit restaurée. La seule façon de contourner ce problème est de faire ce que la barre des tâches fait: prendre périodiquement une photo de la fenêtre de votre choix et, lorsqu'elle est réduite, utiliser l'image mise en cache à la place. Bien sûr, cela signifie que votre application devra avoir suivi la fenêtre cible un certain temps à l'avance (cela ne fonctionnera évidemment pas si la première fois que vous voulez prendre un instantané de la fenêtre est réduite).

+1

Voir http://msdn.microsoft.com/en-us/library/aa969541%28VS.85%29.aspx pour utiliser les fonctions DWM que la barre des tâches utilise . –

+1

Belle trouvaille, je n'avais aucune idée que l'API existait (même si elle ne serait utile que sur Vista ou plus récent) – GRB

+0

Que se passe-t-il si Windows Aero est désactivé? –