自定义消息问题!消息熟悉者请进

onehawk 2005-08-30 10:07:20
const
MM_REBOOTFLASHCOM = WM_USER + 101;
主程序
procedure MMRebootFlashCom(var Msg: TMessage); message MM_REBOOTFLASHCOM;

procedure TmainForm.MMRebootFlashCom(var Msg: TMessage);
begin
mmo1.lines.add('接收到消息!');
//处理
//DefaultHandler(Msg)
end;

辅程序
procedure TForm1.btn1Click(Sender: TObject);
var
SvrHandle: HWND;
begin
msg.CmdType:=SC_MINIMIZE;
SvrHandle := FindWindow(nil, '主服务程序');
if SvrHandle <> 0 then
begin
if PostMessage(SvrHandle,MM_REBOOTFLASHCOM,0,0 ) then
ShowMessage('发送消息成功');
end
else
ShowMessage('查找不到主程序');
end;
为什么主程序接收不到自定义消息
如果辅程序发送了一个WM_CLOSE,主程序是可以接收到的
...全文
154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifei1900 2005-09-08
  • 打赏
  • 举报
回复
注意,
进程间通信时,如果向另外一个进程发送自定义的消息,必须在两个进程中都使用API:RegisterWindowMessage()来注册消息,否则,向另外一个进程发送消息时,不能收到。
aiirii 2005-09-08
  • 打赏
  • 举报
回复
>>SvrHandle := FindWindow(nil, '主服务程序');

你必须用 TmainForm 的 caption 来查找

要么,就要处理 Application的消息循环
XuDunYu 2005-09-08
  • 打赏
  • 举报
回复
你必须重定义wndproc
onehawk 2005-08-30
  • 打赏
  • 举报
回复
用sendmessage和postMessage都不能接收到.
用这两个发送WM_CLOSE都成功
主要是主程序接收自定义消息的问题
Larry1030 2005-08-30
  • 打赏
  • 举报
回复
楼上正解
hzwmjl 2005-08-30
  • 打赏
  • 举报
回复
欢迎加入Borland 一线程序员,参与群里技术讨论!欢迎女孩子,也欢迎男孩子参与技术讨论!群号15154361
ly_liuyang 2005-08-30
  • 打赏
  • 举报
回复
PostMessage与SendMessage区别在于前者马上返回,后者则需要消息处理完后才返回的

_____________________
http://lysoft.7u7.net
cncharles 2005-08-30
  • 打赏
  • 举报
回复
把PostMessage(SvrHandle,MM_REBOOTFLASHCOM,0,0 )
改成 SendMessage(SvrHandle,MM_REBOOTFLASHCOM,0,0 )
cncharles 2005-08-30
  • 打赏
  • 举报
回复
1.要确定TmainForm的Caption为主服务程序;
2.如果在同一程序中用SendMessage(TMainForm.handle,MM_REBOOTFLASHCOM,0,0 )

1,183

社区成员

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

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