Передача данных между двумя приложениями
Для тестирования, поместите на форму 2 компонента TLabel и TButton, например, так:

Вот полный код для реализации этого:
Определить тип структуры сообщения, как здесь:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
{ Определяем тип структуры сообщения }
type
TWMMYMessage = record
Msg: Cardinal; // (ID сообщения )
Handle: HWND; // ( wParam , Handle отправителя )
Info: LongInt; // ( lParam , указатель на данные )
Result: LongInt;
end;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
// переопределяем метод DefaultHandler
procedure DefaultHandler(var Message); override;
procedure WMMYMessage(var Msg: TWMMYMessage);
end;
var
Form1: TForm1;
{ Объявляем переменную сообщения }
WM_OURMESSAGE: DWORD;
implementation
{$R *.dfm}
{ Реализация наших методов DefaultHandler }
procedure TForm1.DefaultHandler(var Message);
var
ee: TWMMYMessage;
begin
with TMessage(Message) do
begin
if (Msg = WM_OURMESSAGE) then
begin
ee.Msg:= Msg;
ee.Handle:= WParam;
ee.Info:= LParam;
// проверяем, если сообщение не от нас
if ee.Handle <> Handle then
WMMYMessage(ee);
end
else
inherited DefaultHandler(Message);
end;
end;
procedure TForm1.WMMYMessage(var Msg: TWMMYMessage);
begin
Label1.Caption:= Format('Дескриптор формы другого приложения : %d', [Msg.Handle]);
Label2.Caption:= Format('Ширина формы другого приложения : %d', [Msg.Info]);
end;
{ Добавляем сообщение }
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(HWND_BROADCAST, WM_OURMESSAGE, Handle, Width);
end;
{ Регистрируем наше сообщение }
initialization
WM_OURMESSAGE:= RegisterWindowMessage('Our broadcast message');
Компилируем и запускаем две копии приложения и проверяем все функциональные возможности.

Комментарии