const 
  MY_MESSAGE = WM_USER + 4242; 
  
type 
  TForm1 = class(TForm) 
    Button1: TButton; 
    
procedure Button1Click(Sender: TObject); 
    // Handler that receive the Message 
    
procedure MessageReceiver(var msg: TMessage); message MY_MESSAGE; 
  end; 
var 
  Form1: TForm1; 
implementation 
{$R *.DFM} 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  txt: string; 
begin 
  txt := 'Hello World'; 
  SendMessage(Form1.Handle, MY_MESSAGE, 0, DWORD(PChar(txt))); 
end; 

procedure TForm1.MessageReceiver(var msg: TMessage); 
var 
  txt: PChar; 
begin 
  txt := PChar(msg.lParam); 
  msg.Result := 1; 
  ShowMessage(txt); 
end; 
end.