Question

De par sa conception, la vignette de l'application de la barre d'outils sur Vista ne met pas à jour lorsqu'une application est réduite au minimum, car la fenêtre réduite elle-même est pas redessiner. Pour une application de surveillance dont je dispose, il serait utile de mettre à jour la vignette d'application alors que l'application reste réduite au minimum. J'utilise Delphi 2009. Quelqu'un peut-il suggérer une bonne solution pour cela?

HMCG

Était-ce utile?

La solution

C'est intéressante, je pense qu'il est possible d'une certaine façon avec l'API Windows, je ne suis pas sur une machine de vista pour le moment mais je pense que Windows Media Player affiche toujours la lecture vidéo lorsqu'elle est réduite.

Je suppose un hack serait de remplacer le bouton de réduction et déplacer la forme de l'écran, puis détecter la forme redevient actif et de le remettre à l'ancien emplacement. Cela signifierait la forme est hors de la vue mais pas réduite au minimum.

Autres conseils

J'ai trouvé quelque chose dans un forum de développement Microsoft qui aborde ce sujet. La question portait sur un moyen de fournir une image miniature personnalisée, à laquelle Microsoft Leonardo Blanco répondu par ceci:

  

Nous aucun plan [t] pour fournir un moyen pour une application pour créer une   coutume représentation miniature de remplacement, mais nous   fournir une API de se retirer de l'image normale des vignettes   tout à fait ....

On dirait que ces plans pourraient avoir changé entre-temps, à en juger de l'existence dans MSDN des fonctions DwmSetIconicLivePreviewBitmap et href="http://msdn.microsoft.com/en-us/library/dd389411.aspx" rel="nofollow noreferrer"> DwmSetIconicThumbnail windows 7. En ce moment, ces entrées ne contiennent pas vraiment d'explications, mais leurs noms semblent prometteurs.

Quelqu'un a fait remarquer que la vignette pour Windows Media Player montre la vidéo en mouvement même si la fenêtre est réduite au minimum. explication de Blanco:

  

WMP utilise un nouveau pipeline vidéo qui parle directement à la   [Desktop Manager Fenêtre] pour obtenir une lecture plus fluide   expérience. Ce pipeline se fonde sur [DirectX] et ne   dépendent des informations de visibilité de la fenêtre, de sorte que la vignette   peut être gardé en vie, même si la fenêtre est réduite au minimum, comme   Tant que l'application continue de présenter des cadres. Vous remarquerez peut-être,   cependant, que l'interface utilisateur autour de la vidéo ne vit plus   (Ce qui est difficile à observer parce que l'interface utilisateur autour de la vidéo   ne met pas à jour habituellement). Pour un peu plus d'informations sur cette méthode,   voir l'API DwmSetPresentParameters .

Je crains que je ne trouve rien de plus à ce sujet. Documentation pour les fonctions de DWM est clairsemée.

Compte tenu de la nature de votre demande, peut-être il est utile d'envisager un gadget pour vivre sur la barre latérale de Windows.

Je ne sais pas si cette solution de contournement fonctionne encore en Delphi 2009: override CreateParams à définir GetDesktopWindow comme WndParent.

Je l'ai changé Application.Title dans le passé pour montrer des informations sur le bouton de la barre des tâches. Je ne suppose que cela provoque un nouveau tracé de l'icône?

Dans Delphi 2007 votre formulaire est mis sur la barre des tâches si vous définissez

  Application.MainFormOnTaskbar := True;

Pour faire la mise à jour, vous devez empêcher votre application de réduire au minimum et au lieu simplement déplacer à l'arrière. Vous pouvez le faire en mettant un TApplicationEvents sur la forme et l'attribution d'un gestionnaire d'événements à OnMinimize événement , puis appelez Application.Restore là-dedans. Vous voulez suivre votre propre état de minimisation et assurez-vous cacher toutes les autres formes (si vous en avez) et seulement votre principale forme visible, mais le Z-ordre le plus bas quand il est « réduite au minimum. »

Je ne pense pas que Windows Vista vous permet de déplacer des formes hors de l'écran, ou vous pouvez simplement le faire. Peut-être il y a un hack autour de cela.

Bonne chance!

allez à votre projet source et changer Application.MainFormOnTaskbar false: Application.MainFormOnTaskbar: = false;

Cordialement, Mauricio

http://sourceforge.net/projects/tcycomponents/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top