Maximiser l'application dans la barre système?
-
26-09-2019 - |
Question
J'ai écrit une petite application WPF que lorsque « fermé » réduit dans la barre d'état système (exigence de client). Un double-clic, il revient en position, ou un clic droit donne un menu contextuel pour quitter.
Mais si l'application est réduite au minimum, et les utilisateurs à naviguer Démarrer-> Tous les programmes-> L'application démarre une nouvelle instance.
Qu'est-ce que (en C #) dois-je faire pour obtenir l'application pour maximiser l'instance en cours d'exécution si l'utilisateur le fait plutôt que de tirer une nouvelle instance?
Merci!
La solution
répondre de Jon Skeet traite de l'utilisation d'un mutex pour le faire
Mutex est la voie à suivre. C'est beaucoup moins fragile que d'utiliser des noms de processus etc.
Cependant, vous devez vous assurer que la Mutex ne sont pas des déchets collectés. dans le cas d'un service (qui est l'événement entraînée plutôt que d'avoir une « main » procédé qui se déroule à la fin), le moyen le plus judicieux de le faire est probablement mettre dans une statique variable.
Eliminer le mutex lorsque le service arrêts, de sorte que vous n'avez pas besoin d'attendre finalisation ou quelque chose comme ça.
Matthieu Brindley donne cet exemple dans la même question pour son réponse
[STAThread]
static void Main()
{
using(Mutex mutex = new Mutex(false, "Global\\" + appGuid))
{
if(!mutex.WaitOne(0, false))
{
MessageBox.Show("Instance already running");
return;
}
Application.Run(new Form1());
}
}
Afin de maximiser l'autre application, vous devrez envoyer le message à maximiser. Voir cet article sur envoi