unit StringSender;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TDataSender = class(TForm)
    StringEdit: TEdit;
    bnSend: TButton;
    procedure bnSendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataSender: TDataSender;
const
   CMD_SETLABELTEXT = 1;  // Задаем ID команды


implementation

{$R *.dfm}

procedure TDataSender.bnSendClick(Sender: TObject);
var
   CDS: TCopyDataStruct;
 begin
   // Устанавливаем тип команды
   CDS.dwData := CMD_SETLABELTEXT;
   // Устанавливаем длину передаваемых данных
   CDS.cbData := Length(StringEdit.Text) + 1;
   // Выделяем память буфера для передачи данных
   GetMem(CDS.lpData, CDS.cbData);
   try
     // копируем данные в буфер
     StrPCopy(CDS.lpData, StringEdit.Text);
     // Отсылаем сообщение в окно с заголовком «StringReciever»
     SendMessage(FindWindow(NIL, 'StringReciever'),
       WM_COPYDATA, Handle, Integer(@CDS));
   finally
     // Высвобождаем буфер
     FreeMem(CDS.lpData, CDS.cbData);
   end;
 end;  

end.
