ricklekebekoi
Messages postés303Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention24 avril 2009
-
9 avril 2007 à 18:59
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 2016
-
21 mai 2007 à 22:54
Voila, c'est une question posée par quelqu'un d'autre a la fin d'un autre topic, qui m'intéresse ... et je doute que les topics "réponse accepté" dont une question est posé par la suite soit encore lus, je repose donc la question, car c'est quelque chose que j'aimerais bien savoir aussi.
Dans le contexte d'une application qui peux être ouverte (Show()) ou en attente (Hide() + systray)
Si jamais l'application est lancéeàlors qu'elle est déjà lancée, j'aimerais que si elle est ouverte, elle passe au premier plan ... et que si elle est en attente, elle s'ouvre et passe au premier plan.
En fait la réaction exacte que peux faire MSN Messenger lorsqu'on relance le .exe si il est ouvert.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 9 avril 2007 à 19:25
Salut, dans le lien suivant tu as plusieurs propositions pour limiter ton programme à une seule instance ainsi que pour passer les paramètres de la ligne de commande à l'instance déja ouverte.
ricklekebekoi
Messages postés303Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention24 avril 20095 9 avril 2007 à 19:42
En fait j'ai insérer ton code dans ma form pour voir ce que ça donnais, et le resultat ne me donne qu'un Msgbox avec le fullpath de mon application. Il n'empêche aucunement l'execution simulatné de plusieurs instance, et pourtant je semblerais lire que oui.
Normalement, lors de la seconde instance, if
( hWnd !=
IntPtr.Zero )
devrait retourner vrai et terminer l'application directement, mais ça ne semble pas fonctionner chez moi.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 9 avril 2007 à 21:06
Je viens de tester mon code à nouveau, il fonctionne bien. Si tu l'utilises avec une icone dans le Sytem Tray faut certainement le modifier légèrement. Mais il est utile uniquement dans le cas ou l'on souhaite passer la ligne de commande à l'unique instance active.
J'ai indiqué aussi 2 autres liens qui permettent de limiter le programme à une seule instance, l'un avec les mutex et l'autre avec les processus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ricklekebekoi
Messages postés303Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention24 avril 20095 9 avril 2007 à 21:58
OK, je pense comprendre.
Le message box que je voyais afficher, c'était toujours l'application première qui me l'affichait, je me trompe ? et donc ce que tu affiche dans le message box est un message envoyé par la 2e instance, c'est docn avec ça que je pourais lui dire qu'une 2e instance a été ouverte et le faire réagir comme demandé plus haut ... soit refaire un show(), soit la mettre en premier plan ... je me trompe, ou j'ai compris ?
Ensuite je regarderai les liens donnés dans l'autre post lorsque j'aurai davantage de temps. Juste me confirmer ce que j'ai cru comprendre, et ce serait parfait. Merci pour ton aide, je met la question en stand-by et lorsque je me repencherai dessus au courant de la semaine je laisserai savoir ce qui fonctionne ou pas
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 9 avril 2007 à 23:50
Oui c'est bien ça, les instances suivantes ne s'ouvrent jamais, elle passent juste leur paramètres de ligne de commande à la première instance. J'ai mis une MessageBox juste pour rendre l'exemple plus explicite. Si les paramètres de la ligne de commande t'interesse pas tu verras dans les autres liens qu'alors c'est beaucoup plus simple.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 10 avril 2007 à 03:14
Je ne te suis pas là, de quoi parles tu ??
Avec mon code les icones dans la barre des taches ne s'additionnent pas, mais à cause de la MessageBox que j'ai mis juste pour rendre le code plus explicite, on voit apparaître un 2éme bouton dans la barre des taches tant que la MessageBox est ouverte mais une fois celle-ci fermée, il ne reste bien qu'une seule instanceen mémoire, d'ailleurs tu peux le verifier avec le gestionnaire des taches.
aifzaide
Messages postés41Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 2 juin 2010 10 avril 2007 à 14:36
J'ai utiliser la solution avec les mutex et ca marche tres bien, maintenant je suis dans le meme cas que Eric, j'aimerais qu'une fois que l'on clique pour relancer une deuxieme instance, il passe celle qui es deja lancer au premier plan sans aucun message, tout comme MSN Messenger merci pour l'aide