String küldése másik applikációba

Egy szöveget küldünk át másik applikációba

procedure TForm1.Button1Click(Sender: TObject);
var
D: TCopyDataStruct;
t: PChar;
s:string;
begin
s:='Biztosithatom önöket arról, hogy én vagyok, és én leszek a kisgazda párt elnöke';
t := StrAlloc(length(s));
try
t := StrPLCopy(t, s, Length(s));
D.cbData := Length(t) + 1;
D.lpData := t;
SendMessage(masik applikáció HANDLE-ja, WM_COPYDATA, 0, integer(@D));
finally
StrDispose(t);
end;
end;

Masik applikációban:

private
procedure WMCopyData(var msg: TMessage); message WM_COPYDATA;
...
procedure Tform1.WMCopyData;
var
D: PCopyDataStruct;
P: PChar;
begin
D := PCopyDataStruct(msg.LParam);
P := PChar(D.lpData);
form1.caption:=p;
end;