TC官方合作论坛

 找回密码
 立即注册
查看: 1964|回复: 3

【hook教程】SetWindowsHookEx()

[复制链接]
发表于 2018-3-22 18:40:14 来自手机 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 剑仙十号 于 2018-3-22 19:18 编辑

【hook教程】SetWindowsHookEx()

http://msdn.microsoft.com
进入网址,搜索SetWindowsHookEx

进入网址,查看SetWindowsHookEx()说明。

网页文字:
WH_KEYBOARD_LL
13
Installs a hook procedure that monitors low-level keyboard input events. For more information, see the LowLevelKeyboardProc  hook procedure.
点击超链接
LowLevelKeyboardProc  ,查看结构体信息。

lParam [in]
Type: LPARAM
A pointer to a KBDLLHOOKSTRUCT  structure.
点击超链接,KBDLLHOOKSTRUCT ,查看结构体信息。

这些英文,搬到金山词霸牛津版,翻译下就有。
=======================================================
中文信息:
SetWindowsHookEx(),百度搜索:SetWindowsHookEx
keyboardproc,百度搜索:keyboardproc
回复

使用道具 举报

 楼主| 发表于 2018-4-21 18:27:43 来自手机 | 显示全部楼层
二楼,更新信息专用。
tc简单开发_爱好群:
433286131 (462/500)

tc简单开发_爱好群Ⅱ:
143358382 (192/500)

tc办公文本_爱好群:
612661895(29/500)

本群大神众多,新手众多。群文件内 资源海量。 希望新手 分享更多笔记,减少重复造轮子的时间。 好编程,齐学习,齐进步。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-21 18:27:54 来自手机 | 显示全部楼层
参数2:Hook子程地址。
Hook子程序,又叫Hook的回调函数。
SetWindowsHookEx()的参数2,必须填回调地址。在C++,回调函数名字,前面加取址符:&。

参数3:Hook的模块句柄
模块地址。模块句柄。实例句柄。
1.模块的概念
磁盘上的文件,不是模块。
装载到内存的文件镜像,才叫模块。
一个模块代表的是,一个运行中的exe文件或dll文件,用来代表这个文件中所有的代码和资源。

模块地址,是磁盘文件,装载到内存中的地址。
模块句柄,是产生这个模块时,系统分配的临时编号。
实例句柄,就是模块句柄。

模块与实例。
在Win16中,不同运行程序的地址空间并非完全隔离的,一个可执行文件运行后形成"模块"。
多次加载同一个可执行文件时,这个"模块"是公用的。为了区分多次加载的"拷贝",就把每个"拷贝"叫做实例。每个实例均用不同的"实例句柄"(hInstance)值来标识它们。

但在Win32中,程序运行时是隔离的,每个实例都使用自己私有的4 GB空间,都认为自己是惟一的,不存在一个模块的多个实例的问题。所以在Win32中,实例句柄就是模块句柄,但很多API原型中,用到模块句柄的时候使用的名称,还是沿用hInstance。
所以我们还是把变量名称取为hInstance。
回复 支持 反对

使用道具 举报

发表于 2018-6-1 22:43:30 | 显示全部楼层
剑仙十号 发表于 2018-4-21 18:27
参数2:Hook子程地址。
Hook子程序,又叫Hook的回调函数。
SetWindowsHookEx()的参数2,必须填回调地址。在 ...

能给个实例吗?楼主
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-6-27 06:39 , Processed in 0.032730 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表