全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1823
推到 Plurk!
推到 Facebook!

關於HOOK TEXTOUT 技術

缺席
ac910127
一般會員


發表:7
回覆:27
積分:11
註冊:2009-11-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-02-26 16:07:30 IP:124.219.xxx.xxx 訂閱
各位好
小弟目前在學習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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-03-02 14:34:07 IP:114.32.xxx.xxx 訂閱
請問是小弟問題沒有說清楚嗎~~???  還是沒有人研究此相關問題  !!!

如果是小弟問題沒描述清楚,請告知,小弟立即修改問法!!!

高手們指導一下小弟。 謝謝


系統時間:2017-10-24 6:26:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!