cs_FPatrick
Messages postés122Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention 8 août 20141 26 oct. 2006 à 18:12
Bonjour,
Pour la première partie, il existe en vb6 app.previnstance qui te dira s'il existe déjà une instance de ton application (attention a tester en mode compilation seulement).
Pour la deuxième partie, tu peux par exemple une liaison dde entre tes applications mais je pense qu'il y a beaucoup mieux que cela.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 oct. 2006 à 18:17
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
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 29 oct. 2006 à 22:15
Pour la seconde partie de la question, concernant le passage des paramètres...
il faut établir une communication entre les deux instances,
envoyer les parametres de l'instance 2 a l'instance 1
activer l'instance 1
fermer l'instance 2
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 29 oct. 2006 à 22:25
par le registre.....
admettons...
mais faut que tu puisse prévenir ton instance 1 qu'elle doit effectuer une action ...
quelle doit réagir, aux paramètres recus (et ecris dans le registre) par l'instance 2