Salut,
utilise cette fonction de Renfield (que tu peux retrouver
ICI) :

Public Function IsAlreadyRunning() As Boolean
Dim hMap As Long
Dim pMem As Long
Dim hPid As Long
'# Nous tentons ici d'acceder au mappage (précedemment créé ?)
hMap = OpenFileMapping(FILE_MAP_READ, 0, App.Title)
If hMap <> 0 Then
'# L'application est déjà lancée.
pMem = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)
If pMem <> 0 Then
'# On récupère le handle vers la précédente fenêtre
CopyMemory hPid, ByVal pMem, 4
If hPid Then
On Error Resume Next
'# On active l'instance précedente
AppActivate hPid
On Error GoTo 0
End If
UnmapViewOfFile pMem
End If
'# On libère le handle hmap
CloseHandle hMap
'# et on prévient l'appelant que l'application avait dejà été lancée.
IsAlreadyRunning = True
Else
'# Nous sommes dans la première instance de l'application.
'# Nous allons laisser une marque en mémoire, pour l'indiquer
hMap = CreateFileMapping(INVALID_HANDLE_VALUE, ByVal 0&, PAGE_READWRITE, 0, 4, App.Title)
If hMap <> 0 Then
'# On ouvre le 'fichier' en écriture
pMem = MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0)
If pMem <> 0 Then
'# On y écrit le process courant
CopyMemory ByVal pMem, GetCurrentProcessId(), 4
UnmapViewOfFile pMem
End If
'# Pas de CloseHandle hMap ici, sous peine de détruire le mappage lui-même...
End If
End If
End Function
' Remarque :
' L'avantage par rapport a l'instruction App.PrevInstance de VB, ' c'est qu'ici, l'éventuelle première instance sera réactivée.
--Mortalino-- Colorisation automatique
@++
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>