• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi消息的广播方式(先RegisterWindowMessage,后SendMessageHWND_BROADCAST,最后 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

///////消息广播只能将消息传递到接收消息的主程序中,MDIChild窗体不能接收到广播消息;/////////

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
    Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
public
    procedure WndProc(var message:TMessage);override;
end;

var
    Form1: TForm1;
    MyMessage: DWORD;

implementation
{$R *.dfm}
{ TForm1 }

procedure TForm1.WndProc(var message: TMessage); // 可处理自定义消息
begin
    if message.Msg=MyMessage then // 第3步:重载Windows消息处理过程,处理接收到的MyMessage消息;
    ShowMessage(FloatToStr(Handle)+ 'MyMessage'); // 每次程序关闭后再启动,句柄值不一样。但不关闭就是同一个值
    inherited WndProc(Message); // 其实没什么用,但是屏蔽后出错
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    SendMessage(HWND_BROADCAST,MyMessage,0,0); //第2步:发送MyMessage消息,相当于广播;而且两个程序都执行了的话,一个处理完另一个才能开始处理。可以试试PostMessage的区别
end;

/////////预先注册好Windows消息;第一种方法////////////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
    //同一字符串,如'MyMessageMe' 在不同的程序中调用RegisterWindowMessage注册消息时,返回的MyMessage结果是一样的。这样为在不同程序之间广播消息提供了可能。即不同程序注册消息时,必须注册相同的注符串。
    MyMessage:=RegisterWindowMessage('MyMessageMe'); //第1步:注册Windows消息,重点在于返回的值MyMessage
end;

/////////预先注册好Windows消息;第二种方法////////////////////
{ initialization
MyMessage:=RegisterWindowMessage('MyMessageMe');
}


//BroadcastSystemMessage,可以在进程之间广播消息;
procedure TForm1.SendSMSMessage;
var
    SMSMessage:Cardinal;
    recipt:Cardinal;
begin
    SMSMessage:=RegisterWindowMessage('SendSMSMessage');
    recipt:=BSM_ALLDESKTOPS; //所以桌面程序都可以接收
    BroadcastSystemMessage(BSF_POSTMESSAGE,@recipt,SMSMessage,0,0);
end;

end.

参考:http://www.cnblogs.com/key-ok/p/3417727.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[转]matlab语言中的assert断言函数发布时间:2022-07-18
下一篇:
制作nc文件(Matlab)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap