要从内存中读取一个字符串,字符串最多为9个汉字长,而且是Unicode的
nname:array[0..17] of WideChar;
ReadProcessMemory (hProcess, Pointer(test), @nname, 18, tt );
for num:=0 to 17 do begin
if nname[num]<>'#0' then begin
nnum:=nnum+1;
end else begin nnum:=nnum+1; break;
end;
end;
Label30.caption :=WideCharLenToString(nname,nnum);我用这个方法读,有时候读出的字符串后面会跟着一些乱码,'#0'判断用在这里不对么...?
nname:array[0..17] of WideChar;
ReadProcessMemory (hProcess, Pointer(test), @nname, 18, tt );
for num:=0 to 17 do begin
if nname[num]<>'#0' then begin
nnum:=nnum+1;
end else begin nnum:=nnum+1; break;
end;
end;
Label30.caption :=WideCharLenToString(nname,nnum);我用这个方法读,有时候读出的字符串后面会跟着一些乱码,'#0'判断用在这里不对么...?
if nname[num] <> #0 then begin
label30.caption:=trim(nname);但结尾有时还是会有小尾巴……
你直接
Label30.caption :=WideCharLenToString(nname, tt div 2);
应该就可以了。
for num := 0 to 17 do
begin
if nname[num] <> #0 then
nnum := nnum + 1
else
break;
end;
Label30.caption := WideCharLenToString(nname, nnum);