delphi 快速读取内存字符串
delphi搜索内存中字符串、比如:http://www.baidu.com类似这样的网站地址、在0x10000000到0x50000000这块地址中搜索、但发现循环读取...
delphi 搜索内存中字符串、比如:http://www.baidu.com 类似这样的网站地址、在0x10000000 到 0x50000000 这块地址中搜索、但发现循环读取的时候、速度惊人(慢)
var
I : Integer;
ScanStarAdd,ScanEndAdd ,ss: Dword;
Temp : array[0..15] of char;
for I :=ScanStarAdd to ScanEndAdd - 1 do
begin
ReadProcessMemory( ProcessHwnd, pointer(ScanStarAdd ),@Temp,16,SS) ;
if checkUrl( Temp ) then
begin
/////保存当前网站地址
end;
ScanStarAdd := ScanStarAdd + $1;
application..ProcessMessages;
end;
貌似这样读取非常的不行、
看到CE那样的工具挺快的、就是多线程 学的有点迷糊 展开
var
I : Integer;
ScanStarAdd,ScanEndAdd ,ss: Dword;
Temp : array[0..15] of char;
for I :=ScanStarAdd to ScanEndAdd - 1 do
begin
ReadProcessMemory( ProcessHwnd, pointer(ScanStarAdd ),@Temp,16,SS) ;
if checkUrl( Temp ) then
begin
/////保存当前网站地址
end;
ScanStarAdd := ScanStarAdd + $1;
application..ProcessMessages;
end;
貌似这样读取非常的不行、
看到CE那样的工具挺快的、就是多线程 学的有点迷糊 展开
2个回答
展开全部
Temp : array[0..15] of char;
你这缓冲太小了,使用GetMem获取几M的内存然后去搜索会快一些
checkUrl的算法要优化
ScanStarAdd := ScanStarAdd + $1;不能这样向后推移,必须一次一次推移缓冲区大小-URL长度的字节数
你这缓冲太小了,使用GetMem获取几M的内存然后去搜索会快一些
checkUrl的算法要优化
ScanStarAdd := ScanStarAdd + $1;不能这样向后推移,必须一次一次推移缓冲区大小-URL长度的字节数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询