首页
社区
课程
招聘
[求助]dll是否要有消息循环?
发表于: 2012-9-19 16:05 5337

[求助]dll是否要有消息循环?

2012-9-19 16:05
5337
就是在注入dll后,创建了窗口,那么这个窗口是否需要消息循环,能否和exe共用一个消息循环。
如果有,那么在MFC下消息循环是我们自己创建的吗?还是自动生成了。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
一个线程对应一个消息循环

调用某些函数如GetMessage PeekMessage可以让操作系统帮本线程创建一个消息循环

dll里如果创建一个新线程,在新线程里创建窗口并进入消息循环;

dll代码如果运行在exe中本来的线程的上下文中,如果此线程本来就有消息循环,可以直接创建窗口;
2012-9-19 16:24
0
雪    币: 122
活跃值: (72)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
那要怎样让对方线程的消息循环将消息发送到我们创建的窗口,流程是什么,应用程序本身不为我们的dll处理消息,只是我们插入dll后创建了一个窗口,那么我们的窗口类里的窗口回调函数又该怎么指定呢??
2012-9-19 18:19
0
雪    币: 106
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
可以hook应用程序的消息循环
2012-9-19 18:48
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
每个线程一个消息循环,你在一个存在消息循环的线程里创建一个窗口,自然就使用了该线程的消息循环。“怎样让对方线程的消息循环将消息发送到我们创建的窗口”,只要Send、PostMessage的目标窗口是你的窗口,线程消息循环处的DispatchMessage自然会调用你的窗口过程。窗口过程可以在注册窗口类的时候指定,也可以通过SetWindowLong来改变(子类化),也可以通过SetClassLong来改变(超类化)。

创建了一个窗口还想处理其他窗口的消息,有两个办法,第一,挂钩GetMessage或其他读消息队列的函数,可以处理素有Post的消息;第二,用消息钩子,不同的钩子可以处理Post或Send的消息;
2012-9-20 10:54
0
游客
登录 | 注册 方可回帖
返回
//