EMPÊCHER D'OUVRIR PLUSIEUR FOIS UN PROGRAMME EN VB NET

OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 - 26 avril 2005 à 22:43
sethlaerce Messages postés 30 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 4 octobre 2010 - 27 sept. 2010 à 12:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31008-empecher-d-ouvrir-plusieur-fois-un-programme-en-vb-net

sethlaerce Messages postés 30 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 4 octobre 2010
27 sept. 2010 à 12:30
Merci Pour l'info!
binet1 Messages postés 28 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 7 janvier 2009
18 nov. 2008 à 03:20
en fait pour avoir une seule instance et passer des paramètres quand on le relance avec paramètre, on peut utiliser "StartupnextInstance" de vb 2008 (c'est ce qui remplace "App.PrevInstance" de vb6). Pour l'activer suffit d'aller dans les propriétés du projet et de cocher la case "application à instance unique" puis cliquer sur le bouton "Afficher les événements de l'application" ainsi le fichier "applicationEvents.vb" est ajouté à l'explorateur de code. On y trouver la fonction pour le StartupNextInstance et on peut y ajouter le code que l'on veut. Les paramètres sont passé dans le tableau défini à "Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs" passé par valeur (par défaut e) soit e.CommandLine(0) où la position zéro contient le premier argument passé.
Ainsi on a qu'une instance de l'application et si on la relance il n'y a pas de nouvelle instance mais l'argument passé lors de la relance est passé au programme.
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
17 nov. 2008 à 20:56
J'ai pas bien compris la question.
binet1 Messages postés 28 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 7 janvier 2009
17 nov. 2008 à 19:46
oui mais comment fait-on alors pour activer l'autre instance avec des paramètres?
spyback Messages postés 8 Date d'inscription jeudi 3 mai 2007 Statut Membre Dernière intervention 6 janvier 2009
27 juin 2007 à 09:02
pas mall merci les gars
cs_Radwane37 Messages postés 10 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 20 avril 2009
5 déc. 2006 à 08:02
Ha ok, merci de l'info.
A propos du code au dessus, il ne marche pas tout le temps.
Je vais jeter un oeil dans msdn
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
4 déc. 2006 à 20:06
Plutôt que de faire tourner une boule sur des ensemble numérotés, on peut la faire exécuter des opérations sur les éléments d'une collection quelconque
Par exemple desfois on veut exécuter un code sur tous les contrôles d'un form, dans une boucle for each in VB se charge de le lancer une fois et une seule sur chaque contrôle... plus simple
T'as regardé dans la MSDN ?
cs_Radwane37 Messages postés 10 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 20 avril 2009
4 déc. 2006 à 11:38
dans quel cas on utilise la boucle for each in next i?
merci de repondre, je débute dans VB .net
Raxius
cs_Radwane37 Messages postés 10 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 20 avril 2009
4 déc. 2006 à 11:37
Vraiment sympa le code, merci
Raxius
montabone Messages postés 8 Date d'inscription samedi 19 avril 2003 Statut Membre Dernière intervention 20 août 2006
5 nov. 2005 à 20:54
Pas mal. Je viens de le rajouter dans mon code
imanoda Messages postés 1 Date d'inscription lundi 27 septembre 2004 Statut Membre Dernière intervention 7 octobre 2005
7 oct. 2005 à 22:56
salut moi j'etulise vb6 et je fais la meme code pour eviter le lancement de mes applications plus qu'une foit et le code doit etre ajouter dans la section load du premier form charge dans la memoire et le code comme suit:

If App.PrevInstance Then
msgbox " LE PROGRAMME EST DEJA OUVERTE "
end
End If
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
10 sept. 2005 à 12:57
Un truc genre App.PrevInstance te compte le nombre d'application déjà ouvertes
Je me souviens plus exactement de l'orthographe...
cs_Cocalight Messages postés 5 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 9 septembre 2005
9 sept. 2005 à 13:20
En vb6 sa donne quoi ?
COlive Messages postés 91 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 3 décembre 2011
5 août 2005 à 08:49
Perso moi j'utilise presque la même chose :

'Controle si une instance existe déjà
If Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName).Length > 1 Then
MsgBox("Application déjà lancée !")
End
End If

Et à part le cas ou un autre soft est le même nom de processus, j'ai pas de bug.

(En fait je compte les nombre d'élément du tableau de process ayant le nom du mien, si il y en a plus d'un j'interdit le lancement.)

Voilou.
Pour le cas ou on veuille controler ceci et enlever le bug des noms de process, on peut ajouter un comparatif de la taille des exe ou bien des versions (2 soft de meme nom de meme taille et de meme version devient tres rare..)
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
15 juin 2005 à 13:53
exact et il y a le bug où tu démarre une première instance, puis tu ouvre un autre logciel et après tu ouvres une 2e instance

le code regarde juste le dernier process. Par contre, c'est pas très dur a adapter
GLLNS Messages postés 4 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 15 juin 2005
15 juin 2005 à 12:22
Et si une autre app ayant le même ProcessName était déjà lancée?
Je pense que ton application ne va pas démarrer.
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
1 mai 2005 à 09:40
En effet je comprend tout a fait ! La boucle !
cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
1 mai 2005 à 01:48
C'est très partique pour les boucles For... Next, car si le For Each .... in ... est bien utile, lorsque tu as besoin de l'indice dans une boucle For Next et que tu ne connais pas la taille du tableau tu peux faire...
Dim i as Integer
Dim xxx(20) ' en admettant que tu ne connaisses pas 20
For i = 0 to xxx.GetUpperBound(0)

Next
cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
1 mai 2005 à 01:44
Eh bien le premier c'est LBound pour LowerBound et le dernier UBound pour UpperBound.
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
1 mai 2005 à 00:51
D'accord j'ai pigé donc si le Ubounds est supérieur à zero (un dans une collection) C'est que la même AppliY est plusieurs fois !

Merci !

C'est quoi l'inverse de ubounds pour avoir le premier element d'une collection ?!
cs_chris81 Messages postés 589 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 29 avril 2008 2
29 avril 2005 à 11:46
code sympa MERCI
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
29 avril 2005 à 00:17
C'est l'indice du dernier élément d'un tableau de données
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
28 avril 2005 à 23:51
Que signifie UBounds comme fonction ?!

Merci d'avance !
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
28 avril 2005 à 00:11
juste ça ça aurait été assez

If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
MsgBox("Application deja ouverte !", MsgBoxStyle.Critical, "Message à l'usager")
End
End If
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
27 avril 2005 à 13:36
If (x > 0) = True Then
On peut pas mettre
If x > 0 Then
en VB.NET ? Pas pratique...
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
26 avril 2005 à 22:43
Enfin voilà ce que je cherchais ! C'est pas trop tôt ! Car c'est embêtant d'ouvrir plusieurs fois le même logiciel ! Merci beaucoup ! Je t'ai mis 5/10. Mais je pense que j'aurai du mettre plus !
Rejoignez-nous