全局 SendMessage(HWND_BROADCAST ,WM_USER + 101,101,0),WindowProc接收不到,该怎么写?

bphantom 2007-08-07 01:11:58
我在程序a中写:
procedure MyWndProc(var Msg: TMessage);

procedure TForm1.MyWndProc(var Msg: TMessage);
begin
if (msg.Msg=WM_USER + 101) then
begin
showmessage('user101');
end
else
begin
inherited WndProc(msg);
//oldproc(msg);
end;

end;

WindowProc:=MyWndProc;

当点按钮发送:
SendMessage(self.Handle ,WM_USER + 101,101,0);
那肯定没问题,但SendMessage(HWND_BROADCAST,WM_USER + 101,101,0);是不行的,因为WindowProc:=MyWndProc;是本窗口的,我想HWND_BROADCAST时,也能接收到,WindowProc:=MyWndProc要改为什么??
其实我的目的是程序a发送消息SendMessage(HWND_BROADCAST,WM_USER + 101,101,0);独立的另一程序b来接收消息的,所以我用HWND_BROADCAST来在a程序中做测试,用application.OnMessage=我没试验成功呀,onmessage好像对键盘值到是起作用的。请高手帮忙。
...全文
624 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightyang 2007-08-10
  • 打赏
  • 举报
回复
WM_USER + 101
是你自已定义的消息

发到另外的程序当然不行~~
只有先把这个消息注册以后
程序B才能识别

var

msg:integer;

msg:=RegisterWindowMessage(WM_USER + 101);
budded 2007-08-10
  • 打赏
  • 举报
回复
RegisterWindowMessage
jadeluo 2007-08-07
  • 打赏
  • 举报
回复
需要使用RegisterWindowMessage来注册那个消息, 给你一个例子:

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
iMsg : Integer;
OldProc : TWndMethod;
procedure MyMessage(var Msg: TMessage);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
OldProc := Self.WindowProc;
Self.WindowProc := MyMessage;
iMsg := RegisterWindowMessage('MyMessage');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Self.WindowProc := OldProc;
end;

procedure TForm1.MyMessage(var Msg: TMessage);
begin
if msg.Msg = iMsg then
Memo1.Lines.Add('!!!!')
else
OldProc(Msg);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage (HWND_BROADCAST, iMsg, 0, 0);
end;

end.

bphantom 2007-08-07
  • 打赏
  • 举报
回复
简单点就是我a程序向window发出一个消息wm_user+101,
b程序捕获来自window的消息wm_user+101
“那就把上面那段代码写到b中就行了啊~”不行的。
sdsasdsaj 2007-08-07
  • 打赏
  • 举报
回复
不明白你的意思,是不是要a给b发消息,让b接受,
那就把上面那段代码写到b中就行了啊~

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧