Comunication entre 2 programme...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Comunication entre 2 programme...

Message par scaraber »

Salut
voila j'aurais vouslu savoir si il etait possible d'exhanger des info entre 2 programme ... si oui coment ?
A+
scaraber
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message 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.
Dernière modification par Cls le mar. 11/déc./2007 17:33, modifié 1 fois.
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message par scaraber »

ok merci bcp
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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     

gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Autre exemple utilisant le message #WM_COPYDATA (comme le fait jaPBe) : http://www.purebasic.fr/english/viewtopic.php?t=29781
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message 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
Répondre