請問使用hook記錄動作時..可以只記錄特定視窗內的訊號嗎 |
尚未結案
|
maddest
一般會員 發表:3 回覆:3 積分:1 註冊:2005-04-27 發送簡訊給我 |
請問各位大大
我現在寫了一個程式,目前可以抓取正在執行的程式的handle
並且可以選擇特定視窗,
我現在想使用WH_JOURNALRECORD要來記錄動作(只想要記錄所選的那個視窗內的動作)也就是說..如果滑鼠移出所選的視窗時就不做記錄的動作...請問要怎麼做 以下從版內所找到的程式範例
LRESULT WINAPI HookProc(int iCode, WPARAM wParam, LPARAM lParam)
{ recOK=1;
int Result=0;
if (iCode < 0)
Result = CallNextHookEx(hHook,iCode,wParam,lParam);
else if (iCode == HC_SYSMODALON)
recOK=0;
else if (iCode == HC_SYSMODALOFF)
recOK=1;
else if ((recOK>0) && (iCode == HC_ACTION))
{
/* EVENTMSG* event = (EVENTMSG*)lParam;//加入這些就都不會動了>.<
if(hh == event->hwnd)
{ */
EventArr[EventLog]=(*(PEVENTMSGMSG)lParam);
EventLog ;
// }
if (EventLog>=1000)
{
UnhookWindowsHookEx(hHook);
}
} return Result;
}
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
maddest
一般會員 發表:3 回覆:3 積分:1 註冊:2005-04-27 發送簡訊給我 |
作出來了
LRESULT WINAPI HookProc(int iCode, WPARAM wParam, LPARAM lParam) { recOK=1; TPoint p; RECT r; ::GetWindowRect(hh,&r); int Result=0; if (iCode < 0) Result = CallNextHookEx(hHook,iCode,wParam,lParam); else if (iCode == HC_SYSMODALON) recOK=0; else if (iCode == HC_SYSMODALOFF) recOK=1; else if ((recOK>0) && (iCode == HC_ACTION)) { ::GetCursorPos(&p); if(::PtInRect(&r,p)) { EventArr[EventLog]=(*(PEVENTMSGMSG)lParam); EventLog ; } if (EventLog>=1000) { UnhookWindowsHookEx(hHook); } } return Result; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |