![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ещё разок про память в процессах [D7, WinXP]
Номолос © (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]Думаю стоит почитать ремарку к статье..