我用ReadProcessMemory函数想读出QQ对对碰游戏的棋盘数组的数据可是输出的却是一个地址,但是用同样的方法读取座位号的基址就可以正确输出作为号,所以想请教一下大家这是什么原因,以下是代码:出问题的那一部分我变成绿色了。
#include "windows.h"
#include <iostream.h>
class jubing
{
public:
HWND ctjubing; //定义一个HWND(也是一种句柄)类型的变量用来存放窗体句柄,这里千万别搞错了
DWORD pid; //存放进程id
HANDLE jcjubing; //定义一个HANDLE(句柄)类型的变量用来存放进程句柄,这里千万别搞错了
int zwh; //定义一个用来保存座位号的变量
int chuangtijubing(); //在类里面声明一个成员函数获得窗体句柄(函数的定义部分在下面)
int jinchengid(); //在类里面声明一个成员函数获得进程ID (函数的定义部分在下面)
int jinchengjubing(); //在类里面声明一个成员函数获得进程句柄(函数的定义部分在下面)
int zuoweihao(); //在类里面声明一个成员函数获得座位号 (函数的定义部分在下面)
};
///
///
//类成员函数的定义部分
jubing::chuangtijubing() //上面声明的函数这里写定义部分(返回窗体句柄)
{
ctjubing = FindWindow(NULL,"对对碰角色版"); //获取窗体句柄
return 1;
}
jubing::jinchengid() //上面声明的函数这里写定义部分(返回进程ID)
{
GetWindowThreadProcessId(ctjubing,&pid); //获取进程ID
return 1;
}
jubing::jinchengjubing() //上面声明的函数这里写定义部分(返回进程句柄)
{
jcjubing = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid); //返回进程句柄
return 1;
}
jubing::zuoweihao() //上面声明的函数这里写定义部分(返回座位号)
{
ReadProcessMemory(jcjubing,(int *)0x47c9d4,&zwh,4,NULL); //该函数用来返回座位号
return 1;
}
///
///
bool qipanshuzu() //自定义函数实现输出棋盘数组
{
jubing a; //实例化一个类对象
a.chuangtijubing(); //取得窗体句柄
a.jinchengid();//取得进程id
a.jinchengjubing();//取得进程句柄
a.zuoweihao(); //取得座位号
cout<<a.zwh<<endl; //输出座位号
//int shiji;
int qipanshuzu[8][8];
if ((a.zwh == 0) && (a.ctjubing != NULL)) //如果座位号返回值为0并且窗体句柄不为空的话
{
ReadProcessMemory(a.jcjubing,(int *)0x479418/*0x479418是棋盘数组的基址*/,&qipanshuzu,200,0); //读取棋盘数组
cout<<qipanshuzu<<endl; //输出座位号
}
return 0;
}
int main()
{
qipanshuzu(); //调用棋盘数组(自定义函数)
return 0;
}
///
///