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