MFC扫雷外挂的编程

扫雷外挂的编程:(http://download.csdn.net/detail/nuptboyzhb/4134953

编程思路:找到游戏窗口(FindWindow)、获得窗口进程(GetWindowThreadProcessId)、打开进程(OpenProcess)、查询游戏棋盘的基地址(CE工具)、读取棋盘在内存的数据(ReadProcessMemory)、判断数据类型(CE工具)、移动光标(SetCursorPos)及模拟鼠标消息(mouse_event)

编程流程:

1. 新建一个基于对话框的应用程序;

2. 增加一个按钮控件,为按钮控件添加事件处理

3. 编辑代码如下:(有具体说明)

// TODO: Add extra validation here

byte chessdata[16][32];//定义全局变量,记录棋盘数据

int flag=1;

HWND gameh;

gameh=::FindWindow(NULL,"扫雷");//参看游戏的标题.可以用vc6.0自带的Spy++工具查看

if (!gameh)

{

MessageBox("你还没有打开游戏!","提示",MB_OK);

return;

}

DWORD processid;

GetWindowThreadProcessId(gameh,&processid);//获得游戏的进程ID

HANDLE processH=OpenProcess(PROCESS_ALL_ACCESS,false,processid);//打开进程

LPCVOID pbase=(LPCVOID)0x01005361;//游戏棋盘的基地址(CE工具查询得到)

LPVOID nbuffer=(LPVOID)chessdata;

ReadProcessMemory(processH,pbase,nbuffer,32*16,NULL);//将棋盘的数据读入到nbuffer缓冲区

RECT r1;

::GetWindowRect(gameh,&r1);//获得客户区的大小

SetCursorPos(r1.left+30,r1.top+3);//移动光标到游戏的标题框

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//模拟鼠标的按下和抬起,目的是选中游戏

//以下是棋盘各个点的数据

for(int y=0;y<16;y++)

{

for(int x=0;x<32;x++)

{

if(chessdata[y][x]==143)//如果数据是143,说明是‘雷’;143是通过CE工具查询的到的

{

SetCursorPos(r1.left+24+16*x,r1.top+111+16*y);//将光标移动值该点

if(flag)//每隔一个雷,按下鼠标右键

{

mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);

flag=0;

}

mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);//按下鼠标右键

mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);//抬起鼠标右键

}

}

}

代码地址:http://download.csdn.net/detail/nuptboyzhb/4134953

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值