How to make a child form listen to broadcasted messages

11 篇文章 0 订阅
本文介绍了一种使用Windows消息传递机制让一个应用程序(发送者)向另一个应用程序(接收者)发送消息的方法。具体实现中,发送者通过编辑框输入消息,并通过按钮触发发送过程。消息通过`WM_COPYDATA`发送到接收窗口,后者展示接收到的消息。
摘要由CSDN通过智能技术生成

How to make a child form listen to broadcasted messages


In the sender add a procedure such as:

procedure TForm1.Button2Click(Sender: TObject);
var
  Receiver: THandle;
  buffer: array[0..1023] of char;
  Data: TCopyDataStruct;
begin
  Receiver := FindWindow('TReceiverForm', nil);
  if Receiver > 0 then
  begin
    StrPLCopy(@buffer, Edit1.Text, 1024); // Assumes message in Editbox
    Data.dwData := 0;
    Data.cbData := 1024;
    Data.lpData := @buffer;
    SendMessage(Receiver, WM_COPYDATA, 0, LongInt(@Data));
  end;
end;In the receiver add these:

type
  TForm1 = class(TForm)
    { ... }
  private
    { ... }
  protected
    procedure WmCopyData(var Msg: TMessage); message WM_COPYDATA;
  public
    { ... }
  end;

procedure TForm1.WmCopyData(var Msg: TMessage);
begin
  ShowMessage(
    'This message sent:' + #13 +
    string(PChar(PCopyDataStruct(Msg.LParam)^.lpData))
  );
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值