发明名称 |
一种获取无窗口RichEdit控件文本内容的方法及其设备 |
摘要 |
本发明涉及一种获取无窗口RichEdit控件文本内容的方法及其设备。本发明首先安装消息钩子,以便监控窗口事件。在监控窗口事件过程中,修改该聊天软件中RichEdit模块的创建文本服务对象函数的入口地址。然后调用该HOOK函数,以获取该文本服务对象的接口指针。最后根据该文本服务对象接口访问RichEdit控件。本发明解决了需要通过算法密钥对网络层协议解析,以实现对聊天信息进行监控而带来的技术难题。因此本发明方法能够应用于监控使用即时聊天软件的聊天内容。 |
申请公布号 |
CN101834807B |
申请公布日期 |
2013.04.03 |
申请号 |
CN201010161277.4 |
申请日期 |
2010.04.28 |
申请人 |
北京网康科技有限公司 |
发明人 |
李继明 |
分类号 |
H04L12/58(2006.01)I |
主分类号 |
H04L12/58(2006.01)I |
代理机构 |
北京亿腾知识产权代理事务所 11309 |
代理人 |
陈霁 |
主权项 |
一种获取无窗口RichEdit控件文本内容的方法,其特征在于,包括:步骤a,安装消息钩子,以便监控窗口事件;步骤b,在监控窗口事件过程中,修改该聊天软件中RichEdit模块的创建文本服务对象函数的入口地址,使该创建文本服务对象函数跳转到用于获取文本服务对象接口指针的HOOK函数中;步骤c,调用该HOOK函数,以获取所述文本服务对象的接口指针;步骤d,根据所述文本服务对象的接口指针访问RichEdit控件,从而获得所述无窗口RichEdit控件文本内容;在步骤c中,所述创建文本服务对象的函数为CreateTextServices函数,所述文本服务对象的接口指针为ITextServices接口指针;所述HOOK函数功能为:先恢复所述CreateTextServices函数入口地址,以便调用该CreateTextServices函数;然后通过调用该CreateTextServices函数得到所述ITextServices的接口指针;再将CreateTextServices函数入口地址改写成跳转到该HOOK函数入口地址的指令;最后将该HOOK函数返回,其返回值为内部调用CreateTextServices函数的返回值;所述步骤d包括:获取所述RichEdit控件当前的文本行数,并与原记录的行数进行比较,如果没有变化则不进行任何处理;如果当前行数大于原行数,则以原行数作为循环起点,新行数作为循环结束点,开始循环;在该循环体中,以当前行数值作为索引,先获取当前行首字符的偏移值,并将其作为区段起始值,然后获取当前行的长度,并将其作为区段结束值,再获取当前行设定的区段文本内容,并进行处理;继续获取下一行内容,直到所有新增行的内容都获取完为止。 |
地址 |
100190 北京市海淀区中关村东路66号世纪科贸大厦A座3层 |