-
-
[求助]跨进程如何获取RichEdit内容发生改变的消息?
-
发表于:
2015-1-4 16:26
5887
-
[求助]跨进程如何获取RichEdit内容发生改变的消息?
遇到一个问题,搞了好久没搞定。希望有做过的童鞋给个思路。
现在有一个窗体,上面有一个按钮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内容才会发送改变。这样就很悲剧啊,每次都是获取到上一次的文本。大神们有什么好的建议吗
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!