首页 >  知识中心 >  新闻详情

钩子函数 请教高手钩子函数的用法和作用

来源:朵拉利品网  |  2020-05-06 10:26:10

1, 请教高手钩子函数的用法和作用



Windows的钩子函数分两种,一种是全局的,一种是线程的。全局的钩子函数可以捕获任何应用程序的消息,但必须是标准的DLL才能实现,VB做不了。VB可以实现线程的,就是当前应用程序的消息,这对鼠标消息的捕636f70797a6431333335346166捉有影响。
SetWindowsHookEx定义如下:
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
idHook是钩子类型,如WH_KEYBOARD捕捉键盘消息,而WH_MOUSE捕捉鼠标消息。hmod用于全局钩子,VB要实现钩子,必须设为0。dwThreadId用于线程钩子VB中可以设置为App.ThreadID。lpfn为钩子函数,在VB中可以使用AddressOf获得钩子函数的地址。这个函数因为钩子类型不同而有所不同。如键盘钩子为:
Public Function KeyboardProc(ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
如果Code不为0,钩子函数必须调用CallNextHookEx,将消息传递给下面的钩子。wParam和lParam不是按键。

2, 回调函数 钩子函数 有什么区别



问得不清楚,所以不懂怎么回答这个区别。
所谓回调函数,一般就是把函数的地址作为参数传进去,让调用的函数在内部可以调用这个函数。
例子:
void CALLBACK fun(){...} 这是一个函数,回调函数
void AAA(int a, Fun* p); 这是一个普通函数,但第二个参数是fun
AAA(5, fun);
钩子函数,严格算起来,也算是回调函数的一种。但钩子函数是针对的截取的,当你使用了钩子之后,每当触发到相对应的消息,系统就会先“执行你写的回调函数”。
即原本是:系统-->;目标函数
使用钩子就变成:系统-->;你写的回调函数-->;目标函数
大概原理就是这样子。就不知道你对函数与钩子的了解水平如何了

3, 钩子函数的原理c/c++



我的个人理解:
钩子函数其实就是函数指针,系统或软件定义好一些钩子,而你来把这些钩子挂接起来!说白了就是有些动作系统需要针对不同的情况做不同的处理,此时就需要定义一个钩子。具体的操作由用户挂上的钩子函数实现.
比如:
#include "stdio.h"
void (*g_say_func)(void);
void regist_say( void (*pfunc)(void ) )
{
g_say_func = pfunc;
}
void humen_say()
{
printf("hello world!!! ");
}
void dog_say()
{
printf("wo wo !!! ");
}
void cat_say()
{
printf("miao miao!!!");
}
void say_hello()
{
g_say_func();
}
void main()
{
regist_say(dog_say); //注册钩子函数
say_hello();
}
以上纯粹是个人理解!

名词解释


钩子

钩子,草本植物。钩子为蔷薇科悬钩子属的植物。分布於朝鲜、北欧、俄罗斯、蒙古以及中国大陆的吉林、辽宁、黑龙江等地,生长於海拔1,200米的地区,多生於侧坡、林下以及沟旁,尚未由人工引种栽培。

Long

long关键字表示一种整型,该类型根据下表显示的大小和范围存储值。类型 范围 大小 .NETFramework类型 long -2,147,483,648 to 2,147,483,647 有符号 32位整数 所占4个字节(Byte) long long -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 有符号 64位整数 System. Int32 所占8个字节(Byte)

 
相关新闻
函数和库函数区别 初学c语言,函数库和库函数有什么区别,都是什么意思? 07-24
普通函数和成员函数的区别 成员函数和普通函数的所有区别 07-24
内联函数与外联函数的区别 内联函数和外联函数有什么区别 07-24
内函数和外函数关系 有关C语言的内部函数和外部函数的定义说明 07-24
成员函数和内联函数 类里面的成员函数与内联函数的区别 07-24
内联函数的关键字为 内联函数与普通函数的区别是什么 07-24
构造函数是内联函数吗 [转载]为什么内联函数,构造函数,静态成员函数不能为 07-24
区分内联函数 内联函数与普通函数的区别是什么 07-24
内联函数与重载函数 内联函数和 普通函数 宏定义的区别 07-24
内联函数优缺点 调用函数与内联函数的优劣? 07-24
相关产品
供应 LWG-3080 频率信号发生器 函数信号源 脉冲群发生器 05-21
厂家直销 不锈钢活动粘钩 金属强力钩子 免打孔卡通挂钩批发 06-18
金袖子线盒钩绑好的双钩鱼钩子线仕挂渔具垂钓用品不带倒刺金袖钩 08-01

大家都在看