前面我们分别介绍了 WinPcap 编程接口以及封包数据分析的基本方法,对于我们的网游辅助(外挂)程序来说,实现以上内容,相当于给我们的程序安装上了眼睛和耳朵,使得它有能力对游戏中产生的数据做出反应,而这些反应具体来说就是实现对游戏人物的控制。这部分的内容其实按键精灵已经做得很不错了,而我们将要采用的方法也基本相同,无非就是通过发送鼠标和键盘消息来实现对游戏人物的控制!唯一不同的地方在于,我们能够实现针对具体游戏窗口发送,而按键精灵需要收费插件才能提供此功能!否则就只能将消息发送给获得焦点的窗口(本质上是将消息发送给了 Windows 桌面)。
1、搜索游戏窗口
Windows 系统是消息驱动的系统,任何一个操作都会触发一系列的消息,每一个窗口程序都有一个消息处理函数用于处理这些消息!使用一个程序去控制另外一个程序,最简单也是最安全的方法,就是发送消息给被控程序。要实现这个功能,第一步是要知道被控程序的主窗口句柄!Windows API 提供了一个函数可以用来完成这个工作,代码如下:
::PostMessage(hwnd, WM_RBUTTONDOWN, MK_RBUTTON, pos); //Click Right Mouse Button
::PostMessage(hwnd, WM_RBUTTONUP, 0, pos);
}
复制代码
3、窗口坐标系统
鼠标操作中有一个非常重要的参数,就是坐标,如果给的坐标不对,就无法准确打开游戏菜单,拾取道具等等。那么如何确定有效的坐标参数呢?有一个简便的方法就是使用QQ的窗口截图 + Windows 自带的画笔程序。以 Windows 自带的扫雷程序为例,步骤如下:
1)运行扫雷程序,使用QQ的截图功能将整个窗口截图;
2)将截图粘帖到画图程序中,将鼠标移动到扫雷游戏界面的左上角(见下图中粉红色的点),注意这里说的是游戏界面,而不是窗口!