Bonjour

Je suis confronté au problème suivant:

J'ai une application Windows qui tourne en tache de fond et qui "communique" avec une autre application. Quand cette dernière est fermée, la première doit afficher une dialogbox. Le problème est que juste après que l'application soit fermée (et juste avant que la dialogbox soit affichée), Windows redonne le focus à une autre fenêtre qui n'a rien à voir avec mon application.

Je ne crois pas qu'il y ait moyen d'activer la dialogbox par le code. Le mieux que je puisse faire et de l’amener au premier plan, mais j'aimerais éviter qu'elle y reste quand l’utilisateur veut mettre le focus sur une autre fenêtre.

L'astuce que j'ai trouvé consiste à amener la dialogbox au premier plan en définissant topmost dans le template et puis annuler le topmost en utilisant SetWindowPos() au moment d’initialiser ma dialogbox. Ça fonctionne assez bien, à ceci près que si l'utilisateur clique sur la fenêtre active (celle à qui Windows avait redonné le focus juste avant que la dialogbox s'affiche), la dialogbox reste au premier plan.

Pour pallier à ce problème je pensais capturer un clique sur la fenêtre active et la remettre au premier plan par le code.

Une autre solution serait de capturer un clique quelque soit sa position en dehors de la dialogbox, vérifier si après ce clique la dialogbox est toujours au premier plan et le cas échéant ramener au premier plan la fenêtre active.

J'aurais donc besoin de savoir comment capturer un clique sur une fenêtre qui n'appartient pas à mon application, ou bien un clique global.

Je suis également intéressé à toute autre idée pour résoudre mon problème.

Merci d'avance

max