一个老的单机游戏,想自己做一个修改器玩玩,
用FindWindow得到了窗口的句柄,就可以用ReadProcessMemory读内存地址的值了吗?
是不是还要到进程PID啊
不明白,指点一下

解决方案 »

  1.   

    ReadProcessMemory 是读取线程的内存的,根据 句柄 得到线程 ID。
      
      

  2.   

    通过窗体句柄得到进程ID
    GetWindowThreadProcessId()打开访问进程访问句柄
    OpenProcess()读取进程内存数据
    ReadProcessMemory()
      

  3.   

    不需要PID,只需要进程句柄就OK。
    因为每个进程都有自己的虚拟内存空间,因此需要用进程句柄来确定读取的唯一地址空间,
    当然读出来的内存地址都是虚拟地址,而不是真正的内存地址,而在这个大的虚拟地址空间中,
    又只有一部分是用户进程可访问的,大小由OS确定,如98的地址空间中的0x00000000--0x00400000,2g-4g也是不能访问的,用ReadProcessMemory()读取不可访问的内存时会返回0btw:这也是我最近学习的,发现要把其中搞明白牵涉到的东西很多,彻底搞明白实在是不容易啊
      

  4.   

    zswang的方法是正确的:用GetWindowThreadProcessId取得进程ID(第二个参数,不是返回值),然后用OpenProcess打开进程,得到进程句柄(Handle),然后就可以读内存了。