《2022年2022年钩子函数大全 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年钩子函数大全 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、钩子函数大全DelHookProc : 该函数已过时 , 它仅仅是用来与Windows的 16位版本兼容 . 在 32 位 Windows系统中应当使用函数CallNextHookEx. SetWindowsHook : 该函数已过时 , 它仅仅是用来与Windows的 16位版本兼容 . 在 32 位 Windows系统中应当使用函数SetWindowsHookEx. UnhookWindowsHook : 该函数已过时 , 它仅仅是用来与Windows的 16位版本兼容 . 在 32 位 Windows系统中应当使用函数UnhookWindowsHookEx. 函数名称函数作用函数参数名称
2、类型含义SetWindowsHookEx 安装钩子返回值HHOOK 钩子句柄,失败为NULL idHook int 钩子类型lpfn HOOKPROC 回调函数指针hMod HINSTANCE Lpfn 所在动态链接的句柄, 若 dwThreadId 指示的线程由当前进程创建, 且 pfn 定义于当前进程相关的代码中, 则参数 hMod必须被设置为 NULL(0) dwThreadId DWORD 线程标识符 . 若此参数值为 0, 则该挂钩处理过程与所有现存的线程相关UnhookWindowsHookEx 卸载钩子返回值BOOL 是否执行成功hhk HHOOK 钩子句柄CallNextHoo
3、kEx 传递钩子信息到下一个钩子返回值LRESULT 处理结果hhk HHOOK 钩子句柄nCode int 钩子处理类型wParam WPARAM 含义依赖于 nCode lParam LPARAM CallMsgFilter 将特定消息和钩子处理类型发送给 与 钩 子WH_SYSMSGFILTER和WH_MSGFILTER 相联系的回调函数返回值BOOL 应用程序是否不能对该消息作进一步处理lpMsg LPMSG 一个 MSG 结构nCode int 钩子处理类型 , 该类型切忌采用与系统预定义的与WH_SYSMSGFILTER和 WH_MSGFILTER钩子相关的钩子处理类型(MSGF_
4、 和 HC_开头 )相同的值KBDLLHOOKSTRUCT结构DWORD vkCode; /键盘消息的虚拟键信息, 值的范围从 1 至 254 DWORD scanCode; /键盘的扫描码信息DWORD flags; / 键盘的扩展信息DWORD time; / 消息的产生时间 , 可以用 GetMessageTime 函数取得ULONG_PTR dwExtraInfo; /消息的扩展信息DEBUGHOOKINFO结构DWORD idThread; /filter 线程的 ID DWORD idThreadInstaller; /debugging filter 线程的 ID LPARAM
5、lParam; / 描述跳过此钩子程序要传递给Debug程序的 lParam WPARAM wParam; / 描述跳过此钩子程序要传递给Debug程序的 wParam int code; /描述跳过此钩子程序要传遵给Debug程序的 nCode MOUSEHOOKSTRUCT结构POINT pt; /发送鼠标消息时候的鼠标坐标HWND hwnd; /接收鼠标消息的窗口句柄UINT wHitTestCode; /测试码ULONG_PTR dwExtraInfo; /鼠标消息的扩展信息EVENTMSG结构UINT message;/ 描述消息UINT paramL;/消息的扩展信息UINT pa
6、ramH;/ 消息的扩展信息DWORD time; / 寄送消息的时间HWND hwnd;/接受消息的窗口句柄CWPSTRUCT 结构LPARAM lParam; / 消息的扩展信息WPARAM wParam; / 消息的扩展信息UINT message; /消息HWND hwnd; /接受消息的窗口MSLLHOOKSTRUCT结构POINT pt; /发送鼠标消息时候的鼠标坐标DWORD mouseData; /如果这个消息是 WM_MOUSEWHEEL 则高位为滚轮的滚动数目, 低位保留 . 如果这个消息是 WM_XBUTTONDOWN, WM_XBUTTONUP, WM_XBUTTOND
7、BLCLK, WM_NCXBUTTONDOWN, WM_NCXBUTTONUP, 或 WM_NCXBUTTONDBLCLK.则高位描述的是X按钮是按下还是释放 , 低位保留DWORD flags; /描述消息的注入事件DWORD time; / 描述寄送消息的时候ULONG_PTR dwExtraInfo;/ 描述消息的扩展信息CREATESTRUCT结构LPVOID lpCreateParams 将被用于创建窗口的数据的指针。HINSTANCE hInstance 窗口拥有模块的实例句柄。HMENU hMenu 窗口的菜单。如果是子窗口,则包含整数ID。HWND hwndParent 窗口的
8、父窗口。如果不是子窗口,为NULL 。int cy 窗口的高。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - int cx 窗口的宽。int y 窗口的左上角的y 轴坐标。如果是子窗口,则坐标相对于父窗口;否则坐标相对于屏幕原点。int x 窗口的左上角的x 轴坐标。如果是子窗口,则坐标相对于父窗口;否则坐标相对于屏幕原点。LONG style 窗口的风格。LPCSTR lpszName 窗口的名字。LPCSTR lpszCla
9、ss 窗口的 Windows类名(一个 WNDCLASS结构;更多的信息参见Win32 SDK文档)。DWORD dwExStyle 窗口的扩展风格。回调函数宏名宏含义对应回调函数名称参数nCode nCode含义wParam lParam WH_CALLWNDPROC(4) 监视系统发送给窗口的消息(消息处理前)CallWndProc HC_ACTION 消息是来自于当前的线程那么该值为非零, 否则该值为零一个指向 CWPSTRUCT 结构体的指针WH_CALLWNDPROCRET(12) 监视系统发送给窗口的消息(消息处理后)CallWndRetProc WH_CBT(5) 临视系统发送给
10、窗口的基本信息此挂钩处理过程的返回值决定了系统允许或 禁 止 以 下 操 作 之一 , 对于与以下挂钩代码相应的操作 , 返回值为0 则允许这样的操作 , 返回值为 1 则禁止( HCBT_ACTIVATE 、HCBT_CREATEWND 、HCBT_DESTROYWND、HCBT_MINMAX、HCBT_MOVESIZE、HCBT_SETFOCUS 、HCBT_SYSCOMMAND)CBTProc HCBT_ACTIVATE 系统正要激活一个窗口将要被激活的窗口句柄CBTACTIVATESTRUCT结构的长指针,结构包含指向激活窗口的句柄, 并指示被激活者是否由于点击而发生改变HCBT_CL
11、ICKSKIPPED 系 统 已 从 消 息 队 列 中 删 除 鼠 标 滚 回 消 息 , 须 安 装 了WH_JOURNALPLAYBACK钩子之后才会触发该消息标识鼠标消息从系统消息队列中被删除MOUSEHOOKSTRUCT结构的指针, 结构包含点击测试代码及鼠标消息发往的窗口句柄 .HCBT_CLICKSKIPPED 值当一个 WH_MOUSE挂钩被安装时有效 , 点击测试代码列表 , 参见 WM_NCHITTEST HCBT_CREATEWND 一个窗口将被创建 , 系统在发送WM_CREATE 或 WM_NCCREATE消息之前调用该挂钩处理过程 . 若该挂钩处理过程返回非0 值,
12、 则系统销毁该窗口, 函数 CreateWindow 返回 NULL,但消息 WM_DESTROY不会被发送 , 若挂钩处理过程返回为零, 窗口将正常创建 . 当 HCBT_CREATEWND通知发出时 , 相应窗口已被创建, 但其最终尺寸及位置可能尚未确定, 其父窗口也可能未被创建, 有一种可能 , 消息发送给被创建窗口, 虽然窗口尚未接到 WM_NCCREATE 或 WM_CREATE 消息 . 也可通过对 CBT_CREATEWND结构 hwndInsertAfter的修改 , 来改变新被创建窗口在Z序列中的位置指定新窗口的句柄指定一个指向 CBT_CREATEWND结构的长指针 , 该
13、结构包含窗口的初始化参数 , 这些参数包括窗口的坐标和尺寸, 通过改变这些参数 . 一个 CBTProc挂钩处理过程能够设置窗口的初始尺寸和位置HCBT_DESTROYWND 一个窗口已经被销毁将被销毁的窗口句柄0 HCBT_KEYSKIPPED 系 统 已 从 消 息 队 列 删 除 键 盘 滚 回 消 息 , 必 须 在 安 装 了WH_JOURNALPLAYBACK 钩子之后才会触发该消息指示虚拟键的代码重复次数、扫描码、键转义码、前驱键状态和上下文代码 . 更多信息 , 参见WM_KEYUP或WM_KEYDOWN 仅 当WH_KEYBOARD挂钩安时有效 . HCBT_MINMAX 一
14、个窗口已经最小化或最大化了指定被最小化或最大化的窗口句柄低 字 节 指 定 值 (SW_),详 见ShowWindow, 高字节未定义HCBT_MOVESIZE 一个窗口已经移动了或改变了大小指定将被移动或改变尺寸的窗口句柄RECT结构的长指针 , 改变结构的值能设置窗口最终位置名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - HCBT_QS 一个窗口已经从系统消息队列中接受了 WM_QUEUESYNC 消息0 0 HCBT_SE
15、TFOCUS 一个窗口已经被激活获得焦点的窗口句柄失去焦点的窗口句柄HCBT_SYSCOMMAND 一个窗口已接受了系统命令,使应用程序可避免因热键响应而进行任务切换以(SC_)标识的系统命令值, 更多系统命令值的信息, 参见 WM_SYSCOMMAND WM_SYSCOMMAND的 lParam 值若鼠标选中系统菜单 , 低、 高字节分别为 X、Y的屏幕坐标WH_DEBUG(9) 钩住安装钩子的程序( 差错 钩子 ) DebugPro HC_ACTION 被 装 载 钩 子 的 类 型 , 与SetWindowsHookEx 函 数的 idHook 参数相同一个指向DEBUGHOOKINFO
16、 结构体的指什WH_FOREGROUNDIDLE(11) 监视一个程序的前端线 程 改 变 为 低 优 先级 , 钩子在程序被降低优先级前工作 ( 前台空闲窗口 钩子) ForegroundIdleProc HC_ACTION WH_GETMESSAGE(3) 监视一个消息被寄送到了消息等待队列中( 接收消息投递的 钩子) GetMsgProc HC_ACTION 消息是否已从消息队列中被删除 :PM_NOREMOVE:未 删 除 ( 应 用 程 序 调 用PeekMessage 函数 , 设置PM_NOREMOVE 标志) PM_REMOVE:已删除 (应用程序调用 GetMessage或P
17、eekMessage 函数 , 设置PM_REMOVE标志) 一个指向 MSG 结构体的指针WH_JOURNALPLAYBACK(1) 滚回一个鼠标键盘的消息队列, 这 个消息队列是由WH_JOURNALRECORD钩子创建的JournalPlaybackProc HC_GETNEXT 钩子程序拷贝了当前的鼠标或键盘消息EVENTMSG 结构体的指针HC_NOREMOVE 应用程序调用了 PeekMessage 函数 , 且调用 PeekMessage 函数之后 ,消息没有从系统消息队列中被移除HC_SKIP 钩子程序准备复制被 lParam 指向的 EVENTMSG 结构下的鼠标或键盘信息,
18、 一旦收到 HC_GETNEXT 钩子程序复制HC_SYSMODALOFF 一个消息框被销毁 , 钩子程序将继续开始滚回消息HC_SYSMODALON 一个消息框被显示 , 钩子程序将暂停滚回消息, 直到这个消息框被销毁WH_JOURNALRECORD(0) 记录一个鼠标键盘消息队列JournalRecordProc HC_ACTION EVENTMSG 结构体的指针结构包含从系统消息队列中删除了的消息 , 此挂钩处理过程必须纪录下此结构内容HC_SYSMODALOFF 一个消息框被销毁 , 钩子程序将继续开始滚回消息HC_SYSMODALON 一个消息框被显示 , 钩子程序将暂停滚回消息,
19、直到这个消息框被销毁WH_KEYBOARD(2) 监视键盘的消息KeyboardProc HC_ACTION 参数 wParam and lParam 包含一个击键消息的信息指示产生此击键消息的虚拟键代码0-15 位: 重复次数 , 用户继续摁键引发的击键重复次数16-23 位: 扫描码 , 依赖键盘生产厂家24 位: 此键是否为扩展键, 比如功能键或数字小键盘上的键, 当该键为扩展时, 其值为 1, 否则为 0 HC_NOREMOVE 参数 wParam and lParam 包含一个击键消息的信息, 且此击键消息未从消 息 队 列 中 删 除 ( 应 用 程 序 调 用 函 数PeekMe
20、ssage 设 置 了PM_NOREMOVE 标志) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 25-28 位: 保留未用 . 29 位:Alt键摁下为 1, 否为 0 30 位: 此前的键状态 , 此消息发送前是摁下为 1, 否为 0 31 位: 变化状态 , 此键正被摁下为0,否为 1 参见 Keystroke Message Flags WH_KEYBOARD_LL(13) 监视键盘的低级消息(Windows NT/
21、2000/XP) LowLevelKeyboardProc HC_ACTION WM_KEYDOWN,WM_SYSKEYDOWN, WM_KEYUP,WM_SYSKEYUP KBDLLHOOKSTRUCT 结构体的指针WH_MOUSE(7) 监视鼠标的消息MouseProc HC_ACTION 参数 wParam and lParam 包含一个鼠标消息的信息WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE,WM_MOUSEWHEEL,WM_RBUTTONDOWN,WM_RBUTTONUP MOUSEHOOKSTRUCT 结构的指针HC_NOREMOVE 参数 w
22、Param and lParam 包含一个鼠标消息的信息, 且此鼠标消息未从消 息 队 列 中 删 除 ( 应 用 程 序 调 用 函 数PeekMessage 设 置 了PM_NOREMOVE 标志) WH_MOUSE_LL(14) 监视鼠标的低级消息(Windows NT/2000/XP) LowLevelMouseProc HC_ACTION WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE,WM_MOUSEWHEEL,WM_RBUTTONDOWN,WM_RBUTTONUP 一个指向 MSLLHOOKSTRUCT 的指针WH_MSGFILTER(-1) 监
23、 视 一 些 如 同 输 入框 , 消息框 , 菜单 , 滚动条的事件 (对话框、消息框、菜单或滚动条输入消息 钩子) MessageProc MSGF_DIALOGBOX 消息框或者对话框产生指向 MSG 结构的指针MSGF_MESSAGEBOX ? MSGF_MENU 菜单条产生MSGF_SCROLLBAR 滚动条产生MSGF_NEXTWINDOW 由于用户摁下组合键 以激活另一个窗口而产生MSGF_MAX ? MSGF_USER ? MSGF_DDEMGR 动态数据交换管理库( Dynamic Data Exchange Management Library (DDEML)正 等 一 个
24、 同 步 处 理 结 束 时 产 生 , 详 情 参 见 Dynamic Data Exchange Management Library WH_SHELL(10) 监视对程序的 Shell 操作 ( 外壳 钩子) ShellProc HSHELL_ACCESSIBILITYSTATE 对 Windows NT5.0 或以上版本有效 , 指示可访问性 已被改变ACCESS_FILTERKEYS,ACCESS_MOUSEKEYS ,ACCESS_STICKYKEYS HSHELL_ACTIVATESHELLWINDOW shell应当激活其主窗口HSHELL_APPCOMMAND 用户完成了输入
25、一个指令( 例如按下了一个关键的按钮或键) 而且应用程序没有处理被产生的WM_APPCOMMAND 消息见 WM_APPCOMMAND参数见 WM_APPCOMMAND参数HSHELL_GETMINRECT Windows 95 only: 一个窗口正在被最小化或者最大化, 系统需要该窗口被最小化时的矩形坐标最小化或最大化窗口的句柄指向该 RECT 结构的指针HSHELL_LANGUAGE Windows 95 only: 键盘语言被改变或者一个新的键盘布局被加载窗口的句柄键盘布局的句柄HSHELL_REDRAW Windows 95 only: 一个窗口在任务条上的标题已被重画重画窗口的句柄
26、窗口正在闪现为TRUE, 否为 FALSE 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - HSHELL_TASKMAN Windows 95 only: 用户已选择其任务列表. 一个提供了任务的列表的shell应用程序当返回TRUE, 以阻止 Windows开始 ( 执行)其任务列表HSHELL_WINDOWACTIVATED Windows 95 only: 激活状态已被转移给一个不同的顶层无属性主窗口激活窗口的句柄窗口是全
27、屏模式为TRUE, 否为 FALSE. HSHELL_WINDOWCREATED 一个顶层的窗口已被创建. 在调用钩子函数的时候, 窗口存在创建窗口的句柄HSHELL_WINDOWDESTROYED 一个顶层的窗口即将销毁. 在调用钩子函数的时候. 窗口仍然存在销毁窗口的句柄HSHELL_WINDOWREPLACED 一个顶层的窗口位置改变, 在调用钩子函数的时候, 窗口位置已改变被取代窗口的句柄取代窗口的句柄WH_SYSMSGFILTER(6) 监 视 一 些 如 同 输 入框 , 消息框 , 菜单 , 滚动条的系统事件 ( 系统消息 钩子 ) SysMsgProc 同 WH_MSGFILTER 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -