[發(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è)備 | ||
1.一種獲取無窗口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)容。
2.如權(quán)利要求1所述的一種獲取無窗口RichEdit控件文本內(nèi)容的方法,其特征在于,在所述步驟a之后,步驟b之前包括:
步驟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。
3.如權(quán)利要求1所述的一種獲取無窗口RichEdit控件文本內(nèi)容的方法,其特征在于,所述創(chuàng)建文本服務(wù)對象的函數(shù)為CreateTextServices函數(shù),所述文本服務(wù)對象的接口指針為ITextServices接口指針。
4.如權(quán)利要求3所述的一種獲取無窗口RichEdit控件文本內(nèi)容的方法,其特征在于,所述HOOK函數(shù)功能為:
先恢復(fù)所述CreateTextServices函數(shù)入口地址,以便調(diào)用該CreateTextServices函數(shù);
然后通過調(diào)用該CreateTextServices函數(shù)得到所述ITextServices的接口指針;
再將CreateTextServices函數(shù)入口地址改寫成跳轉(zhuǎn)到該HOOK函數(shù)入口地址的指令;
最后將該HOOK函數(shù)返回,其返回值為內(nèi)部調(diào)用CreateTextServices函數(shù)的返回值。
5.如權(quán)利要求4所述的一種獲取無窗口RichEdit控件文本內(nèi)容的方法,其特征在于,所述HOOK函數(shù)包括傳入?yún)?shù)IUnknown*punkOuter、ITextHost*pITextHost,以及傳出參數(shù)IUnknown**ppUnk;
該HOOK函數(shù)通過該輸入?yún)?shù)得到該輸出參數(shù),并通過該傳出參數(shù)得到所述ITextServices接口指針。
6.如權(quán)利要求1所述的一種獲取無窗口RichEdit控件文本內(nèi)容的方法,其特征在于,所述RichEdit控件處理的消息包括以下消息中的一個或多個:
用于獲取該RichEdit控件文本行數(shù)的EM_GETLINECOUNT消息;
用于得到行開頭字符索引值的EM_LINEINDEX消息;
用于得到行長度的EM_LINELENGTH消息;以及
用于獲取指定范圍文本內(nèi)容的EM_GETTEXTRANGE消息。
7.如權(quán)利要求6所述的一種獲取無窗口RichEdit控件文本內(nèi)容的方法,其特征在于,所述步驟d包括:
獲取所述RichEdit控件當(dāng)前的文本行數(shù),并與原記錄的行數(shù)進行比較,如果沒有變化則不進行任何處理;
如果當(dāng)前行數(shù)大于原行數(shù),則以原行數(shù)作為循環(huán)起點,新行數(shù)作為循環(huán)結(jié)束點,開始循環(huán);
在該循環(huán)體中,以當(dāng)前行數(shù)值作為索引,先獲取當(dāng)前行首字符的偏移值,并將其作為區(qū)段起始值,然后獲取當(dāng)前行的長度,并將其作為區(qū)段結(jié)束值,再獲取當(dāng)前行設(shè)定的區(qū)段文本內(nèi)容,并進行處理;
繼續(xù)獲取下一行內(nèi)容,直到所有新增行的內(nèi)容都獲取完為止。
8.如權(quán)利要求1所述的一種獲取無窗口RichEdit控件文本內(nèi)容的方法,其特征在于,所述安裝消息鉤子包括安裝CBT消息鉤子、安裝鼠標(biāo)消息鉤子和安裝鍵盤消息鉤子,從而實時監(jiān)控窗口事件。
該專利技術(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/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





