Робота з ReadProcessMemory, як прочитати дані осередку

Доброго дня шановні, підкажіть, будь ласка, як рахувати дані з осередку пам'яті чужого додатка, перегугнув безліч сторінок, знайшов лише функцію ReadProcessMemory, але розібратися ніяк з нею не можу.

> але розібратися ніяк із нею не можу

що саме не зрозуміло ?

procedure TForm1.Button4Click(Sender: TObject); var wBuff: byte; wHandle: integer; tHandle, ProcessID, pHandle, temp: cardinal; begin wHandle := FindWindow(nil, "Áåçûìÿíííéé - Áëîêíîò"); if wHandle <> 0 then begin tHandle := GetWindowThreadProcessId(wHandle, @ProcessID); pHandle := OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID); WriteProcessMemory(pHandle, ptr($014B6A44), @wBuff, 4, temp); // CloseHandle(pHandle); end else ShowMessage("not handle"); end;

З того що я зрозумів, дані заносяться в wBuff, тільки як витягнути з неї дані в звичайну змінну типу string або integer, не розумію.

Помилка WriteProcessMemory на ReadProcessMemory

> З того що я зрозумів, дані заносяться до wBuff

Як же 4 байти можуть поміститися в 1 байт?

> ReadProcessMemory(pHandle, ptr($014B6A44), @wBuff, 4, temp);

тут замовлено читання чотирьох байт

тут оголошено один байт. Нестиковка.

> тільки ось як витягнути з неї дані у звичайну змінну > типу string або integer, не розумію

Якщо Integer, то змінну, куди читаєш, потрібно оголосити як Integer.

наприклад, var wBuff: Integer;

дякую розібрався "хто гугліт той завжди знайде" (С) :)

const Offset = $00000000;

var Wnd: HWND; ThreadId, ProcessId, Hdl: Cardinal; BytesRead: Cardinal; Value: Integer;

Wnd: = FindWindow(nil, "Ім'я програми"); Thread > Hdl: = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId); ReadProcessMemory(Hdl, Pointer(Offset), @Value, 4, BytesRead);

Викладаю код, може кому нагоді.