项目中遇到不同进程之间的字符串传递,用到TCopyDataStruct结构:
发送端:
procedure TForm1.Button2Click(Sender: TObject);
var
h: HWND;
Size: Integer;
CopyDataStruct: TCopyDataStruct;
begin
h := FindWindow(nil, 'Formzztool'); { 按标题查找目标窗口 }
if h > 0 then
begin
Size := Length(Edit1.Text) + 2; { 多出的两个字节用于后面的 #0 }
CopyDataStruct.lpData := PChar(Edit1.Text + #0); { 要发送的字符串, #0 表示 PChar 结束}
CopyDataStruct.dwData := WM_COPYDATA; { 指定消息类型 }
CopyDataStruct.cbData := Size; { 指定要发送的数据的大小 }
SendMessage(h, WM_COPYDATA, 0, Integer(@CopyDataStruct)); { 发送 }
end;
end;
接收端:
定义 :
procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
procedure TFormzztool.WMCopyData(var Message: TWMCopyData);
begin
Memo1.Lines.Add(PChar(Message.CopyDataStruct.lpData));
end;