首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

采用ReadProcessMemory怎么读取内存

2013-06-26 
采用ReadProcessMemory如何读取内存?程序A想获取程序B中类名为TDBGridE的控件内容。通过SENDMESSAGE发送消

采用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去读取

热点排行