oblind

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;


评论