WM_COPYDATA
WM_COPYDATA
wParam = (WPARAM) (HWND) hwnd; // handle of sending window
lParam = (LPARAM) (PCOPYDATASTRUCT) pcds; // pointer to structure with data
发送端:
procedure TMainForm.btnClick(Sender: TObject);
var
p: PRec;
cd: TCopyDataStruct;
begin
h := FindWindow('TClientForm', nil);
if h <> 0 then
begin
GetMem(p, SizeOf(TRec));
cd.cbData := SizeOf(TRec);
cd.lpData := p;
SendMessage(h, WM_COPYDATA, Handle, Integer(@cd));
FreeMem(p);
end;
end;
注:必须使用SendMessage不能用PostMessage
接收端:
procedure OnCopyData(var msg: TWMCopyData); message WM_COPYDATA;
procedure TClientForm.OnCopyData(var msg: TWMCopyData);
var p: PRec;
begin
p := msg.CopyDataStruct.lpData;
end;
评论