EMPÊCHER D'OUVRIR PLUSIEUR FOIS UN PROGRAMME EN VB NET
OneHacker
Messages postés1447Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention23 septembre 2007
-
26 avril 2005 à 22:43
sethlaerce
Messages postés30Date d'inscriptionmardi 21 août 2007StatutMembreDerniè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.
sethlaerce
Messages postés30Date d'inscriptionmardi 21 août 2007StatutMembreDernière intervention 4 octobre 2010 27 sept. 2010 à 12:30
Merci Pour l'info!
binet1
Messages postés28Date d'inscriptionsamedi 26 février 2005StatutMembreDerniè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és921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 septembre 2010 17 nov. 2008 à 20:56
J'ai pas bien compris la question.
binet1
Messages postés28Date d'inscriptionsamedi 26 février 2005StatutMembreDerniè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és8Date d'inscriptionjeudi 3 mai 2007StatutMembreDernière intervention 6 janvier 2009 27 juin 2007 à 09:02
pas mall merci les gars
cs_Radwane37
Messages postés10Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention20 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és921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 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és10Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention20 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és10Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention20 avril 2009 4 déc. 2006 à 11:37
Vraiment sympa le code, merci
Raxius
montabone
Messages postés8Date d'inscriptionsamedi 19 avril 2003StatutMembreDernière intervention20 août 2006 5 nov. 2005 à 20:54
Pas mal. Je viens de le rajouter dans mon code
imanoda
Messages postés1Date d'inscriptionlundi 27 septembre 2004StatutMembreDerniè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és921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 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és5Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention 9 septembre 2005 9 sept. 2005 à 13:20
En vb6 sa donne quoi ?
COlive
Messages postés91Date d'inscriptionmercredi 27 février 2002StatutMembreDerniè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és2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 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és4Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention15 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és1447Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention23 septembre 20072 1 mai 2005 à 09:40
En effet je comprend tout a fait ! La boucle !
cs_julien__
Messages postés53Date d'inscriptionvendredi 2 janvier 2004StatutMembreDerniè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és53Date d'inscriptionvendredi 2 janvier 2004StatutMembreDerniè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és1447Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention23 septembre 20072 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és589Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention29 avril 20082 29 avril 2005 à 11:46
code sympa MERCI
Saros
Messages postés921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 septembre 2010 29 avril 2005 à 00:17
C'est l'indice du dernier élément d'un tableau de données
OneHacker
Messages postés1447Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention23 septembre 20072 28 avril 2005 à 23:51
Que signifie UBounds comme fonction ?!
Merci d'avance !
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 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és921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 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és1447Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention23 septembre 20072 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 !
27 sept. 2010 à 12:30
18 nov. 2008 à 03:20
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.
17 nov. 2008 à 20:56
17 nov. 2008 à 19:46
27 juin 2007 à 09:02
5 déc. 2006 à 08:02
A propos du code au dessus, il ne marche pas tout le temps.
Je vais jeter un oeil dans msdn
4 déc. 2006 à 20:06
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 ?
4 déc. 2006 à 11:38
merci de repondre, je débute dans VB .net
Raxius
4 déc. 2006 à 11:37
Raxius
5 nov. 2005 à 20:54
7 oct. 2005 à 22:56
If App.PrevInstance Then
msgbox " LE PROGRAMME EST DEJA OUVERTE "
end
End If
10 sept. 2005 à 12:57
Je me souviens plus exactement de l'orthographe...
9 sept. 2005 à 13:20
5 août 2005 à 08:49
'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..)
15 juin 2005 à 13:53
le code regarde juste le dernier process. Par contre, c'est pas très dur a adapter
15 juin 2005 à 12:22
Je pense que ton application ne va pas démarrer.
1 mai 2005 à 09:40
1 mai 2005 à 01:48
Dim i as Integer
Dim xxx(20) ' en admettant que tu ne connaisses pas 20
For i = 0 to xxx.GetUpperBound(0)
Next
1 mai 2005 à 01:44
1 mai 2005 à 00:51
Merci !
C'est quoi l'inverse de ubounds pour avoir le premier element d'une collection ?!
29 avril 2005 à 11:46
29 avril 2005 à 00:17
28 avril 2005 à 23:51
Merci d'avance !
28 avril 2005 à 00:11
If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
MsgBox("Application deja ouverte !", MsgBoxStyle.Critical, "Message à l'usager")
End
End If
27 avril 2005 à 13:36
On peut pas mettre
If x > 0 Then
en VB.NET ? Pas pratique...
26 avril 2005 à 22:43