http://community.csdn.net/Expert/topic/3969/3969338.xml?temp=.1657068想在两个exe之间传送消息,第一次Tfrm_shuaka发送,Tfrm_messege接受成功;第二次Tfrm_messege发送,Tfrm_shuaka接受不成功!代码如下:
//Tfrm_shuaka中:
procedure Tfrm_shuaka.WMSend();
var
  Data: TCopyDataStruct;
  Buffer: PChar;
  BufferSize: Integer;
begin
     BufferSize := Self.Edit1.GetTextLen + SizeOf(Char);
  Buffer := AllocMem(BufferSize);
  try
     Self.Edit1.GetTextBuf(Buffer, BufferSize);
    Data.cbData := BufferSize;
    Data.lpData := Buffer;
    SendMessage(FindWindow(nil, 'frm_messege'), WM_COPYDATA, Handle, Longint(@Data));
  finally
    FreeMem(Buffer);
  end;
end;
///
//接受
  procedure Tfrm_shuaka.WndProc(var Message: TMessage);
begin
  if Message.Msg = WM_COPYDATA then Self.WMCopyData(Message)
  else inherited WndProc(Message);
end;procedure Tfrm_shuaka.WMCopyData(var Message: TMessage);
begin  Self.Edit1.SetTextBuf(PChar(PCopyDataStruct(Message.LParam)^.lpData));
end;
///
Tfrm_messege中:
//接受
  procedure Tfrm_messege.WndProc(var Message: TMessage);
begin
  if Message.Msg = WM_COPYDATA then Self.WMCopyData(Message)
  else inherited WndProc(Message);
end;
///Edit1
procedure Tfrm_messege.WMCopyData(var Message: TMessage);
begin
  //Caption :=  'Get Data from Form1' ;
  Self.Edit1.SetTextBuf(PChar(PCopyDataStruct(Message.LParam)^.lpData));
end;
// 发送
procedure Tfrm_messege.WMSend();
var
  t_Data: TCopyDataStruct;
  t_Buffer: PChar;
  t_BufferSize: Integer;
begin
  //BufferSize := Self.MemoData.GetTextLen + SizeOf(Char); //bsSkinDBEdit1
   t_BufferSize := Self.Edit2.GetTextLen + SizeOf(Char);
  t_Buffer := AllocMem(t_BufferSize);
  try
    //Self.MemoData.GetTextBuf(Buffer, BufferSize);
    Self.Edit2.GetTextBuf(t_Buffer, t_BufferSize);
    t_Data.cbData := t_BufferSize;
    t_Data.lpData := t_Buffer;
    SendMessage(FindWindow(nil, 'frm_shuaka'), WM_COPYDATA, Handle, Longint(@t_Data));
  finally
    FreeMem(t_Buffer);
  end;
end;