Apporter un autre processus au premier plan la Fenêtre quand il a ShowInTaskbar = false
Nous ne veulent qu'une seule instance de notre application qui s'exécute à un moment donné. Donc, au démarrage, il cherche à voir si l'application est en cours d'exécution et si elle l'est, elle appelle SetForegroundWindow sur la Fenêtre Principale.
C'est tout bon et bien ... , pour la plupart..
Quand notre application démarre, il affiche un écran de démarrage et un formulaire d'ouverture de session. Ces deux formes ont ShowInTaskBar = false.
De ce fait, si vous essayez de démarrer une autre copie de l'application lorsque l'écran d'ouverture de session est de montrer, que le formulaire d'ouverture de session n'est pas porté à l'avant!
Surtout en tant que l'utilisateur ne peux pas le voir quoi que ce soit dans la barre des tâches ainsi, tous les ils la figure, c'est que l'application est duff et ne peut pas démarrer. Il n'y a aucune indication qu'il y a une autre instance en cours d'exécution.
Est-il un moyen de contourner ce problème?
- Question: ne la définition de la propriété du Propriétaire du formulaire d'ouverture de session pas à résoudre ce ou n'ont aucun effet?
Vous devez vous connecter pour publier un commentaire.
Bien, le code est ici. Même si le
ShowInTaskBar
estfalse
, vous devriez être en mesure de le porter à l'avant.Remarque: vous devez
FindWindow
en utilisant le formulaire de la classe, et non pas par le nom de l'écran de démarrage formes, parfois, ne pas avoir des titres ou même la controlbox. Utilisez Spy++ pour creuser plus profond.Utilisation
FindWindow
sur splash. Je pense que c'est ce que vous voulez faire - apporter de l'écran de démarrage en avant lors du chargement du formulaire principal.Je pense que c'est la meilleure solution parce que sa restauration à partir de état réduit:
Simple appel:
Trouverez la première fenêtre qui correspond à la requête. Cela peut entraîner un comportement inattendu si une autre fenêtre utilise le même titre.
Bien que les chances que cela se produise peut sembler rare ou impossible (une seule instance de l'application), cela peut facilement se produire. L'explorateur de windows utilise par exemple le nom du répertoire sélectionné comme titre de la fenêtre (même invisible). Maintenant, si le titre de la fenêtre est un terme commun ou correspond au nom du répertoire de l'application, cela peut être un problème.