Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByRef lpBaseAddress As Object, ByVal
lpBuffer As Object, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Intege
其中的lpBuffer要为ByVal,我用ByRef也试过,也不行,可以返回到读到的字节,可就是没有内容。。
Dim ph As Integer
Dim buffer(200) As Byte
Dim bytesRead As Integer
ph = OpenProcess(PROCESS_ALL_ACCESS, False, 1832)
'1832是一个正在运行的程序,403000里面有数据
If ph Then
h = ReadProcessMemory(ph, &H403000, buffer, buffer.Length, bytesRead)
已经搞定,感谢freecat
ReadProcessMemory这样声明。
把lpBaseAddress声明为 ByVal:
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByVal lpBuffer() As Byte, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Dim ph As Integer
Dim buffer(200) As Byte
Dim bytesRead As Integer
ReadProcessMemory(ph, &H403000, buffer, buffer.Length,bytesRead)