DLL窗体之间发消息问题

fengemail8 2013-04-25 10:18:49
现有主窗体Main,
DLL包中有Form1,Form2

Main运行后半入DLL包,
现在我想Form2想发消息到Form1,但是收不到消息,发给主窗体Main可以收到
代码如下:
发Form1,这失败
H := FindWindow('Tform1',Nil);,,得到H=0
postMessage(H,MessageIDNo,1,1)

发Main,这正常
H := FindWindow('Tmain',Nil);
postMessage(H,MessageIDNo,1,1)

...全文
195 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
酣酣 2013-04-26
两个dll在被主程序加载时就实例化窗体! 然后再根据需要显示出来! 应该就可以互相发送消息了! 呵呵! 为啥不从特定的基类继承下来 或者实现相应的接口 这样调用起来不是更方便! 当然发消息也可以! 呵呵!
回复
sololie 2013-04-26
你都知道h=0了,就是没找到这个窗口的句柄,发送消息当然失败。 主窗口当然能找到句柄,除非程序关闭了才找不到。 跟dll通讯用其他方式,如内存映射、管道。。。
回复
酣酣 2013-04-25
H=0表示没有找到Tform1的实例 当然无法响应了! 可能Tform1根本没有创建对应的实例! 不过Tform1和Tform2同在一个dll下互相引用单元直接调用即可! 不明白为什么一定要发消息! 呵呵!
回复
fengemail8 2013-04-25
引用 1 楼 lengyuehui 的回复:
H=0表示没有找到Tform1的实例 当然无法响应了! 可能Tform1根本没有创建对应的实例! 不过Tform1和Tform2同在一个dll下互相引用单元直接调用即可! 不明白为什么一定要发消息! 呵呵!
我表达错了, 应该DLL2,发消息到DDL1里在Form1
回复
wztimes 2013-04-25
H := FindWindow('Tform1',Nil);,,得到H=0 至少先把句柄找到再说吧
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4925

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2013-04-25 10:18
社区公告
暂无公告