If (UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0) = True Then MsgBox("Application deja ouverte !") End End If
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 !
If (x > 0) = True ThenOn peut pas mettreIf x > 0 Thenen VB.NET ? Pas pratique...
juste ça ça aurait été assezIf UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then MsgBox("Application deja ouverte !", MsgBoxStyle.Critical, "Message à l'usager") End End If
Que signifie UBounds comme fonction ?!Merci d'avance !
C'est l'indice du dernier élément d'un tableau de données
code sympa MERCI
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 ?!
Eh bien le premier c'est LBound pour LowerBound et le dernier UBound pour UpperBound.
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 IntegerDim xxx(20) ' en admettant que tu ne connaisses pas 20For i = 0 to xxx.GetUpperBound(0)Next
En effet je comprend tout a fait ! La boucle !
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.
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 instancele code regarde juste le dernier process. Par contre, c'est pas très dur a adapter
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 !") EndEnd IfEt à 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..)
En vb6 sa donne quoi ?
Un truc genre App.PrevInstance te compte le nombre d'application déjà ouvertesJe me souviens plus exactement de l'orthographe...
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 " endEnd If
Pas mal. Je viens de le rajouter dans mon code
Vraiment sympa le code, merciRaxius
dans quel cas on utilise la boucle for each in next i?merci de repondre, je débute dans VB .netRaxius
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 quelconquePar 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 simpleT'as regardé dans la MSDN ?
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
pas mall merci les gars
oui mais comment fait-on alors pour activer l'autre instance avec des paramètres?
J'ai pas bien compris la question.
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.
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 598 692 membres 694 nouveaux aujourd'hui 15 441 membres club