内存教程。dm.ReadInt()
函数简介:
读取指定地址的整数数值,类型可以是8位,16位 或者 32位
函数原型:
long = ReadInt(hwnd,addr,type)
参数定义:
hwnd 整形数: 指定搜索的窗口句柄或者进程ID. 默认是窗口句柄.如果要指定为进程ID,需要调用SetMemoryHwndAsProcessId()
addr 字符串: 用字符串来描述地址,类似于CE的地址描述,数值必须是16进制,里面可以用[ ] + -这些符号来描述一个地址。+表示地址加,-表示地址减。模块名必须用<>符号来圈起来
例如:
1. "4DA678" 最简单的方式,用绝对数值来表示地址
2. "<360SE.exe>+DA678" 相对简单的方式,只是这里用模块名来决定模块基址,后面的是偏移
3. "[4DA678]+3A" 用绝对数值加偏移,相当于一级指针
4. "[<360SE.exe>+DA678]+3A" 用模块定基址的方式,也是一级指针
5. "[[[<360SE.exe>+DA678]+3A]+5B]+8" 这个是一个三级指针
总之熟悉CE的人 应该对这个地址描述都很熟悉。
type 整型数。
整数类型,取如下数值。
0 : 32位有符号
1 : 16 位有符号
2 : 8位有符号
3 : 16位无符号
4 : 8位无符号
返回值:整型数。
返回值,是ReadInt()读取到的数值。
如果要想知道函数是否执行成功,请查看GetLastError函数.
示例:
var value = dm.ReadInt(hwnd,"4DA678",0)
messagebox(value)
参数2的地址,必须是字符串。
参数2的数值,使用16进制数值。
在TC中,参数2的格式,使用 字符串格式化() 来获取。
"使用字符串连接符" & "来拼接"。
示例:
//下载dm.dll,并添加到 项目管理,资源。
var address植物, hwnd, dm
功能 植物类()
var ret = 注册插件("rc:dm.dll", 真)
traceprint("插件。注册情况:" & ret)
dm = com("dm.dmsoft")
hwnd = dm.FindWindow("", "窗口标题名")
if(hwnd == 0)
messagebox("窗口未开启。", "提示")
end
//
address植物 = dm.ReadInt(hwnd, "[[006A9EC0]+768]+AC", 0)
var 当前植物数量 = dm.ReadInt(hwnd, "[[006A9EC0]+768]+BC", 0)
当前植物数量 = 当前植物数量 + 10
//就算10个植物被连续去掉,处在最后面的植物对象 也能遍历到.
//
for(var i = 0; i < 当前植物数量; i++)
var offset3种类 = #24 + # 14C * i //#14C * i为下一个植物对象。i从0--当前植物数量。
var address3种类 = address植物 + offset3种类
var str_address = 字符串格式化("%X", address3种类)
var 植物代号 = dm.ReadInt(hwnd, str_address, 0)
if(植物代号 == 47)
traceprint("植物数组下标:" & i &",转换为16进制:" & 字符串格式化("%X", i))
end
end
结束
函数简介:
读取指定地址的整数数值,类型可以是8位,16位 或者 32位
函数原型:
long = ReadInt(hwnd,addr,type)
参数定义:
hwnd 整形数: 指定搜索的窗口句柄或者进程ID. 默认是窗口句柄.如果要指定为进程ID,需要调用SetMemoryHwndAsProcessId()
addr 字符串: 用字符串来描述地址,类似于CE的地址描述,数值必须是16进制,里面可以用[ ] + -这些符号来描述一个地址。+表示地址加,-表示地址减。模块名必须用<>符号来圈起来
例如:
1. "4DA678" 最简单的方式,用绝对数值来表示地址
2. "<360SE.exe>+DA678" 相对简单的方式,只是这里用模块名来决定模块基址,后面的是偏移
3. "[4DA678]+3A" 用绝对数值加偏移,相当于一级指针
4. "[<360SE.exe>+DA678]+3A" 用模块定基址的方式,也是一级指针
5. "[[[<360SE.exe>+DA678]+3A]+5B]+8" 这个是一个三级指针
总之熟悉CE的人 应该对这个地址描述都很熟悉。
type 整型数。
整数类型,取如下数值。
0 : 32位有符号
1 : 16 位有符号
2 : 8位有符号
3 : 16位无符号
4 : 8位无符号
返回值:整型数。
返回值,是ReadInt()读取到的数值。
如果要想知道函数是否执行成功,请查看GetLastError函数.
示例:
var value = dm.ReadInt(hwnd,"4DA678",0)
messagebox(value)
参数2的地址,必须是字符串。
参数2的数值,使用16进制数值。
在TC中,参数2的格式,使用 字符串格式化() 来获取。
"使用字符串连接符" & "来拼接"。
示例:
//下载dm.dll,并添加到 项目管理,资源。
var address植物, hwnd, dm
功能 植物类()
var ret = 注册插件("rc:dm.dll", 真)
traceprint("插件。注册情况:" & ret)
dm = com("dm.dmsoft")
hwnd = dm.FindWindow("", "窗口标题名")
if(hwnd == 0)
messagebox("窗口未开启。", "提示")
end
//
address植物 = dm.ReadInt(hwnd, "[[006A9EC0]+768]+AC", 0)
var 当前植物数量 = dm.ReadInt(hwnd, "[[006A9EC0]+768]+BC", 0)
当前植物数量 = 当前植物数量 + 10
//就算10个植物被连续去掉,处在最后面的植物对象 也能遍历到.
//
for(var i = 0; i < 当前植物数量; i++)
var offset3种类 = #24 + # 14C * i //#14C * i为下一个植物对象。i从0--当前植物数量。
var address3种类 = address植物 + offset3种类
var str_address = 字符串格式化("%X", address3种类)
var 植物代号 = dm.ReadInt(hwnd, str_address, 0)
if(植物代号 == 47)
traceprint("植物数组下标:" & i &",转换为16进制:" & 字符串格式化("%X", i))
end
end
结束