[发明专利]一种获取无窗口RichEdit控件文本内容的方法及其设备有效
申请号: | 201010161277.4 | 申请日: | 2010-04-28 |
公开(公告)号: | CN101834807A | 公开(公告)日: | 2010-09-15 |
发明(设计)人: | 李继明 | 申请(专利权)人: | 北京网康科技有限公司 |
主分类号: | H04L12/58 | 分类号: | H04L12/58 |
代理公司: | 北京亿腾知识产权代理事务所 11309 | 代理人: | 陈霁 |
地址: | 100190 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 获取 窗口 richedit 控件 文本 内容 方法 及其 设备 | ||
技术领域
本发明涉及互联网技术,尤其涉及即时通信软件。
背景技术
近来,通过即时通信软件(如QQ、MSN、Skype)的聊天行为导致的泄密事件日益增多,因此需要在某些场合对即时通信软件的聊天内容进行监控。但是主流的即时通信软件都对通信内容进行了加密,若通过对网络层数据包解密的方式获取聊天内容则需要算法密钥,而算法密钥的获取又非常困难,因此需要寻找新的技术方法。
对于即时通信软件,用户在使用它们进行聊天过程中,都会将聊天信息显示在聊天窗口上。同时如QQ2009、MSN、Skype等主流即时通信软件都使用“无窗口类型的RichEdit控件”来显示聊天内容信息。
RichEdit控件是一个可用于输入、编辑、格式化、打印和保存文本的窗体。这些文本可以设置字符和段落格式,并且可以包含嵌入的COM对象。由于RichEdit能显示丰富多样的文本、图片,所以大多数即时聊天软件,如QQ、MSN等都使用RichEdit控件来作为聊天内容的显示窗口。
无窗口类型的RichEdit控件使用RichEdit模块提供的COM接口来创建对象实例,并通过这些COM接口来访问其属性和方法,此时RichEdit控件不是一个子窗口,也没有句柄,所以无法直接通过Windows系统的消息机制进行访问。
发明内容
本发明提供了一种能解决以上问题的获取无窗口RichEdit控件文本内容的方法及其设备。
在第一方面,本发明提供了一种获取无窗口RichEdit控件文本内容的方法。该方法包括:
步骤a,安装消息钩子,以便监控窗口事件。
步骤b,在监控窗口事件过程中,修改该聊天软件中RichEdit模块的创建文本服务对象函数的入口地址,使其跳转到用于获取文本服务对象接口指针的HOOK函数中。
步骤c,调用该HOOK函数,以获取所述文本服务对象的接口指针。
步骤d,根据所述文本服务对象的接口指针访问RichEdit控件,从而获得所述无窗口RichEdit控件文本内容。
在第二方面,本发明提供了一种获取无窗口RichEdit控件文本内容的设备。该设备包括:
安装消息钩子,以便监控窗口事件的模块。
在监控窗口事件过程中,修改聊天软件中RichEdit模块的创建文本服务对象函数的入口地址,使其跳转到用于获取文本服务对象接口指针的HOOK函数中的模块。
调用该HOOK函数,以获取所述文本服务对象接口指针的模块。
根据该文本服务对象接口访问RichEdit控件以获得该无窗口RichEdit控件文本内容的模块。
在本发明的一个实施例中,该获取无窗口RichEdit控件文本内容的方法包括:
步骤h,系统强制加载DLL模块。
步骤e,检测目标进程中是否已经加载DLL模块。
步骤f,如果尚未加载DLL模块则系统强制加载DLL模块,再执行步骤g,如果已经加载了DLL模块则直接执行步骤g。
步骤g,检测目标进程是否属于感兴趣进程,如果不是感兴趣进程则将该加载的DLL模块退出,如果是感兴趣进程则继续执行所述步骤b。
在本发明的另一个实施例中,所述RichEdit控件处理的消息包括用于获取该RichEdit控件文本行数的EM_GETLINECOUNT消息,用于得到行开头字符索引值的EM_LINEINDEX消息,用于得到行长度的EM_LINELENGTH消息,用于获取指定范围文本内容的EM_GETTEXTRANGE消息。
在本发明的又一个实施例中,所述安装消息钩子包括安装CBT消息钩子、安装鼠标消息钩子和安装键盘消息钩子,从而实时监控窗口事件。
本发明通过API HOOK技术获取“无窗口类型RichEdit控件”的访问接口,进而获取即时聊天软件显示的聊天内容,从而实现了对即时聊天软件聊天信息的监控。本发明方法解决了需要通过算法密钥对网络层数据包的协议解析来实现对聊天信息进行监控的技术难题。
附图说明
下面将参照附图对本发明的具体实施方案进行更详细的说明,在附图中:
图1是本发明一个实施例的基于API HOOK技术跨进程获取聊天内容的流程图。
具体实施方式
API(Application Programming Interface,应用程序编程接口)是一预先定义的函数,目的是提供给开发人员应用程序,使其无需访问源码或理解内部工作机制。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京网康科技有限公司,未经北京网康科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010161277.4/2.html,转载请声明来源钻瓜专利网。