如何将Windows消息发送到我的应用程序中不是MainForm的表单?使用下面的代码给我一个访问冲突。
procedure TMainForm.SendMessageToAnotherForm;
begin
SendMessage(MyForm.Handle,WM_MY_MESSAGE,0,0);
end;
MyForm已经创建,是最顶层的窗口。
编辑:我也尝试了PostMessage但我收到了相同的访问冲突,我很肯定WM_MY_MESSAGE是有效的,因为我用它来与其他地方的MainForm进行通信。
答案 0 :(得分:8)
使用上述代码获取访问冲突的最可能原因是MyForm = nil或野指针。使用SendMessage调用在代码行上设置断点并检查它。如果MyForm是有效的引用,则MyForm中的消息处理会导致访问冲突。
答案 1 :(得分:2)
您是否知道SendMessage
等待消息处理完毕?这意味着目标窗口的消息队列必须能够处理消息。
如果您在事件处理程序(如ButtonClick
)中调用此方法,则最好使用PostMessage
。