Question

Lors d’un événement DDE, mon programme charge un fichier et doit apparaître au premier plan. J'utilisais

show;

Cela ne semble fonctionner que lorsque j'ai caché la fenêtre.

J'ai donc ajouté

bringtofront;

Encore une fois, cela fonctionnait s'il était masqué, fermé, réduit ou dans la barre des icônes, mais pas s'il était ouvert juste sous une autre fenêtre.

J'ai même essayé des trucs hacky comme

windowstate:=wsminimized;
windowstate:=wsnormal;

d'essayer de le forcer à montrer, mais en vain. Je sais que le code fonctionne car j'ai des impressions imprimées de part et d'autre de ce bloc et il n'y a aucune déclaration conditionnelle dans laquelle il pourrait être bloqué.

Était-ce utile?

La solution

Avez-vous essayé SetForegroundWindow et / ou SetActiveWindow? Consultez également les informations MSDN sur ce sujet.

Autres conseils

SetForegroundWindow ne fonctionnera pas toujours. En fait, de nos jours, il est peu probable que cela fonctionne, car les applications ne sont pas censées attirer l'attention, elles ne peuvent que la donner. MS essaie depuis années d’empêcher les applications de voler le focus. Lisez les commentaires sur cette entrée de blog de Raymond Chen pour un peu d'histoire.

Ainsi, si vous êtes vous-même l’application d’avant-plan, vous pouvez définir SetForegroundWindow sur une autre application pour que tout soit clair. Si vous n'êtes pas l'application au premier plan, la seule chose susceptible de se produire est qu'un bouton de la barre des tâches commence à clignoter.

Juste pour ajouter de la confusion, le comportement précis dépend de la version de Windows, donc ce qui se produit dépend de la race de Windows que vous utilisez - ils déconnent cela depuis longtemps: -).

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