使用 HOOK 讓視窗 no focused 的問題? |
尚未結案
|
solitarygo
一般會員 發表:4 回覆:12 積分:3 註冊:2004-07-30 發送簡訊給我 |
各位大大,我想讓某個特定視窗不會被 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 發送簡訊給我 |
各位大大,我做了一個例子,
可是 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 ;
}
}
=====================================================================
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |