Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ещё разок про память в процессах [D7, WinXP]


Страницы:   1 2

Номолос ©   (2003-12-29 19:56:00) 

Я понимаю, что всем уже надоел своими глупыми вопросами по использованию памяти процессов, но тем не менее:
Цитата из Win32 Programmers Reference, статья ReadProcessMemory:
> The entire area to be read must be accessible. If it is not, the function fails as noted previously.
Я понял сие как: Заданная область чтения должна быть доступна. В противном случае функция заваливается и возвращает ноль.
С WriteProcessMemory - та же собакха. Ясный вопрос: как узнать эту вот область, где доступно? Перебор за полчаса результатов не даёт :( Так что же делать?


Dimaxx   (2003-12-30 01:45:00) [21]

Я писал так...

var
 HP: THandle;
 NR,dwProcessID: cardinal;
 hWnd: THandle;

hWnd:=FindWindow(nil,'Катаклизм');
if hWnd=0 then Exit;
GetWindowThreadProcessID(hWnd,@dwProcessID);
HP:=OpenProcess(PROCESS_ALL_ACCESS,False,dwProcessID);
ReadProcessMemory(HP,pointer($00A0C884),@Buf[0],sizeof(cardinal),NR);
ReadProcessMemory(HP,pointer($00A0C890),@Buf[1],sizeof(cardinal),NR);
ReadProcessMemory(HP,pointer($00A0C88C),@Buf[2],sizeof(cardinal),NR);

...

WriteProcessMemory(HP,pointer($00A0C884),@Buf[0],sizeof(cardinal),NR);

...

CloseHandle(HP);


и все работает...


jack128   (2003-12-29 21:36:00) [22]

Думаю стоит почитать ремарку к статье..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо