Comunication entre 2 programme...
Comunication entre 2 programme...
Salut
voila j'aurais vouslu savoir si il etait possible d'exhanger des info entre 2 programme ... si oui coment ?
A+
scaraber
voila j'aurais vouslu savoir si il etait possible d'exhanger des info entre 2 programme ... si oui coment ?
A+
scaraber
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Tu peux partager une zone mémoire si tu veux. Voici un code tiré d'un programme de Nico :
Il suffit de lancer deux instances du programme et le buffer '*partage' sera commun aux deux.
Code : Tout sélectionner
MemoirePartagee=CreateFileMapping_($FFFFFFFF,#Null, #PAGE_READWRITE, 0, 1, "Mapping")
*partage=MapViewOfFile_(MemoirePartagee, #FILE_MAP_WRITE, 0, 0, 0)
Dernière modification par Cls le mar. 11/déc./2007 17:33, modifié 1 fois.
Cls a oublier de preciser que ce code etait de Nico
du moins , c'est le premier a en avoir parlé !!
voici le code de Nico
du moins , c'est le premier a en avoir parlé !!

voici le code de Nico
Code : Tout sélectionner
; De Nico
; Petit exemple simple de démonstration de partage de mémoire
; CreatefileMapping: retourne le Handle de l'objet mémoire identifié par le nom "Mapping"
; si celui-ci n'existe pas, il le crée
; MapViewOfFile: permet d'obtenir un pointeur d'accès sur cette zone mémoire.
; Tout processus souhaitant travaillé avec cette zone de mémoire doit appelé ces deux API
; à vous ensuite de gérer les processus afin qu'ils accèdent aux données de manière cohérente
; afin de s'assurer que les données aient été lues avant d'être modifiées
Enumeration
#Window
#StringGadget
#BOUTON
EndEnumeration
Structure Partage
valeur1.l
valeur2.l
valeur3.l
valeur4.l
EndStructure
Global *VueDonnees.Partage
If OpenWindow(#Window,0,0,160,160,"Mapping Envoie",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#Window))
StringGadget(#StringGadget,10, 10,100,20,"123456789")
ButtonGadget(#BOUTON, 10, 90, 100, 20, "Envoyer")
MemoirePartagee=CreatefileMapping_($FFFFFFFF,#Null, #PAGE_READWRITE, 0, SizeOf(Partage),"Mapping")
*VueDonnees=MapViewOfFile_(MemoirePartagee, #FILE_MAP_WRITE, 0, 0, 0)
Repeat
EventID.l=WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case #BOUTON
Donnee1$=GetGadgetText(#StringGadget)
Donnee1=Val(Donnee1$)
*VueDonnees\valeur1=Donnee1
;MessageRequester("Info",Str(*VueDonnees\valeur1))
EndSelect
Case #WM_CLOSE
Quit=1
EndSelect
Until Quit=1
EndIf
Autre exemple utilisant le message #WM_COPYDATA (comme le fait jaPBe) : http://www.purebasic.fr/english/viewtopic.php?t=29781