昨天没时间试,简单猜测一下吧。
Private Sub Command1_Click()
Dim i As Byte , Data As Byte , MyStr As String*1
For i=0 To 255
Data=i
WriteProcessMemory MyProcess, Address, Data, 1, 0&
ReadProcessMemory MyProcess, Address, MyStr, 1, 0&
Data=Asc(MyStr)
Debug.Print Data
Next i
End Sub
首先i不应该定义为byte类型,不然循环会溢出。
MyStr应该是个引用,所以把MyStr的地址传给ReadProcessMemory恐怕会有问题,不过你前127个倒是显示出来了,估计还是跟String内部实现机制有关,String内部可能是unicode存储的,对高于127的字符需要特别处理,这个仅是猜测,但是MSDN中对String的描述中有一条就是不要用于任何跟数值有关的地方。你用另外一个byte类型的变量传给ReadProcessMemory不行吗?