IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Application à instance unique en C#

Les utilisateurs de VB.NET peuvent faire des applications Windows Forms avec une seule instance de l'application à la fois. Pour cela, dans leur propriété de projet sous l'onglet "Application", il leur suffit juste de cocher la case "Application à instance unique" dans le groupe "Propriétés de l'infrastructure d'application Windows" et le tour est joué.
Après, vous allez me dire qu'on peut toujours faire cela à l'aide d'un Mutex... mais avec une telle solution, on ne peut pas gérer la couche supplémentaire qui permet, dans le cas où l'on clique à nouveau sur l'exécutable, d'exécuter un code dans l'application déjà lancée comme par exemple restaurer la fenêtre principale de l'application déjà lancée à l'écran. Les utilisateurs de VB.NET peuvent faire cela aussi avec Windows Forms (mais uniquement Windows Forms d'ailleurs).
Pour cela, ils cliquent sur le bouton "Afficher les événements de l'application" et dans la classe générée, ils s'abonnent à l'événement "StartupNextInstance".

Les utilisateurs de C# n'ont pas ce privilège... A priori!

Je vais vous montrer le code qui vous permettra d'avoir accès aux mêmes privilèges en C#!

Ci-joint, une solution qui contient un exemple écrit en C# pour Windows Forms et même un exemple pour WPF!

Tout d'abord, il vous faut inclure la référence d'assembly "Microsoft.VisualBasic".

Ensuite, il faut, dans la propriété du projet, changer l'objet de démarrage.

Il y a une classe à dériver dans tous les cas : c'est "Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase". Dedans, j'y ai mis ma fonction Main.

Pour le reste des détails, je vous laisse regarder le code source.

Bonne lecture à vous!
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.