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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ne démarrer qu'une seule instance du programme


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations forums :
    Inscription : Janvier 2004
    Messages : 18
    Points : 20
    Points
    20
    Par défaut Ne démarrer qu'une seule instance du programme
    Bonjour à tous,
    J'ai conçu une application en VB.NET, mais après publication et installation sur la machine des utilisateurs, je remarque que sur une même machine, les utilisateurs peuvent lancer plusieurs instances du programme.
    Je voudrais empêcher cela et n'autoriser qu'une seule instance du programme soit démarrer sur la machine.
    Comment puis-je opérer cela?
    Merci pour le support
    Gilus

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si ton appli est du Windows form (et pas WPF) alors il suffit que tu ailles dans les propriétés du projet, sous l'onglet "Application" où tu trouveras une option qui s'appelle "Autoriser une seule instance" ou quelque chose comme ça.
    Après avec WPF et/ou C# c'est aussi faisable mais un peu plus complexe...

    [EDIT] Lit la petite intro du code source que j'ai mis ici pour le détail.
    Dernière modification par Invité ; 28/03/2014 à 16h04.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Bonjour

    Je suis très intéressé par la réponse en C# car, j'ai développé il y a quelques temps un petit utilitaire qui contrôle certains champs d'une liste fichiers Xml (cette liste pouvant être sélectionnée "à l'intérieur" l'utilitaire).
    Je voulais à l'époque pouvoir lancer cet utilitaire à partir d'une sélection de plusieurs fichiers dans explorer.exe de manière que ce qu'une seule instance du programme ne tourne et que chaque lancement supplémentaire, au lieu de créer une nouvelle intance, envoyait le chemin du fichier en paramètre à l'instace déjà existante pour qu'elle traite toute la liste de fichier (comme si je l'avais fait "de l'intérieur" de mon appli) en une seule fois...

    Je n'y suis pas arrivé ...
    Donc, je rebondis sur ce post dont la solution m'intéresse

    Olivier

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Holly Smoke Voir le message
    Je suis très intéressé par la réponse en C#
    ...
    au lieu de créer une nouvelle intance, envoyait le chemin du fichier en paramètre à l'instance déjà existante pour qu'elle traite toute la liste de fichier (comme si je l'avais fait "de l'intérieur" de mon appli) en une seule fois...

    ...

    Donc, je rebondis sur ce post dont la solution m'intéresse
    Eh bien si ce n'est pas déjà fait, n'hésites pas à cliquer sur mon icone de source (avec le symbôle ).

    après tu pourras peut-être adapter la fameuse méthode "StartupNextInstance" pour y faire le traitement voulu.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Ok, je te remercie Ph,

    Je regarderai cela ce week end
    je te tiendrai au courant

    A+

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    La case magique "Make single instance application" est propre à la technologie Winforms, plus particulièrement au "Windows application framework".

    Ca n'a rien à voir avec C# ou VB.NET !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sinople Voir le message
    La case magique "Make single instance application" est propre à la technologie Winforms, plus particulièrement au "Windows application framework".

    Ca n'a rien à voir avec C# ou VB.NET !
    Sauf que la classe qui permet de gérer cette case à cocher se trouve dans l'assemblage "Microsoft.VisualBasic". Alors oui, en principe elle n'a rien à voir avec C# ou VB.NET mais la gestion du code inhérent se trouve dans l'assemblage privilégié des utilisateurs de VB.NET.

  8. #8
    Membre chevronné

    Homme Profil pro
    Appui fonctionnel senior
    Inscrit en
    Juin 2007
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Appui fonctionnel senior
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 461
    Points : 2 213
    Points
    2 213
    Par défaut
    Bonjour,

    Je me permet de rajouter une réponse à la question initiale : les mutex ! J'ai trouvé ce petit lien sympathique en français pour détailler la marche à suivre. C'est du C#, mais cela devrait rester très simple à comprendre.

    Bien cordialement.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour Claude,
    Citation Envoyé par Lutarez Voir le message
    Je me permet de rajouter une réponse à la question initiale : les mutex !
    En effet le mutex peut être une solution simple, rapide et efficace si l'on veut juste qu'une autre instance ne se lance pas et puis c'est tout.
    Seulement, si par exemple je veux que lorsque l'utilisateur tente de ré-exécuter mon programme ça va ouvrir l'instance déjà existante, le mutex ne solutionne pas ce problème. N'hésites pas à regarder les sources que j'ai mises à ce sujet.

  10. #10
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Le Mutex est en effet une bonne solution. Si tu as besoin d'aller plus loin et d'informer l'instance déjà lancée que l'utilisateur a essayé de lancer une autre instance (pour par exemple la mettre au premier plan) tu peux regarder une source que j'avais fait il y a quelque temps qui utilise les IPC (inter process communication) :

    https://windowmanager.codeplex.com/S...er/App.xaml.cs

Discussions similaires

  1. Une seule instance partagée avec plusieurs programmes
    Par CZVF_RS dans le forum Langages
    Réponses: 4
    Dernier message: 29/05/2013, 22h53
  2. Une seule instance du programme Win 2003 Serveur
    Par Erakis dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/11/2007, 14h57
  3. [FAQ] une seule instance de mon programme
    Par kacedda dans le forum C#
    Réponses: 6
    Dernier message: 01/02/2007, 13h37
  4. Une seule instance d'un même programme java
    Par Bobo59 dans le forum Général Java
    Réponses: 13
    Dernier message: 29/09/2006, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo