VB读取内存,高手们来分析一下这样是否科学合理?
网上很多读取内存的代码,大部分都像下面这样的,但我觉得不大合理
主要是调用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
[解决办法]
句柄打开关闭的操作时间是可以忽略不计的。
做软件需要注意避免的是资源的占用和浪费,句柄也是资源,所以封装是个好办法,就像数据库连接,是一个道理。