本教程面向有C\C++基础的人,最好还要懂一些Windows编程知识
代码一律用Visual Studio 2013编译,如果你还在用VC6请趁早丢掉它...
写这个教程只是为了让玩家更好地体验所爱的单机游戏,顺便学到些逆向知识,我不会用网络游戏做示范,请自重

本章内容主要是认识钩子(hook)

(微软的解释:)钩子(hook)是一种截获事件的机制,一个截获某种事件的函数叫做钩子过程(hook procedure),钩子过程可以处理它接收的每个事件,然后可以改变或取消这个事件

微软提供了API来实现一些钩子:

// 安装钩子,参数是钩子类型,钩子过程,钩子过程所在模块句柄,钩子的目标线程ID
// 如果dwThreadId是0则会安装全局钩子(截获所有进程所有线程的事件)
// 这时除了几种钩子类型,其他的必须把钩子过程写在DLL中,系统会把这个DLL注入到其他进程(本章不讲)
// 返回钩子句柄
HHOOK WINAPI SetWindowsHookEx(
  _In_ int       idHook,
  _In_ HOOKPROC  lpfn,
  _In_ HINSTANCE hMod,
  _In_ DWORD     dwThreadId
// 卸载钩子,参数是钩子句柄
BOOL WINAPI UnhookWindowsHookEx(
  _In_ HHOOK hhk
// 把事件传递给下一个钩子
LRESULT WINAPI CallNextHookEx(
  _In_opt_ HHOOK  hhk,
  _In_     int    nCode,
  _In_     WPARAM
本章内容主要是认识钩子(hook)(微软的解释:)钩子(hook)是一种截获事件的机制,一个截获某种事件的函数叫做钩子过程(hook procedure),钩子过程可以处理它接收的每个事件,然后可以改变或取消这个事件
翻MSDN可知, 鼠标 钩子 类型有两个,一个是WH_MOUSE,另一个是WH_MOUSE_LL, 至于它们的区别,百度了一下: 1.WH_MOUSE只能监控 钩子 所在模块的 鼠标 事件。 2.WH_MOUSE_LL可以截获整个系统所有模块的 鼠标 事件。 ---------------------------------------------------------------------------
本人往后博客说明,为了博客的美观好看,同时兼顾实用,我会先贴代码截图,后面再附加代码内容(可以拷贝的,代码没错,还是报出错了,注意下格式) 相信很多朋友在寻找关于c++获取 键盘 鼠标 事件代码时,网上好多代码都是不完善的, 遇到如下情况: 例如1:明明写了 鼠标 左键点击打印一句话, 鼠标 左键点击要么是清屏要么就看不到打印的话,只有在按下 鼠标 中间后点击 鼠标 左键会有一次输出打印 例如2: 鼠标 点击,不管是左键还是右键点击有效果,但是无法判断是单机还是双击或者是 鼠标 滚轮滚动