调用SetWindowsHookEx的DLL的模块实例句柄,它可以经由DllMain入口的第一个参数得到。 HHOOK SetWindowsHookEx( int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId);
至于SetWindowsHookEx的第四个参数dwThreadId,才是你需要借由窗口句柄得到的窗口线程ID,
你可以通过下面的代码获得:
DWORD dwThreadID = GetWindowThreadProcessId(hwnd, NULL);
选择相应的消息钩子,比如
WH_CALLWNDPROC//监视到达窗口前的消息 WH_CALLWNDPROCRET//监视窗口处理后的消息 WH_DEBUG//监视系统调用其他HOOK关联的HOOK子程 WH_GETMESSAGE//监视发送到窗体消息队列里的消息 WH_JOURNALPLAYBACK//全局HOOK,可以插入消息到消息队列 WH_JOURNALRECORD//全局HOOK,监视输入事件(键盘、鼠标等) WH_KEYBOARD//键盘钩子 WH_MOUSE//鼠标钩子 WH_MSGFILTER//监视菜单、滚动条、消息框、对话框消息和切换窗口的组合键(Alt+Tab等) WH_SHELL//接收系统中重要的通知(如窗口被产生、摧毁等)