Содержание материала

Для примера создадим два приложения. В одном из них добавим следующий код:

 

Code:

const

CD_CMD_SETCAPTION = 1;

// определяем команду для передачи данных

 

procedure TForm1.Button1Click(Sender: TObject);

var

CDS: TCopyDataStruct;

begin

// задаем команду

CDS.dwData := CD_CMD_SETCAPTION;

// задаем длину передаваемых данных

CDS.cbData := Length(Edit1.Text) + 1;

// выделяем память под буфер для передачи данных

GetMem(CDS.lpData, CDS.cbData);

try

   // копируем данные в буфер

   StrPCopy(CDS.lpData, Edit1.Text);

   // посылаем сообщение в окно с заголовком «CopyData Reciever»

   SendMessage(FindWindow(NIL, 'CopyData Reciever'),

     WM_COPYDATA, Handle, Integer(@CDS));

finally

   // освобождаем буфер

   FreeMem(CDS.lpData, CDS.cbData);

end;

end;

 

 

В принимающем данные приложении создадим окно с заголовком «CopyData Reciever» и добавим в форму следующий код:

Code:

const

CD_CMD_SETCAPTION = 1;

 

type

TForm1 = class(TForm)

private

   // создаем обработчик WM_COPYDATA

   procedure WMCopyData(var M: TWMCopyData); message WM_COPYDATA;

end;

 

 

procedure TForm1.WMCopyData(var M: TWMCopyData);

begin

// Если команда – установить заголовок

if M.CopyDataStruct.dwData = CD_CMD_SETCAPTION then begin

   // Берем текст заголовка из данных

   Caption := PChar(M.CopyDataStruct.lpData);

   M.Result := 1;

end else

   M.Result := 0;

end;

  

При нажатии кнопки Button1 в первой форме заголовок второй станет равен тексту компонента Edit1. Отмечу, что сообщение WM_COPYDATA может быть послано только при помощи функции SendMessage. Если приложение, получающее данные, должно использовать их после возврата из обработчика WM_COPYDATA, оно должно скопировать данные в локальный буфер.

 

Тенцер А. Л.

ICQ UIN 15925834

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить