发送端
procedure TForm1.Button1Click(Sender: TObject);
var
ds: TCopyDataStruct;
hd: THandle;
begin
ds.cbData := Length (Edit1.Text) + 1;
GetMem (ds.lpData, ds.cbData ); //为传递的数据区分配内存
StrCopy (ds.lpData, PChar (Edit1.Text));
Hd := FindWindow (nil, 'Form2'); // 获得接受窗口的句柄,Form2为该窗体的Caption属性
if Hd <> 0 then
SendMessage (Hd, WM_COPYDATA, Handle, Cardinal(@ds)) // 发送WM_COPYDATA消息
else
ShowMessage ('目标窗口没找到!');
FreeMem (ds.lpData); //释放资源
end;
{接收端}
首先要在interface段定义以下消息处理函数
procedure Mymessage(var t:TWmCopyData);message WM_COPYDATA;
implements
procedure TForm1.Mymessage(var t:TWmCopyData);
begin
Edit1.text:=StrPas(t.CopyDataStruct^.lpData);//接受数据并显示。
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ds: TCopyDataStruct;
hd: THandle;
begin
ds.cbData := Length (Edit1.Text) + 1;
GetMem (ds.lpData, ds.cbData ); //为传递的数据区分配内存
StrCopy (ds.lpData, PChar (Edit1.Text));
Hd := FindWindow (nil, 'Form2'); // 获得接受窗口的句柄,Form2为该窗体的Caption属性
if Hd <> 0 then
SendMessage (Hd, WM_COPYDATA, Handle, Cardinal(@ds)) // 发送WM_COPYDATA消息
else
ShowMessage ('目标窗口没找到!');
FreeMem (ds.lpData); //释放资源
end;
{接收端}
首先要在interface段定义以下消息处理函数
procedure Mymessage(var t:TWmCopyData);message WM_COPYDATA;
implements
procedure TForm1.Mymessage(var t:TWmCopyData);
begin
Edit1.text:=StrPas(t.CopyDataStruct^.lpData);//接受数据并显示。
end;