Page 1 sur 1

Comunication entre 2 programme...

Publié : lun. 10/avr./2006 14:34
par scaraber
Salut
voila j'aurais vouslu savoir si il etait possible d'exhanger des info entre 2 programme ... si oui coment ?
A+
scaraber

Publié : lun. 10/avr./2006 14:38
par wolfjeremy
Normalement je pense que tu peut quand tu a lancer le programme avec "RunProgram", va voir dans l'aide :wink:
Sinon tu peut faire avec serveur/client c'est pas mal... si se sont deux programme créer par toi même sa peut etre pratique.

Publié : lun. 10/avr./2006 14:58
par Dr. Dri
Oué tout est dans l'aide, c'est grâce à la V4 que j'ai pu faire ca sans aucune difficulté dans WinDestroyer.

Dri

Publié : mer. 12/avr./2006 14:16
par Cls
Tu peux partager une zone mémoire si tu veux. Voici un code tiré d'un programme de Nico :

Code : Tout sélectionner

MemoirePartagee=CreateFileMapping_($FFFFFFFF,#Null, #PAGE_READWRITE, 0, 1, "Mapping") 
*partage=MapViewOfFile_(MemoirePartagee, #FILE_MAP_WRITE, 0, 0, 0) 
Il suffit de lancer deux instances du programme et le buffer '*partage' sera commun aux deux.

Publié : mer. 12/avr./2006 17:26
par scaraber
ok merci bcp

Publié : mar. 11/déc./2007 12:10
par Backup
Cls a oublier de preciser que ce code etait de Nico
du moins , c'est le premier a en avoir parlé !! :D

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     


Publié : mar. 11/déc./2007 16:59
par gnozal
Autre exemple utilisant le message #WM_COPYDATA (comme le fait jaPBe) : http://www.purebasic.fr/english/viewtopic.php?t=29781

Publié : mar. 11/déc./2007 17:32
par Cls
Cls a oublier de preciser que ce code etait de Nico
du moins , c'est le premier a en avoir parlé !!
Oui absolument, je ne m'en souvenais plus. D'ailleurs, désolé de ne pas l'avoir cité à l'époque.

Cordialement,
Cls