我用WriteProcessMemory函数向一个应用程序的内存中写入了1个16进制数字,可是我在用内存读取函数读取那个地址时读出的值还是原来的数值(可以排除内存读取的数值没有错误,因为使用其他工具查看该内存地址的值和读取的值一样),WriteProcessMemory并没有起作用,但是我的程序和目标程序在运行中也没有出现任何异常或中断。现在贴入代码片断请各位高手解惑。hwd = FindWindow("try", "try")
GetWindowThreadProcessId hwd, pid
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess = 0 Then
MsgBox "不能打开进程", vbOKOnly, "提示"
CloseHandle hProcess
Unload Form1
Else
ReadProcessMemory hProcess, ByVal &H4E827C, Address1, 1, 0&
WriteProcessMemory hProcess, ByVal &H4E827C, &H20, 1, 0&
ReadProcessMemory hProcess, ByVal &H4E827C, Address2, 1, 0&
End If运行结果是Address1=0;Address2=0
WriteProcessMemory hProcess, ByVal &H4E827C, &H20, 1, 0&没有起作用。
GetWindowThreadProcessId hwd, pid
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess = 0 Then
MsgBox "不能打开进程", vbOKOnly, "提示"
CloseHandle hProcess
Unload Form1
Else
ReadProcessMemory hProcess, ByVal &H4E827C, Address1, 1, 0&
WriteProcessMemory hProcess, ByVal &H4E827C, &H20, 1, 0&
ReadProcessMemory hProcess, ByVal &H4E827C, Address2, 1, 0&
End If运行结果是Address1=0;Address2=0
WriteProcessMemory hProcess, ByVal &H4E827C, &H20, 1, 0&没有起作用。
返回为0则失败,查原因看GetLastError
...