【发布时间】:2018-04-16 17:15:00
【问题描述】:
我创建了一个类,当它被释放时,它应该向整个应用程序传播一条自定义消息。
我用PostMessage 完成了它,它几乎没有错误
PostMessage(Application.Handle, UM_MYMESSAGE, 0, 0);
然后我意识到它应该是同步的 - 通过SendMessage。
SendMessage(Application.Handle, UM_MYMESSAGE, 0, 0);
在我的表单上,我使用TApplicationEvents 组件处理消息,但只是将SendMessage 切换到PostMessage 并没有让它处理消息
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.message = UM_MYMESSAGE then
begin
ShowMessage('Ok');
Handled := True;
end;
end;
如果我通过了表单句柄但不能使用 Application.Handle...
我做错了什么?
【问题讨论】:
-
如您所见,ApplicationEvents 只能公开发布的消息。您最好在 OnMessage 上按 F1 来确认。
-
谢谢你的光.. 你能帮我看看如何处理这个消息吗?
-
我不明白整个应用程序是什么意思,所以很难评论。也许你可以使用“广播”,或者安装一个钩子,或者循环表单——或者更详细地解释你的问题。
-
我认为您通过应用程序窗口句柄甚至通过消息强制执行此操作是错误的。直接调用函数即可。
-
我不知道你在说什么
标签: delphi sendmessage postmessage