Vous pouvez essayer la fonction BringWindowToTop pour ne pas voler le focus. Je ne l'ai pas utilisé, mais il semble que ce soit ce que vous cherchez.
J'écris une application qui doit mettre la fenêtre d'une application externe au premier plan, et pas nécessairement voler le focus (il y a un paramètre que l'utilisateur peut basculer pour voler/ne pas voler le focus).
Quelle est la meilleure façon de procéder à l'aide de l'API win32 ? J'ai essayé SetForeground() mais il vole toujours le focus et ne fonctionne pas systématiquement.
Quelle est la meilleure façon de procéder ? Des idées ?
Vous pouvez essayer la fonction BringWindowToTop pour ne pas voler le focus. Je ne l'ai pas utilisé, mais il semble que ce soit ce que vous cherchez.
Quelle est la différence entre SetForeGroundWindow, SetActiveWindow et BringWindowToTop ? Il semble qu'ils fassent tous la même chose.
Selon MSDN, SetForeGroundWindow activera la fenêtre et dirigera le focus du clavier vers celle-ci. Cela tente de fonctionner même lorsque votre processus est en arrière-plan. SetActiveWindow fait la même chose que SetForeGroundWindow, mais il ne fait rien si votre application n'est pas la première application. Enfin, BringWindowToTop ne fait qu'amener la fenêtre en haut et ne modifie pas le focus du clavier.