線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:949
推到 Plurk!
推到 Facebook!

使用 HOOK 讓視窗 no focused 的問題?

尚未結案
solitarygo
一般會員


發表:4
回覆:12
積分:3
註冊:2004-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-07 10:00:14 IP:218.164.xxx.xxx 未訂閱
各位大大,我想讓某個特定視窗不會被 focused, 看了一些相關討論之後,說要使用 Hook 事前去攔截系統傳入視窗的訊息, 可是我仍舊不會使用 Hook ,下列是一些相關的討論及文章: http://www.bravos.com.tw/big5/tutor/Profession/Hook/ http://delphi.ktop.com.tw/topic.php?topic_id=33007 http://delphi.ktop.com.tw/topic.php?topic_id=52938 http://delphi.ktop.com.tw/topic.php?topic_id=47733 可以請會 Hook 大大幫忙作一個範例嗎? 例如讓記事本不會被 focused , 我寫了一些程式碼: --------------------------------------------------------------------- HINSTANCE hInst = NULL; HWND hWnd = FindWindow(NULL, "新增文字文件 - 記事本"); HHOOK hHook = NULL; LRESULT CALLBACK CallWndProcHook(int nCode, WPARAM wParam, LPARAM lParam) { // 取得訊息詳細資料 CWPRETSTRUCT * PCWPRETSTRUCT pMsg = (PCWPRETSTRUCT)lParam; if(pMsg == WM_SETFOCUS) return 1; } DWORD dwThreadId=GetWindowThreadProcessId(hWnd, NULL); hHook=SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProcHook, hInst, dwThreadId); --------------------------------------------------------------------- 寫到這邊我就不知道接下來該做什麼了? 甚至還不知道 HINSTANCE hInst 該傳入什麼? 請各位大大幫忙做個範例參考一下吧,謝謝~
solitarygo
一般會員


發表:4
回覆:12
積分:3
註冊:2004-07-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-09 15:09:51 IP:140.127.xxx.xxx 未訂閱
各位大大,我做了一個例子, 可是 Hook 卻沒有作用,我不知道為什麼? 似乎下列的 CallWndProcHook 函數都沒呼叫到?? 程式碼如下: ==================================================================== HINSTANCE hInst = NULL; HWND hWnd = FindWindow(NULL, "新增文字文件 - 記事本"); HHOOK hHook = NULL; LRESULT CALLBACK CallWndProcHook ( int nCode , WPARAM wParam , LPARAM lParam ) { LRESULT lRet = CallNextHookEx (hHook, nCode, wParam, lParam); /*if ( nCode < 0 ) { return ( lRet ) ; } */ PCWPRETSTRUCT pMsg = (PCWPRETSTRUCT)lParam ; ShowMessage("pMsg"); if ( WM_SETFOCUS == pMsg->message ) { ShowMessage("WM_SETFOCUS"); return true ; } return ( lRet ) ; } BOOL HookWndProc() { ShowMessage("HookWndProc"); if (hWnd) { ShowMessage("hWnd"); DWORD dwThreadId = GetWindowThreadProcessId(hWnd, NULL); if (dwThreadId) { hHook = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProcHook, hInst, dwThreadId); ShowMessage("SetWindowsHookEx"); } } return FALSE; } void UnHookWndProc() { if (hHook) { UnhookWindowsHookEx(hHook); hHook = NULL ; } } =====================================================================
系統時間:2024-05-09 21:01:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!