有关自定义消息广播 SendMessage(HWND_BROADCAST,WM_MyMsg,0,0);
来源:http://www.delphibbs.com/delphibbs/dispq.asp?lid=2322837
自定义一个消息 有一个程序发送给所有程序。。
所有的已运行的该程序可以相应这个消息。。。
但为什么我写的这段不好使啊。。。自己不能响应自己的消息???
初次尝试 请执教
分不够可以加
unit Unit1;
interface
uses Windows,Messages,Classes,Forms, StdCtrls, Controls;
const WM_MyMsg=Wm_User+100;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
public
Procedure MsgRev(var msg:TMessage);message WM_MyMsg;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(HWND_BROADCAST,WM_MyMsg,0,0);
end;
Procedure TForm1.MsgRev(var msg:TMessage);
Begin
Form1.Caption:='已运行了一个';
End;
end.
答案:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
MyMessage = 'MyMessage';
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FMyMsg: UINT;
protected
procedure WndProc(var Message: TMessage); override;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(HWND_BROADCAST, FMyMsg, 0, 0);
end;
procedure TForm1.WndProc(var Message: TMessage);
begin
inherited WndProc(Message);
if (FMyMsg > 0) and (Message.Msg = FMyMsg) then
Form1.Caption:='已运行了一个';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FMyMsg := RegisterWindowMessage(MyMessage);
end;
end.