打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Delphi消息的广播方式(先RegisterWindowMessage,后SendMessage HWND
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = 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消息,重点在于返回的值MyMessageend;/////////预先注册好Windows消息;第二种方法////////////////////{ initializationMyMessage:=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.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Delphi 三种气泡提示效果
delphi中Message消息的使用方法
窗口显示和关闭的时候出现动画效果
如何在自己的系统中打开并关闭外部程序
执行 Application.Terminate 后, OnDestroy 中的代码还会执...
在线程中如何接收通过PostThreadMessage()发送的消息? - 程序开发常见问...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服