Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment empêcher qu'une appli soit lancée deux fois ?

4 réponses
Avatar
Bull
Bonjour,

J'ai créé une appli windows en VB.net. Mon problème est qu'il est possible
après installation, de la lancer autant de fois que l'on veut.

Comment fait-on pour qu'il ne soit possible de la lancer qu'une fois ?

J'ai eu des échos sur l'utilisation de WMI afin de lister les processus mais
je ne sais pas comment l'utiliser et est-ce vraiment la meilleure solution ?

Merci
Bull

4 réponses

Avatar
Dominic Pelletier
Bonjour Bull,

Selon moi , le WMI sera ta véritable sollution, voila un site qui pourra
te donner un coup de main dans ce que tu veux faire avec le wmi.

http://visualbasic.ittoolbox.com/code/d.asp?d72&a=s

Dominic
"Bull" wrote in message
news:
Bonjour,

J'ai créé une appli windows en VB.net. Mon problème est qu'il est possible
après installation, de la lancer autant de fois que l'on veut.

Comment fait-on pour qu'il ne soit possible de la lancer qu'une fois ?

J'ai eu des échos sur l'utilisation de WMI afin de lister les processus


mais
je ne sais pas comment l'utiliser et est-ce vraiment la meilleure solution


?

Merci
Bull




Avatar
Patrick Philippot
Bull wrote:
J'ai eu des échos sur l'utilisation de WMI afin de lister les
processus mais je ne sais pas comment l'utiliser et est-ce vraiment
la meilleure solution ?



WMI c'et très bien mais ça ne va pas fonctionner partout et c'est un peu
lourd. La solution la plus fréquemment adoptée est l'utilisation d'un
mutex.

if Not OpenMutex(...., <nom_de_mutex_unique>) then
CreateMutex(..., <nom_de_mutex_unique>)
else
Exit

En clair, l'application essaie d'ouvrir un mutex ayant un nom unique à
l'application. Si elle réussit, c'est que le mutex existe déjà (donc
qu'une instance de l'application est déjà en train de tourner puique le
mutex a été créé). Dans ce cas, elle se termine. Sinon, elle crée le
mutex et continue son boulot normalement.

--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Laurent B
Salut,
ça aussi ça tourne :

If UBound(Diagnostics.Process.GetProcessesByName
("Nom_Appli_à_Tester")) > 0 Then
End
End If

A ++

////////////////////////////////////////////////////////
-----Message d'origine-----
Bonjour,

J'ai créé une appli windows en VB.net. Mon problème est


qu'il est possible
après installation, de la lancer autant de fois que l'on


veut.

Comment fait-on pour qu'il ne soit possible de la lancer


qu'une fois ?

J'ai eu des échos sur l'utilisation de WMI afin de


lister les processus mais
je ne sais pas comment l'utiliser et est-ce vraiment la


meilleure solution ?

Merci
Bull


.



Avatar
Bull
Bonjour et merci pour vos réponses. En fait j'ai trouvé encore une autre
solution :

a.. Public Sub ProcessExist()
Dim Process As New ManagementObjectSearcher("SELECT * FROM Win32_Process")
Dim info As ManagementObject
Dim stock As String
Dim vrs As Integer
For Each info In Process.Get
stock = info("Caption").ToString()
If stock = "MonAppli.exe" Then
vrs = vrs + 1
If vrs > 1 Then
MsgBox("Appli deja lancée")
End
End If
End If
Next
End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
ProcessExist()
End Sub
End Class


J'ai testé, ça marche nickel :)
Merci encore
@+
Bull