Mam funkcję czytającą dane z procesu pamięci aplikacji.
function MemReadString(Address: Integer): String;
var
NB: LongWord;
Temp: ARRAY [1..255] OF Byte;
I: Byte;
IDProcess, proc_ID: Cardinal;
begin
GetWindowThreadProcessID(FindWindow('Nazwa programu', nil), @proc_ID);
IDProcess := OpenProcess(PROCESS_ALL_ACCESS, false, proc_ID);
Result := '';
ReadProcessMemory(IDProcess, Ptr(Address), @Temp[1], 255, NB);
for I := 1 to 255 do
begin
if ((Temp[I] = 0) or (Temp[I] = $0F)) then
Break;
Result := Result + Chr(Temp[I]);
end;
end;
Przeniosłem się z Delphi XE na Delphi XE2, praktycznie skopiowałem mój program do środowiska XE2 i w całym kodzie mam tylko jeden błąd, dotyczy on tej linijki:
ReadProcessMemory(IDProcess, Ptr(Address), @Temp[1], 255, NB);
Błąd o treści:
[DCC Error] Unit1.pas(125): E2033 Types of actual and formal var parameters must be identical
Dodam, że w zwykłej XE program kompilował się bez problemu, a w XE2 już nie da rady.