VB 读取内存数据时为什么 超过一30000几就变为负的 读取不正确了
悬赏分:20 - 解决时间:2007-2-27 14:11
我读取的是一个游戏的金钱数据
为什么当钱大于30000的时候读取就不正确了
要定义什么类型的数据
可我什么类型的数据我都试过了
可结果还是一样 Dim NowMoney As Long
Dim DiZhi As Long Private Sub Timer1_Timer()
NowMoney = ncnr(DiZhi)
Label1.Caption = NowMoney
End Sub 请各位高手帮帮忙..这是为什么??? 有位高手回答:
因为你用的ncnr函数的返回值是整型的,所以你能读取低2个字节的数据,超过32768就不正确了。
读4字节的相应函数你可以查下,我是不知道名字
不过就算用ncnr函数也可以实现的
NowMoney = ncnr(DiZhi) +ncnr(DiZhi+2)*32768 应该就可以。
就是等于是把你的高位读出来,再乘上相应的单位32768,再加上低位,不就是相当于读出那4字节的长整型了么 但是我把NowMoney = ncnr(DiZhi)改成了NowMoney = ncnr(DiZhi) +ncnr(DiZhi+2)*32768 可还是老样....是不是还要改什么???
另外想问一下还有没有别的方法可以读取到内存数据大于32768的 越大越好....还有什么读取内存4字节的函数???拜托各位了..帮帮忙!!!!
悬赏分:20 - 解决时间:2007-2-27 14:11
我读取的是一个游戏的金钱数据
为什么当钱大于30000的时候读取就不正确了
要定义什么类型的数据
可我什么类型的数据我都试过了
可结果还是一样 Dim NowMoney As Long
Dim DiZhi As Long Private Sub Timer1_Timer()
NowMoney = ncnr(DiZhi)
Label1.Caption = NowMoney
End Sub 请各位高手帮帮忙..这是为什么??? 有位高手回答:
因为你用的ncnr函数的返回值是整型的,所以你能读取低2个字节的数据,超过32768就不正确了。
读4字节的相应函数你可以查下,我是不知道名字
不过就算用ncnr函数也可以实现的
NowMoney = ncnr(DiZhi) +ncnr(DiZhi+2)*32768 应该就可以。
就是等于是把你的高位读出来,再乘上相应的单位32768,再加上低位,不就是相当于读出那4字节的长整型了么 但是我把NowMoney = ncnr(DiZhi)改成了NowMoney = ncnr(DiZhi) +ncnr(DiZhi+2)*32768 可还是老样....是不是还要改什么???
另外想问一下还有没有别的方法可以读取到内存数据大于32768的 越大越好....还有什么读取内存4字节的函数???拜托各位了..帮帮忙!!!!
即便读出的数值不大于32768 也不会对吧
不知道是否可以一位(8bit)一位的读出来呢,然后在转成你要的数值呢?
比如
NowMoney(1) as byte
NowMoney(0) = ncnr(DiZhi)
NowMoney(1) = ncnr(DiZhi+1)
偶对数据组不是很会用??要怎么声明它??
我把我的Dim NowMoney As Long 改为了NowMoney(1) as byte
把NowMoney = ncnr(DiZhi)改为了NowMoney(0) = ncnr(DiZhi)
NowMoney(1) = ncnr(DiZhi+1)
结果不能运行....
在NowMoney(1) as byte出现编辑错误:类型块外的语句无效.
还需要改什么吗??数据组要怎么声明
Dim hwnd As Long
Dim pid As Long
Dim pHandle As Long
hwnd = FindWindow(vbNullString, Text7.Text)
GetWindowThreadProcessId hwnd, pid
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
ReadProcessMemory pHandle, lpADDress, ByVal VarPtr(ncnr), 4, 0&
CloseHandle hProcess
End Function
俺的ncnr函数是这样写的