1
HOOK
By Y-Z-F QQ:976691141
1-WH_KEYBOARD
KeyboardProc 钩子程序是一个线程钩子或系统钩子被SetWindowsHookEx函数调用.一个一个用程序无论何时调用 GetMessage或PeekMessage函数之前,并且是键盘消息(WM_KEYUP 或 WM_KEYDOWN )。
格式:
LRESULT CALLBACK KeyboardProc( int code,
WPARAM wParam, LPARAM lParam );
参数: code
指定一个标示让钩子程序用于确定如何处理消息,如果标示小于0,钩子过程必须通过CallNextHookEx函数,并且必须返回 CallNextHookEx 函数返回的参数。此参数可以被设置为下参数之一:
HC_ACTION
wParam 和 lParam 参数包含击键消息的信息。
HC_NOREMOVE
wParam 和 lParam 参数包含击键消息的信息,并且击键消息没有从消息队列中移除。(一个应用程序调用PeekMessage函数,指定 PM_NOREMOVE 标志 )
wPram
指定产生击键消息的那个按键的虚拟键标示
lParam
指定重复次数,扫描码,扩充标记,环境代码,早先的关键标记,和过渡状态标记。需要查看更多关于lParam参数的消息请查看 Keystroke Message Flags,这个参数可以被设置为一个或多个以下值.
2
0~15
指定重复次数。它的值是用户按住键的击键次数的重复结果。
16~23
指定扫描码,这个值依赖于 OEM. 24
指定这个键是否为一个扩充键,比如一个函数键或一个键在数字小键盘.这个值为1当这个键是一个扩充键,否则为0.
25~28 保留 29
指定环境代码.如果ALT键按下这个值为1;否则为0. 30
指定早先的关键标记.如果键被按下在消息发送前,则值为1。如果键弹起则为0. 31
指定过渡状态标记.如果键被安下,则值为0,如果释放则为1.
2-WH_CALLWNDPROC
系统调用这个函数在消息到达线程之前. 样式
LRESULT CALLBACK CallWndProc( int nCode,
WPARAM wParam, LPARAM lParam );
参数:
nCode
指定是否钩子函数必须处理消息.如果nCode 为 HC_ACTION,钩子程序必须处理消息.如果nCode小于0,钩子程序必须使用CallNextHookEx函数,并且必须返回CallNextHookEx的返
3
回值.
wParam
指定消息是否为当前线程发送.如果消息为当前线程发送,并且为非0;否则为0.
lParam
指向一个 CWPSTRUCT 结构体包含消息的细节.
返回值
如果nCode 小于0,钩子程序必须返回CallNextHookEx的返回.
如果nCode 大于等于 0,建议使用CallNextHookEx,并且返回其返回的值;另外,其他程序使用了 WH_CALLWNDPROC 钩子将不会收到钩子通知和行为可能造成错误的结果。如果钩子程序没有使用CallNextHookEx,返回值应该为0.
3-WH_CBT
系统调用此函数在激活,创建,销毁,最小化,最大化,移动,调整一个窗口,或完成一个系统命令;在从系统消息队列中移除一个鼠标或键盘事件之前,在设置的键盘焦点之前,或者在同步系统消息队列之前.一个计算机基本操作应用使用这个钩子从系统中捕获有用的通知. 样式
LRESULT CALLBACK CBTProc( int nCode,
WPARAM wParam, LPARAM lParam );
参数:
nCode
指定一个钩子程序如何去处理此消息的标示.如果nCode小于0,则钩子程序必须让此消息通过,使用CallNextHookEx函数,并且返回值为此函数的返回值.这个参数可以被设置为以下值中的一种.
HCBT_ACTIVATE
该系统将激活一个窗口
HCBT_CLICKSKIPPED
4
系统已经从系统消息队列中取出一个鼠标消息.根据获得这个钩子标示,一个CBT钩子程序必须安装一个 WH_JOURNALPLATBACK 钩子去响应鼠标消息.
HCBT_CREATEWND
一个窗口被创建.系统将会调用这个钩子程序在WM_CREATE或WM_NCCREATE消息发送到窗口之前.如果钩子程序返回一个非0的值,系统将会销毁窗口;CreateWindow返回NULL,但是 WM_DESTROY 消息不会被发送到窗口.如果钩子程序返回0,窗口正常创建.
在处理 HCBT_CREATEWND 通知的同时,窗口已经被创建,但是它最后的尺寸和坐标没有被定义,并且他的父窗口可能没有被确定.它有可能发送消息到新创建的窗口,虽然尚未收到WM_NCCREATE或WM_CREATE消息.它也有可能去改变新创建的矿口的z轴坐标通过修改CMT_CREATEWND结构体的hwndInsertAfter成员.
HCBT_DESTROYWND 一个窗口被销毁
HCBT_KEYSKIPPED
系统已经从系统消息队列中取出一个键盘消息.通过获得这个钩子标示,一个CBT程序苜蓿安装 WH_JOURNALPLAYBACK钩子程序去响应键盘消息.
HCBT_MINMAX
一个窗口被最大化或最小化.
HCBT_MOVESIZE
一个窗口被移动或尺寸发生变化.
HCBT_QS
该系统从系统消息队列中检查一个WM_QUEUESYNC消息.
HCBT_SETFOCUS 一个窗口收到键盘焦点
HCBT_SYSCOMMAND
一个系统命令被执行.这个允许一个 CBT 程序去阻止通过菜单热键的任务切换.
wParam
依赖于nCode参数,更详细的请看备注部分.
lParam
依赖于nCode参数,更详细的请看备注部分.
返回值
返回值由钩子程序决定,也决定系统是否同意或阻止这些操作.对于操作对应于以下 CBT 钩子标示,这个返回值必须为 0 同意操作或为 1 阻止操作.
5
HCBT_ACTIVATE HCBT_CREATEWND HCBT_DESTROYWND HCBT_MINMAX HCBT_MOVESIZE HCBT_SETFOCUS
HCBT_SYSCOMMAND
对于操作对应于以下 CBT 钩子标示,返回值被忽略.
HCBT_CLICKSKIPPED HCBT_KEYSKIPPED HCBT_QS 备注
HCBT_ACTIVATE
wParam: 指定被激活窗口的句柄.
lParam: 指定一个指向 CBTACTIVATESTRUCT 结构体,包含激活窗口的句柄和指定窗口是否由于鼠标点击激活状态被改变.
HCBT_CLICKSKIPPED
wParam: 指定从系统消息队列中取出的鼠标消息
lParam: 制定一个指向 MOUSEHOOKSTRUCT 结构体,包含点击测试标示和鼠标消息所属的窗口句柄.HCBT_CLICKSKIPPED 被发送到 CBTProc 钩子函数只有当 WM_HOUSE 钩子被安装,更多点击测试标示请查看 WM_NCHITTEST.
HCBT_CREATEWND
wParam: 指定新窗口的句柄
lParam: 指定一个指向 CBT_CREATEWND 结构体,包含了窗口初始化参数.这个参数包含的窗口的坐标和尺寸.通过改变这些参数,一个 CBTProc 钩子程序可以设置窗口的初始大小和位置.
HCBT_DESTROYWND
wParam: 指定被销毁的窗口句柄 lParam: 未定义,必须为0
HCBT_KEYSKIPPED
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育钩子函数简介 全文阅读和word下载服务。
相关推荐: