Bonjour,
Dans le cadre d'une application, j'ai besoin de pouvoir afficher la fenêtre principale d'un processus. De forcer une application au premier plan en d'autres termes.
L'application en question ouvre un fichier PDF (avec Process.Start) afin que l'utilisateur puisse le remplir (PDF formulaire). Lorsque l'on ferme le lecteur PDF je détecte la sortie de ce processus. A ce stade je veux remettre l'application principale au premier plan.
Deux cas possibles :
- Soit on est resté dans le lecteur PDF entre son ouverture et sa fermeture
- Soit on est allé à gauche à droite (recherche d'info pour compléter le PDF) avant de fermer le lecteur PDF
Dans le premier cas rien à faire de particulier, l'application principale reprendra la main naturellement. Dans le second cas par contre, il faut forcer l'application à revenir au devant de la scène.
J'ai trouvé plusieurs solutions à base de SetForegroundWindow, AttachThreadInput et autres. Cela ne fonctionne pas toujours correctement malheureusement (fenêtre qui ne revient parfois pas devant et éventuellement qui clignote dans la barre de tâche, ...). La seule solution à priori qui fonctionne bien c'est de minimiser / restaurer la fenêtre. Au début j'utilisais la méthode native ShowWindowAsync mais en jouant avec le WindowState on arrive au même résultat.
Le problème c'est que fenêtre se réduit puis revient à l'état initial ... et ça fait moche / pas très "pro"
Connaissez-vous une solution miracle pour ce problème ? ^^
Partager