VB读内存文本出错

来源:百度知道 编辑:UC知道 时间:2024/05/06 10:50:44
'这个是读取网游人物当前地图的语句,可是老是出错,并自动关闭
'我看了下,总是出错在“ReadProcessMemory hProcess, h, MapName, 10, 0&",我不知道是什么问题,难道不能读文本吗?
Dim MapName As String
Dim h As Long

hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
ReadProcessMemory hProcess, ByVal &H69CD64, h, 4, 0&
ReadProcessMemory hProcess, h, MapName, 10, 0&
CloseHandle hProcess
End If
txtMap = MapName

应该改为:
dim MapName as String * 10 (或任何大于10的整数)
ReadProcessMemory hProcess, ByVal &H69CD64, varPtr(h), 4, 0&
ReadProcessMemory hProcess, h, StrPtr(MapName), 10, 0&

Public Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
其中lpBuffer是指向变量的指针,如果是string类型,要用strPtr(变量名),而且要指定一个足够的长度;如果是其他变量,要用varptr(变量名)