Delphi里WM_COPYDATA消息传递的使用

首先是发送数据

procedure SendMsg(Msg: string);
var
  DS: TCopyDataStruct;
  hd: THandle;
begin
  Ds.cbData := Length(Msg) + 1;
  GetMem(Ds.lpData, Ds.cbData);
  StrCopy(ds.lpData, PChar(Msg));
  if Hd <> 0 then // 发送WM_COPYDATA消息
    SendMessage(Application.MainForm.Handle, WM_COPYDATA, Application.Handle, Cardinal(@ds));
  FreeMem(Ds.lpData); //释放资源
end;

然后是接收数据
procedure MyMessage(var t: TWMCopyData); message WM_COPYDATA;
procedure TMainFrame.MyMessage(var t: TWMCopyData);
var
  s: string;
begin //接受消息并显示。
  s := StrPas(t.CopyDataStruct^.lpData);
  if memLog.Lines.Count > 1000 then
    memLog.Clear;
  memLog.Lines.Add(s);
  AddLog(s);
end;





本文地址: http://www.xszlo.com/article/2012-12-08/7612.html,转发请保留这个地址,谢谢

你可能感兴趣的:(Delphi)