采用ReadProcessMemory如何读取内存?
程序A想获取程序B中类名为TDBGridE的控件内容。通过SENDMESSAGE发送消息获取不了,然后就采用ReadProcessMemory来读取。可是为什么读取不到数据?
采用SENDMESSAGE代码如下
//定义类名变量
string s_ipclassname
//定义类名的长度
ulong u_classcount = 100,u_returncount
//定义一个变量用来存储表格的句柄
ulong u_varhwnd
//得到句柄后进行循环得到类名
do while u_childhwnd> 0
//得到下一个控件的句柄
u_childhwnd = getwindow(u_childhwnd,hw_next)
//得到类名
u_returncount = GetClassName(u_childhwnd,s_ipclassname,u_classcount)
if s_ipclassname = 'TDBGridE' then
//将得到的表格句柄赋值给另外一个变量
u_varhwnd = u_childhwnd;
u_childhwnd= 0
end if
loop
采用READ代码如下:
//查找创建该窗口的PID(进程号) :u_ghwndID
ulong u_ghwndID
//得到进程
GetWindowThreadProcessId(u_hwnd, u_ghwndID)
//得到进程句柄
ulong u_pidhwnd
u_pidhwnd = OpenProcess(16,0,u_ghwndID)
//读取进程的空间数据
ulong hProcess,n,Address
blob lpBuffer
lpBuffer=blob(string(space(4)))
Address=400000
ReadProcessMemory(u_pidhwnd,Address,lpBuffer,4,n)
messagebox("",len(lpBuffer))
lpBuffer返回8
[解决办法]
你需要知道数据存放在那个程序B的位置,才能用ReadProcessMemory去读取