版本 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()是获取一个应用程序或动态链接库的模块句柄。。不要想太多…
第二个是呼叫下一个钩子。
第三个是创建钩子
4:卸载钩子
5:返回坐标处的窗口句柄
6:拷贝内存
然后新建一个自定义数据类型。等下用的。
.版本 2
.数据类型 MOUSEHOOKSTRUCT
.成员 pt, POINT
.成员 hwnd, 整数型
.成员 wHitTestCode, 整数型
.成员 dwExtraInfo, 整数型
.数据类型 POINT
.成员 X, 整数型
.成员 Y, 整数型
然后可以开始写代码了。。。创建2个程序集变量。用来保存键盘钩子和鼠标钩子的代号的
。 然后创建2个回调函数。鼠标钩子和键盘钩子的回调函数。返回值都是 整数型。都有三个参数。
。接下来可以写_启动窗口_创建完毕()的代码了。
要创建2个钩子一个键盘钩子。一个鼠标钩子。首先介绍一下创建钩子的命令。
第一个参数是钩子类型。全局鼠标是14.键盘是13.第二个是子程序指针。。也就是提供刚才我们创建的那两个函数的指针。&是求指针符号。
第三是句柄。填GetModuleHandle(0)就行。第四个填0.
这是图。
然后开始弄回调函数。。先弄键盘钩子的。键盘钩子函数的第二个参数是状态。256按下。257弹起。参数三是键值的指针。注意。。只是指针。我们要把它换成键值。首先新建一个局部变量整数型的键值。然后需要这两个命令。
取字节集数据 (, , )
指针到字节集 (, )
首先是指针到字节集 (, ) 第一个参数是指针。填 参数三。 第二个填1。因为键值是一个整数。在字节集里占1位。
然后取字节集数据 第一个参数就是 指针到字节集 (参数三,1 ) 我们要取整数型的键值所以第二个参数填3.第三个不填
OK。这样键代码就被我们取出来了有了键值可以好好玩玩了
。
ok写完了代码。。不过别忘记。这个函数可是有返回值的。。返回什么呢?这么写
也就是呼叫下一个钩子。。
ok键盘弄完。弄弄鼠标的。同样。参数三里面有鼠标的坐标。参数二是类型。我只记得512是鼠标移动。513是左单击。具体你们可以调试输出一下参数二。然后看看参数值就懂了。首先我们要把鼠标的坐标取到吧?
现在就来取。
首先新建一个MOUSEHOOKSTRUCT类型的鼠标变量。。。这回自定义数据类型用上了。
然后开始写代码。这回就需要用上 CopyMemory()这个API了。拷贝内存用的
第一个参数填鼠标。。也就是我们刚才创的变量。第二个要填参数三。第三个填20.
然后坐标数据就在变量里了。 横坐标 在 鼠标.pt.x中 纵坐标在鼠标.pt.x。
知道了坐标。这下又可以好好玩玩了。
。这样鼠标一移动就调试输出坐标。
好啦。还是要 调用下一个钩子。
..然后还没完。。。不卸载钩子…可不行。
结束~好好玩玩吧…………