Delphi訊息的廣播方式(先RegisterWindowMessage,後SendMessage HWND_BROADCAST,最後改寫接收視窗的WndProc)

來源:互聯網
上載者:User

標籤:

///////訊息廣播只能將訊息傳遞到接收訊息的主程式中,MDIChild表單不能接收到廣播訊息;/////////

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.

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

Delphi訊息的廣播方式(先RegisterWindowMessage,後SendMessage HWND_BROADCAST,最後改寫接收視窗的WndProc)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.