Window:SetWindowsHookEx 特性

//当前进程钩子

m_hHook1 = ::SetWindowsHookEx(WH_GETMESSAGE, CallNextHookEx,NULL, 0);

//全局钩子

m_hHook1 = ::SetWindowsHookEx(WH_GETMESSAGE,
CallNextHookEx,AfxGetInstanceHandle(), 0);

备注:全局钩子,容易被其他程序占用,查看进程钩子PCHunter
这里写图片描述

知识点:使用Windows HOOK所需要的核心函数不多,只有四个:

HOOK 子程:HOOK的处理函数,如GetMsgProc, KeyboardProc等
1、SetWindowsHookEx():安装一个HOOK
HHOOK SetWindowsHookEx(
int idHook,
HOOKPROC lpfn,
HINSTANCE hMod,
DWORD dwThreadId
);

第一个参数idHook用来标识HOOK类型,比如鼠标信息用WH_MOUSE,键盘消息用WH_KEYBOARD等,更多参数和功能请查阅MSDN
第二个参数lpfn指向一个具体的HOOK子程,用于实际处理拦截的消息
第三个参数hMod用来标识HOOK子程所在的模块,如果是一个全局HOOK,则是一个载入内存的DLL句柄(使用GetModuleHandle得到);如果是一个内部线程HOOK,则为NULL即可。
第四个参数dwThread指明HOOK的范围,如果是0则表示监视运行在同一个窗口下的所有线程,否则指定一个具体的线程ID即可。

2、UnhookWindowsHookEx():卸载一个HOOK
BOOL UnhookWindowsHookEx(
HHOOK hhk
);

3、CallNextHookEx():调用HOOK链的下一个HOOK子程
LRESULT CallNextHookEx(
HHOOK hhk,
int nCode,
WPARAM wParam,
LPARAM lParam
);

这里的nCode需要我们填写传送个下一个HOOK子程的代码,如果是HC_ACTION,则wParam和lParam包含消息信息;如果是HC_NOREMOVE则wParam和lParam包含消息信息外,消息不能从消息队列中移除:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾荒的小海螺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值