請(qǐng)?jiān)敿?xì)說(shuō)明
熱心網(wǎng)友
幕上的文字大都是由gdi32。dll的以下幾個(gè)函數(shù)顯示的:TextOutA、TextOutW、ExtTextOutA、ExtTextOutW。實(shí)現(xiàn)屏幕抓詞的關(guān)鍵就是截獲對(duì)這些函數(shù)的調(diào)用,得到程序發(fā)給它們的參數(shù)?! ∥业姆椒ㄓ幸韵氯齻€(gè)步驟: 一、得到鼠標(biāo)的當(dāng)前位置 通過(guò)SetWindowsHookEx實(shí)現(xiàn)?! 《?、向鼠標(biāo)下的窗口發(fā)重畫(huà)消息,讓它調(diào)用系統(tǒng)函數(shù)重畫(huà) 通過(guò)WindowFromPoint,ScreenToClient,InvalidateRect 實(shí)現(xiàn)?! ∪?、截獲對(duì)系統(tǒng)函數(shù)的調(diào)用,取得參數(shù)(以TextOutA為例) 1。仿照TextOutA作成自己的函數(shù)MyTextOutA,與TextOutA有相同參數(shù)和返回值,放在系統(tǒng)鉤子所在的DLL里?! ysFunc1=(DWORD)GetProcAddress(GetModuleHandle("gdi32。dll"),"TextOutA"); BOOL WINAPI MyTextOutA(HDC hdc, int nXStart, int nYStart, LPCSTR lpszString,int cbString) { //輸出lpszString的處理return ((FARPROC)SysFunc1)(hdc,nXStart,nYStart,lpszString,cbString);}。