第一范文网 - 专业文章范例文档资料分享平台

钩子函数简介

来源:用户分享 时间:2020-06-24 本文由倾国倾城却失妖娆 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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下载服务。

钩子函数简介 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1100583.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top