3 votes

Comment ramener automatiquement le focus sur mon application ?

Je suis en train de mettre en place un simple 'menu de démarrage' pour mon application, où l'utilisateur (expérimenté) peut cocher ou décocher diverses options d'exécution. Le menu de démarrage est un simple formulaire sans bordure affiché de façon modale et avec

  • Arrêtez bouton
  • Continuer ainsi que le bouton
  • options de démarrage cases à cocher

J'affiche cette boîte de dialogue d'option de démarrage au moment où je lance mon application si l'utilisateur maintient la touche F8 - j'ai découvert que Windows n'utilise pas F8, donc vous pouvez maintenir la touche F8 enfoncée tout en cliquant sur un raccourci de mon exe et ma boîte de dialogue de démarrage s'ouvre. C'est là que réside le problème.

Mon formulaire ne devient pas l'application active, mais la fenêtre de l'explorateur qui héberge le raccourci sur lequel j'ai cliqué. Si je clique sur mon formulaire (boîte de dialogue de démarrage), il obtient le focus. Comment puis-je faire en sorte que mon formulaire de dialogue d'amorçage "attire" Windows pour qu'il le mette en évidence ?

7voto

Ian Boyd Points 50743

En général, vous ne pouvez pas faire la mise au point. Extrait du blog Old New Thing de Raymond Chen :

...le gestionnaire de fenêtres ne voit aucune raison pour que la première instance ait le droit de prendre le premier plan. Il n'y a aucune preuve que la première instance passe au premier plan en réponse à une action de l'utilisateur.

Il existe plusieurs façons d'aborder ce problème. La plus simple est de...

...voler carrément la vedette est la mauvaise chose à faire...

...Ce n'est pas parce qu'il n'y a pas de bonne façon de faire quelque chose que l'on est automatiquement autorisé à le faire d'une mauvaise façon.

Le problème est que l'utilisateur a donné des informations à un programme qui est no le vôtre. Tu n'as pas le droit d'avoir l'accent juste parce que tu le veux.

Ce n'est peut-être pas la réponse que vous voulez, mais c'est la réponse. Et Microsoft a travaillé dur pour contrecarrer les programmes qui tentent de voler le focus. Toute solution que vous proposez enfreint les règles et risque de ne plus fonctionner à l'avenir.


...Ce n'est pas parce qu'il n'y a pas de bonne façon de faire quelque chose que l'on est automatiquement autorisé à le faire d'une mauvaise façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X