首先定义DLL。。作用备注里有。下面会详细说明。
.版本 2
.DLL命令 GetModuleHandle, 整数型, , "GetModuleHandleA", , 获取句柄
.参数
lpModuleName, 整数型
.DLL命令 CallNextHookEx, 整数型, , "CallNextHookEx", ,
下一个钩子
.参数 hhk, 整数型
.参数 nCode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.DLL命令 SetWindowsHookEx, 整数型, , "SetWindowsHookExA", ,
创建钩子
.参数 idHook, 整数型
.参数 lpfn, 子程序指针
.参数 hmod, 整数型
.参数 dwThreadId, 整数型
.DLL命令 UnHookWindowsHookEx, 逻辑型, , "UnhookWindowsHookEx",
, 卸载钩子
.参数 hhk, 整数型
.DLL命令 WindowFromPoint, 整数型, "user32",
"WindowFromPoint", ,
返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口 包含了指定点的窗口的句柄。如指定的点处没有窗口存在,则返回零
.参数 xPoint,
整数型, , x点值
.参数 yPoint, 整数型, , y点值;
.DLL命令 CopyMemory, , ,
"RtlMoveMemory", , 拷贝内存
.参数 Destination, MOUSEHOOKSTRUCT, 传址
.参数
Source, 整数型
.参数 Length, 整数型
GetModuleHandle()是获取一个应用程序或动态链接库的模块句柄。。不要想太多...
CallNextHookEx()调用下一个钩子
SetWindowsHookEx()创建钩子
UnHookWindowsHookEx()卸载钩子
WindowFromPoint()获取坐标处的窗口句柄
CopyMemory()拷贝内存。。也不要想太多。。这个不是主角....下面只出现1次。
然后定义2个数据类型。等下用到的
.版本 2
.数据类型 MOUSEHOOKSTRUCT .成员 pt, POINT .成员 hwnd, 整数型 .成员 wHitTestCode, 整数型 .成员 dwExtraInfo, 整数型
.数据类型 POINT .成员 X, 整数型 .成员 Y, 整数型
.然后可以开始写代码了。。
第一步创建2个程序集变量。用来存钩子的代号的。
接着就是创建钩子了。不创建怎么用呢。
.版本 2
.子程序 __启动窗口_创建完毕
键盘钩子 = SetWindowsHookEx (13, &键盘钩子回调函数, GetModuleHandle (0), 0) ' 创建钩子鼠标钩子 = SetWindowsHookEx (14, &鼠标钩子回调函数, GetModuleHandle (0), 0)
复制代码进去后我解释一下。setWindowsHookEx()大家都知道他是创建钩子用的。我来解释一下参数。1:钩子类型。不多说了。你一定也能看出来。键盘13.鼠标14.
第二个回调函数指针。。。说到这。首先创建2个函数函数名为:键盘钩子回调函数和鼠标钩子回调函数。
&是求子程序指针符号。
回调函数是钩子里最重要的东西。
。ok写完这两句后 至于剩下2个参数。我只知道全局的钩子都这么填。也许GetModuleHandle(0)是获取全局的句柄吧。。
.版本 2
.DLL命令 GetModuleHandle, 整数型, , "GetModuleHandleA", , 获取句柄
.参数
lpModuleName, 整数型
.DLL命令 CallNextHookEx, 整数型, , "CallNextHookEx", ,
下一个钩子
.参数 hhk, 整数型
.参数 nCode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.DLL命令 SetWindowsHookEx, 整数型, , "SetWindowsHookExA", ,
创建钩子
.参数 idHook, 整数型
.参数 lpfn, 子程序指针
.参数 hmod, 整数型
.参数 dwThreadId, 整数型
.DLL命令 UnHookWindowsHookEx, 逻辑型, , "UnhookWindowsHookEx",
, 卸载钩子
.参数 hhk, 整数型
.DLL命令 WindowFromPoint, 整数型, "user32",
"WindowFromPoint", ,
返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口 包含了指定点的窗口的句柄。如指定的点处没有窗口存在,则返回零
.参数 xPoint,
整数型, , x点值
.参数 yPoint, 整数型, , y点值;
.DLL命令 CopyMemory, , ,
"RtlMoveMemory", , 拷贝内存
.参数 Destination, MOUSEHOOKSTRUCT, 传址
.参数
Source, 整数型
.参数 Length, 整数型
GetModuleHandle()是获取一个应用程序或动态链接库的模块句柄。。不要想太多...
CallNextHookEx()调用下一个钩子
SetWindowsHookEx()创建钩子
UnHookWindowsHookEx()卸载钩子
WindowFromPoint()获取坐标处的窗口句柄
CopyMemory()拷贝内存。。也不要想太多。。这个不是主角....下面只出现1次。
然后定义2个数据类型。等下用到的
.版本 2
.数据类型 MOUSEHOOKSTRUCT .成员 pt, POINT .成员 hwnd, 整数型 .成员 wHitTestCode, 整数型 .成员 dwExtraInfo, 整数型
.数据类型 POINT .成员 X, 整数型 .成员 Y, 整数型
.然后可以开始写代码了。。
第一步创建2个程序集变量。用来存钩子的代号的。
接着就是创建钩子了。不创建怎么用呢。
.版本 2
.子程序 __启动窗口_创建完毕
键盘钩子 = SetWindowsHookEx (13, &键盘钩子回调函数, GetModuleHandle (0), 0) ' 创建钩子鼠标钩子 = SetWindowsHookEx (14, &鼠标钩子回调函数, GetModuleHandle (0), 0)
复制代码进去后我解释一下。setWindowsHookEx()大家都知道他是创建钩子用的。我来解释一下参数。1:钩子类型。不多说了。你一定也能看出来。键盘13.鼠标14.
第二个回调函数指针。。。说到这。首先创建2个函数函数名为:键盘钩子回调函数和鼠标钩子回调函数。
&是求子程序指针符号。
回调函数是钩子里最重要的东西。
。ok写完这两句后 至于剩下2个参数。我只知道全局的钩子都这么填。也许GetModuleHandle(0)是获取全局的句柄吧。。