以下代码经我测试没有问题.不过我想获得进程名为 abc.exe 的内存字符串,请问怎么处理呢?请给出实现代码.谢谢!Delphi 内存截取字符串 使用内存读取函数:ReadProcessMemory
procedure TForm1.Button1Click(Sender: TObject);
var
hProcess,iRead:Cardinal;
hgl:HGLOBAL;
Buffer: Pointer;
begin
memo1.Text :=''; //清空memo1.text中内容
GetMem(Buffer,1024); //申请内存空间1024字节用来存放字符串
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, false, GetCurrentProcessId);
// 读取内存字符串
if ReadProcessMemory(hProcess,Pointer($00148148),Buffer,1024,iRead) then
memo1.Lines.Add('Edit1.txt中的内容为:'+PChar(Buffer));
if ReadProcessMemory(hProcess,Pointer($00148180),Buffer,1024,iRead) then
memo1.Lines.Add('Edit2.txt中的内容为:'+PChar(Buffer));
// 释放资源
FreeMem(Buffer,1024);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hProcess,iRead:Cardinal;
hgl:HGLOBAL;
Buffer: Pointer;
begin
memo1.Text :=''; //清空memo1.text中内容
GetMem(Buffer,1024); //申请内存空间1024字节用来存放字符串
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, false, GetCurrentProcessId);
// 读取内存字符串
if ReadProcessMemory(hProcess,Pointer($00148148),Buffer,1024,iRead) then
memo1.Lines.Add('Edit1.txt中的内容为:'+PChar(Buffer));
if ReadProcessMemory(hProcess,Pointer($00148180),Buffer,1024,iRead) then
memo1.Lines.Add('Edit2.txt中的内容为:'+PChar(Buffer));
// 释放资源
FreeMem(Buffer,1024);
end;
用指针pointer指向你想要读取的目标地址然后再取才是正确的方法
方法,用HelpAPI建立进程快照,一个个遍历吧