Работа с ReadProcessMemory как да четете клетъчни данни

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

> но не мога да се справя с това по никакъв начин

какво точно не е ясно?

procedure TForm1.Button4Click(Sender: TObject); var wBuff: byte; wHandle: цяло число; tHandle, ProcessID, pHandle, temp: cardinal; begin wHandle := FindWindow(nil, "Unnamed - Block"); ако wHandle <> 0 след това започнете tHandle := GetWindowThreadProcessId(wHandle, @ProcessID); pHandle := OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID); WriteProcessMemory(pHandle, ptr($014B6A44), @wBuff, 4, temp); // CloseHandle(pHandle); край друго ShowMessage("not handle"); край;

Доколкото разбирам, данните се въвеждат в wBuff, но не разбирам как да изтегля данни от него в нормална променлива от тип низ или цяло число.

Печатна грешка WriteProcessMemory на ReadProcessMemory

> Доколкото разбирам, данните се въвеждат в wBuff

Как 4 байта могат да се поберат в 1 байт?

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

четири байта са подредени тук

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

> само ето как да изтеглите данни от него в обикновена променлива > въведете низ или цяло число, не разбирам

Ако Integer, тогава променливата, където четете, трябва да бъде декларирана като Integer.

например var wBuff: Integer;

благодаря, разбрах "който Google винаги ще намери" (C) :)

const Отместване = $00000000;

var Wnd: HWND; ThreadId, ProcessId, HDl: Кардинал; Прочетени байтове: Кардинал; Стойност: цяло число;

Wnd := FindWindow(nil, "Име на програмата"); Нишка > Hdl := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId); ReadProcessMemory(Hdl, Pointer(Offset), @Value, 4, BytesRead);

Публикувам кода, може би ще помогне на някого.