Porgramme <=> programme !?

Programmation d'applications complexes
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Porgramme <=> programme !?

Message par Mytic »

Bonjour…
Je voudrai savoir comment procéder pour faire communiquer deux programmes entre eux ?
Je m’explique !
J’ai remarqué qu’on ne pouvez pas faire une liaison à deux sens comme ça :
Porgramme <=> programme
Mais que comme ça :
Porgramme => programme

Même avec les variables d’environnement, ça ne marche pas !
Le programme x qui exécute le programme y peut envoyer des données à y , mais pas le contraire.
Je pense que j’étais claire ?
:roll: :?: :!:
Mwoua
Messages : 44
Inscription : lun. 24/oct./2005 10:28

Message par Mwoua »

2 idées, peut-être un peut fafelues :roll:

- Si tu n'as pas beaucoup de données à faire passer, clef dans la base de registre (:?:)
- Sinon, tu peux les faire communiquer en utilisant les fonctions de network. Ça t'oblige à ouvrir un port de communication, mais ça devrait marcher...
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

C'est possible, jette un oeil là : http://www.purebasic.fr/english/viewtop ... 00++launch
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Merci…
@Mwoua :
Original , mais :
Le registre c’est pas très rapide et risquer !
Le network : trop de ressources + parfeu !
:?
@Droopy :
Trop cool , la communication via GadgetID.
:D
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Essaye avec ça :

Code : Tout sélectionner

; Prog1 

; ***************************************************************************** 

Global *data_in.COPYDATASTRUCT 
Global data_out.COPYDATASTRUCT 

Procedure WndProc(hwnd, uMsg, wParam, lParam) 
  
  If uMsg = #WM_COPYDATA 
    *data_in = lParam 
    temp.s = PeekS(*data_in\lpData) 
    SetGadgetText(0, temp) 
    ProcedureReturn #True 
  EndIf 
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 


If OpenWindow(0, #PB_Ignore, #PB_Ignore, 300, 200, "Prog1") 
  
  CreateGadgetList(WindowID(0)) 
  StringGadget(0,0,0,300,24,"Test") 
  ButtonGadget(1,0,28,300,24, "Send") 
  
  SetWindowCallback(@WndProc()) 
  Repeat 
    event = WaitWindowEvent() 
    Select event 
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case 1 
            hwnd = FindWindow_(0, "Prog2") 
            If hwnd 
              temp.s = GetGadgetText(0) 
              data_out\cbData = Len(temp) + 1 ; Nullbyte 
              data_out\lpData = @temp ; Zeiger auf Daten 
              SendMessage_(hwnd, #WM_COPYDATA, WindowID(0), data_out) 
            EndIf  
        EndSelect 
    EndSelect 
  Until event = #PB_Event_CloseWindow 
  
EndIf 
et

Code : Tout sélectionner

; Prog2 

; ***************************************************************************** 

Global *data_in.COPYDATASTRUCT 
Global data_out.COPYDATASTRUCT 

Procedure WndProc(hwnd, uMsg, wParam, lParam) 
  
  If uMsg = #WM_COPYDATA 
    *data_in = lParam 
    temp.s = PeekS(*data_in\lpData) 
    SetGadgetText(0, temp) 
    ProcedureReturn #True 
  EndIf 
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 


If OpenWindow(0, #PB_Ignore, #PB_Ignore, 300, 200, "Prog2") 
  
  CreateGadgetList(WindowID(0)) 
  StringGadget(0,0,0,300,24,"Test") 
  ButtonGadget(1,0,28,300,24, "Send") 
  
  SetWindowCallback(@WndProc()) 
  Repeat 
    event = WaitWindowEvent() 
    Select event 
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case 1 
            hwnd = FindWindow_(0, "Prog1") 
            If hwnd 
              temp.s = GetGadgetText(0) 
              data_out\cbData = Len(temp) + 1 ; Nullbyte 
              data_out\lpData = @temp 
              SendMessage_(hwnd, #WM_COPYDATA, WindowID(0), data_out) 
            EndIf  
        EndSelect 
    EndSelect 
  Until event = #PB_Event_CloseWindow 
  
EndIf 
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Merci pour votre aide :)
Répondre