讀取其他程序Richedit控制項的內容

2021-04-13 00:47:29 字數 1581 閱讀 5109

和edit控制項不同的是,richedit支援rtf格式,採用wm_getwindowtext訊息只能得到文字資訊,因此如果需要獲取完整的rtf檔案,則需要處理em_streamout訊息,將控制項中的內容寫出。有些控制項對em_streamout進行了過濾,則需要進一步處理em_streamin來在讀入時截獲原始資料。

處理的步驟如下:

1、 獲取目標richedit視窗控制代碼;

2、 hook視窗對應的程序,並子類化該視窗;

3、 截獲em_streamin、em_streamout訊息,將對應的內容寫出。

具體的實現如下:

1、 在hookdll中實現子類化操作

lresult hookproc (

int code,       // hook code

wparam wparam, // virtual-key code

lparam lparam   // keystroke-message information)

return ::callnexthookex(g_hhook, code, wparam, lparam); }

用於替換的視窗過程如下:

static

lresult callback

richedit_wndproc( hwnd hwnd, uint msg, wparam wparam, lparam lparam )

return 0; }

if( msg == wm_hookspy )

return 0; }

if( g_wndproc )

return ::callwindowproca( g_wndproc, hwnd, msg, wparam, lparam );

else

return 0; }

2、在hook dll中匯出hook函式

inthookremotewindow( hwnd hremotewnd, hwnd hlocalwnd, bool bhook )

else

::unhookwindowshookex( g_hhook );

} }   

return true; }

3、 在對話方塊中接受hook dll傳送的資料並顯示

static

dword callback

mystreamincallback(dword dwcookie, lpbyte pbbuff, long cb, long *pcb)

bool ccrackdlg::oncopydata(cwnd* pwnd, copydatastruct* pcopydatastruct)

4、demo如下

讀取其它程序richedit控制項的內容

和edit控制項不同的是,richedit支援rtf格式,採用wm getwindowtext訊息只能得到文字資訊,因此如果需要獲取完整的rtf檔案,則需要處理em streamout訊息,將控制項中的內容寫出。有些控制項對em streamout進行了過濾,則需要進一步處理em streamin來...

讀取其他程序的資料

typedef struct tagwndinfo wndinfo,lpwndinfo bool callback myenumproc hwnd hwnd,lparam lparam 列舉所有程序 if iswindowvisible hwnd 當前視窗是否可見 return true hwnd ...

VC獲取其他程序ListCtrl內容

vc讀寫其他程序listctrl資料到本程序的例項,下面用windows任務管理器來做測試 1 捕獲視窗控制代碼 用spy 可以看到如下父子視窗關係 新增listctrl,設定style report 關聯控制項變數m listctrl,再新增乙個按鈕,如下圖 4 程式不足 a 在獲取任務管理器 程...