首页
社区
课程
招聘
[求助]跨进程如何获取RichEdit内容发生改变的消息?
发表于: 2015-1-4 16:26 5884

[求助]跨进程如何获取RichEdit内容发生改变的消息?

2015-1-4 16:26
5884
遇到一个问题,搞了好久没搞定。希望有做过的童鞋给个思路。
现在有一个窗体,上面有一个按钮Button和一个RichEdit控件,按Button的时候,RichEdit内容就发生改变,没有源码。我现在就要写一个程序,当这个目标进程的RichEdit控件内容发生改变的时候,我自己的程序可以得到通知,并拿到新的文本内容(用SendMessage(RichEditHwnd, WM_GETTEXT, 0, 0)),做出相应的事情。
我试过用SetWindowHookEx挂钩注入DLL,hook类型是WH_GETMESSAGE,截取了WM_LBUTTONDOWN和WM_LBUTTONUP消息,并在hook的回调函数里处理的时候调用SendMessage,往我自己的程序窗体发送自定义消息,这样就能通知到我自己的程序去做相应的事情,但是,这样做有一个问题产生了,就是每次单击Button的时候,Button的鼠标消息被我们截获了,此时RichEdit还没发生改变(因为按键的鼠标单击事件还没有执行),但我们的Hook回调函数在调用SendMessage往我们自己写的程序的窗体发送自定义消息,注入的DLL就会阻塞在这个SendMessage函数上,直到我们自己的程序的自定义的响应函数执行完毕,但是我们的自定义函数又发送SendMessage(RichEditHwnd, WM_GETTEXT, 0, 0)获取RichEdit的文本内容,所以,获取到RichEdit的内容就是未发生改变时候的内容。直到DLL中的那个SendMessage返回,才会执行鼠标按键单击,RichEdit内容才会发送改变。这样就很悲剧啊,每次都是获取到上一次的文本。大神们有什么好的建议吗

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 398
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
PostMessage
然后,在你的程序稍微延时点去发送SendMessage(RichEditHwnd, WM_GETTEXT, 0, 0)
2015-1-4 17:03
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
EN_CHANGE
2015-1-4 17:58
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可以按钮事件,既然有点击Button,那么就有对应的 Btn_Fun,
逆向分析Btn_Fun 函数,结尾 Hook,OVER.
2015-1-4 20:31
0
雪    币: 11
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
额,试了一下,2L的可行,解决了需求,是目前最简单可行的方案了。
2015-1-5 10:08
0
游客
登录 | 注册 方可回帖
返回
//