關於HOOK TEXTOUT 技術 |
缺席
|
ac910127
一般會員 ![]() ![]() 發表:7 回覆:27 積分:11 註冊:2009-11-06 發送簡訊給我 |
各位好
小弟目前在學習HOOK TEXTOUT的相關技術。 http://delphi.ktop.com.tw/board.php?cid=168&fid=914&tid=19406 <<在此學習到了相關技術。 程式確實會先經過我自定義的MYTextOutA();Fuction。 可是卻沒達到小弟的目的。 小弟的目標是在滑鼠點擊到某視窗時,利用InvalidateRect(hFocus, nil, TRUE); 使視窗重畫 在視窗重畫時藉由HOOK TEXTOUT各相關API FUNCTION取得視窗內所以文字及文字的位子。 問題是重畫時,是乎沒觸發MYTEXTOUTA()。 請問各位高手,小弟是否有哪部分的想法錯誤。 程式碼: Function MyHook(iCode:Integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;export; var Msg:PEventMsg; hFocus:HWND; szTitle:array[0..255] of char; strList:tstrings; DC:HDC; begin //Result:=0; if iCode<0 then begin Result:=CallNextHookEx(hNextHookProc, iCode, wParam, lParam); exit; end; if iCode = HC_ACTION then begin if (wParam = WM_LBUTTONDOWN)then begin hFocus:=GetActiveWindow(); if hFocus<>tmpFocus then begin init; //啟動TEXTOUTA替換成MYTEXTOUTA; DC:=GetDC(hFocus); textoutA(DC,random(10),random(10),PAnsiChar('12345'),5); //測試替換是否成功<<<是成功的 ReleaseDC(hFocus,DC); InvalidateRect(hFocus, nil, TRUE); //視窗重畫 tmpFocus:=hFocus ;//判斷視窗是否有變動 end; end; Result:=CallNextHookEx(hNextHookProc, iCode, wParam, lParam); end; 小弟的HOOK MOUSE 是全域的,為一個dll檔。 懇請高手多多指教,小弟如果觀念不對之處,也請高手告知。 先謝謝各位高手了!!!!! |
ac910127
一般會員 ![]() ![]() 發表:7 回覆:27 積分:11 註冊:2009-11-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |