var WindowName: integer; ProcessId: integer; ThreadId: integer; HandleWindow: Integer; write: cardinal; buf: dword; const WindowTitle = 'Name'; Address = $007B5678; NumberOfBytes = 4; begin WindowName := FindWindow(nil,WindowTitle); If WindowName = 0 then begin MessageDlg('Игра должна быть запущена до трейнера. Запустите ее, потом трейнер', mtwarning,[mbOK],0); end; ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId); HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); buf:=$0; WriteProcessMemory(HandleWindow, ptr(address), @buf, 4, write); end; Можно и в таком варианте: var WinClass : TWndClass; hInst: HWND; Handle: HWND; Msg: TMSG; hFont: HWND; win: hwnd; WindowName: integer; ProcessId: integer; ThreadId: integer; buf: PChar; HandleWindow: Integer; write: cardinal; const WindowTitle= 'Name'; Address= $007B5678; PokeValue= $0; NumberOfBytes= 4; begin WindowName := FindWindow(nil,WindowTitle); If WindowName = 0 then begin MessageBox(win,'Игра должна быть запущенна до трейнера.'+#13+#10+ ' Запустите её,а потом трейнер','Ошибка',MB_OK or MB_ICONINFORMATION); end; ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId); HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); GetMem(buf,1); buf^ := Chr(PokeValue); WriteProcessMemory(HandleWindow,ptr(Address),buf,NumberOfBytes,write); FreeMem(buf); CloseHandle(HandleWindow); end; У большинства людей работает. Не работает на: Win 7 x32 Максимальная, Win 7 x64 Ultimate Работает на: Win XP SP2 x32, Win XP SP3 x32, Win 7 x64 Домашняя, Win 7 x64 Максимальная... Адреса были проверены через CheatEngine, соответственно на компьютере где не работает.