网上很多读取内存的代码,大部分都像下面这样的,但我觉得不大合理主要是调用GetMemoryData这个函数,读一次,就要打开进程句柄,然后再关闭一次
OpenProcess
CloseHandle pHandle
有时候要读几十次,这样就连续的打开关闭很多次,似乎不大合理,不知道我这样的认为是否正确?
我觉得修改成打开一次,然后直到不需要读取,再关闭Private Function GetMemoryData(lpADDress As Long) As Long
Dim hwnd As Long
Dim pid As Long
Dim pHandle As Long
hwnd = FindWindow(vbNullString, "欢乐斗地主")
GetWindowThreadProcessId hwnd, pid
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
ReadProcessMemory pHandle, ByVal lpADDress, ByVal VarPtr(GetMemoryData), 2, 0&
CloseHandle pHandle
End Function
OpenProcess
CloseHandle pHandle
有时候要读几十次,这样就连续的打开关闭很多次,似乎不大合理,不知道我这样的认为是否正确?
我觉得修改成打开一次,然后直到不需要读取,再关闭Private Function GetMemoryData(lpADDress As Long) As Long
Dim hwnd As Long
Dim pid As Long
Dim pHandle As Long
hwnd = FindWindow(vbNullString, "欢乐斗地主")
GetWindowThreadProcessId hwnd, pid
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
ReadProcessMemory pHandle, ByVal lpADDress, ByVal VarPtr(GetMemoryData), 2, 0&
CloseHandle pHandle
End Function
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货