[發(fā)明專利]一種獲取無窗口RichEdit控件文本內(nèi)容的方法及其設(shè)備有效
| 申請?zhí)枺?/td> | 201010161277.4 | 申請日: | 2010-04-28 |
| 公開(公告)號: | CN101834807A | 公開(公告)日: | 2010-09-15 |
| 發(fā)明(設(shè)計)人: | 李繼明 | 申請(專利權(quán))人: | 北京網(wǎng)康科技有限公司 |
| 主分類號: | H04L12/58 | 分類號: | H04L12/58 |
| 代理公司: | 北京億騰知識產(chǎn)權(quán)代理事務(wù)所 11309 | 代理人: | 陳霽 |
| 地址: | 100190 北京市海淀*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 獲取 窗口 richedit 控件 文本 內(nèi)容 方法 及其 設(shè)備 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù),尤其涉及即時通信軟件。
背景技術(shù)
近來,通過即時通信軟件(如QQ、MSN、Skype)的聊天行為導(dǎo)致的泄密事件日益增多,因此需要在某些場合對即時通信軟件的聊天內(nèi)容進行監(jiān)控。但是主流的即時通信軟件都對通信內(nèi)容進行了加密,若通過對網(wǎng)絡(luò)層數(shù)據(jù)包解密的方式獲取聊天內(nèi)容則需要算法密鑰,而算法密鑰的獲取又非常困難,因此需要尋找新的技術(shù)方法。
對于即時通信軟件,用戶在使用它們進行聊天過程中,都會將聊天信息顯示在聊天窗口上。同時如QQ2009、MSN、Skype等主流即時通信軟件都使用“無窗口類型的RichEdit控件”來顯示聊天內(nèi)容信息。
RichEdit控件是一個可用于輸入、編輯、格式化、打印和保存文本的窗體。這些文本可以設(shè)置字符和段落格式,并且可以包含嵌入的COM對象。由于RichEdit能顯示豐富多樣的文本、圖片,所以大多數(shù)即時聊天軟件,如QQ、MSN等都使用RichEdit控件來作為聊天內(nèi)容的顯示窗口。
無窗口類型的RichEdit控件使用RichEdit模塊提供的COM接口來創(chuàng)建對象實例,并通過這些COM接口來訪問其屬性和方法,此時RichEdit控件不是一個子窗口,也沒有句柄,所以無法直接通過Windows系統(tǒng)的消息機制進行訪問。
發(fā)明內(nèi)容
本發(fā)明提供了一種能解決以上問題的獲取無窗口RichEdit控件文本內(nèi)容的方法及其設(shè)備。
在第一方面,本發(fā)明提供了一種獲取無窗口RichEdit控件文本內(nèi)容的方法。該方法包括:
步驟a,安裝消息鉤子,以便監(jiān)控窗口事件。
步驟b,在監(jiān)控窗口事件過程中,修改該聊天軟件中RichEdit模塊的創(chuàng)建文本服務(wù)對象函數(shù)的入口地址,使其跳轉(zhuǎn)到用于獲取文本服務(wù)對象接口指針的HOOK函數(shù)中。
步驟c,調(diào)用該HOOK函數(shù),以獲取所述文本服務(wù)對象的接口指針。
步驟d,根據(jù)所述文本服務(wù)對象的接口指針訪問RichEdit控件,從而獲得所述無窗口RichEdit控件文本內(nèi)容。
在第二方面,本發(fā)明提供了一種獲取無窗口RichEdit控件文本內(nèi)容的設(shè)備。該設(shè)備包括:
安裝消息鉤子,以便監(jiān)控窗口事件的模塊。
在監(jiān)控窗口事件過程中,修改聊天軟件中RichEdit模塊的創(chuàng)建文本服務(wù)對象函數(shù)的入口地址,使其跳轉(zhuǎn)到用于獲取文本服務(wù)對象接口指針的HOOK函數(shù)中的模塊。
調(diào)用該HOOK函數(shù),以獲取所述文本服務(wù)對象接口指針的模塊。
根據(jù)該文本服務(wù)對象接口訪問RichEdit控件以獲得該無窗口RichEdit控件文本內(nèi)容的模塊。
在本發(fā)明的一個實施例中,該獲取無窗口RichEdit控件文本內(nèi)容的方法包括:
步驟h,系統(tǒng)強制加載DLL模塊。
步驟e,檢測目標(biāo)進程中是否已經(jīng)加載DLL模塊。
步驟f,如果尚未加載DLL模塊則系統(tǒng)強制加載DLL模塊,再執(zhí)行步驟g,如果已經(jīng)加載了DLL模塊則直接執(zhí)行步驟g。
步驟g,檢測目標(biāo)進程是否屬于感興趣進程,如果不是感興趣進程則將該加載的DLL模塊退出,如果是感興趣進程則繼續(xù)執(zhí)行所述步驟b。
在本發(fā)明的另一個實施例中,所述RichEdit控件處理的消息包括用于獲取該RichEdit控件文本行數(shù)的EM_GETLINECOUNT消息,用于得到行開頭字符索引值的EM_LINEINDEX消息,用于得到行長度的EM_LINELENGTH消息,用于獲取指定范圍文本內(nèi)容的EM_GETTEXTRANGE消息。
在本發(fā)明的又一個實施例中,所述安裝消息鉤子包括安裝CBT消息鉤子、安裝鼠標(biāo)消息鉤子和安裝鍵盤消息鉤子,從而實時監(jiān)控窗口事件。
本發(fā)明通過API?HOOK技術(shù)獲取“無窗口類型RichEdit控件”的訪問接口,進而獲取即時聊天軟件顯示的聊天內(nèi)容,從而實現(xiàn)了對即時聊天軟件聊天信息的監(jiān)控。本發(fā)明方法解決了需要通過算法密鑰對網(wǎng)絡(luò)層數(shù)據(jù)包的協(xié)議解析來實現(xiàn)對聊天信息進行監(jiān)控的技術(shù)難題。
附圖說明
下面將參照附圖對本發(fā)明的具體實施方案進行更詳細的說明,在附圖中:
圖1是本發(fā)明一個實施例的基于API?HOOK技術(shù)跨進程獲取聊天內(nèi)容的流程圖。
具體實施方式
API(Application?Programming?Interface,應(yīng)用程序編程接口)是一預(yù)先定義的函數(shù),目的是提供給開發(fā)人員應(yīng)用程序,使其無需訪問源碼或理解內(nèi)部工作機制。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京網(wǎng)康科技有限公司,未經(jīng)北京網(wǎng)康科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010161277.4/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





