![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как достать значение из памяти д ругой проги?
antonp © (2002-06-13 08:33:00)Нужно достать значение из памяти другой проги.
Пишем:
var Uo: Hwnd;
a,k: Cardinal;
p,i: Pointer;
n: Integer;
begin
p:=@n;
i:=Ptr($0134FD08);
Uo:=WindowFromPoint(Mouse.CursorPos); узнаем хендл окна
GetWindowThreadProcessID(Uo, a); узнаем хендл процесса
ReadProcessMemory(a, i, p, 8, k); считываем значение
Edit1.Text:=IntToStr(n);
Но ReadProcessMemory возвращает 0 т.е. не срабатывает. Почему?
GetLastError возвращает 6. Если я там посмотрел это значит что хендл процесса неправильный но я проверял по другой проге и ID процесса моя прога возвращает правильно.
Заранее благодарен.
Alexander Vorobyov (2002-06-13 10:29:00) [1]А между строчками:
GetWindowThreadProcessID(Uo, a);
ReadProcessMemory(a, i, p, 8, k);
ты случайно не пропустил нечто вроде
hProc:=OpenProcess(PROCESS_ALL_ACCESS,False,a);
?
Digitman (2002-06-13 10:27:00) [2]1.
>>GetWindowThreadProcessID(Uo, a); узнаем хендл процесса
И как же ты его здесь "узнаешь" ? Ты же результат ф-ции игнорируешь ! Прокомментируй.
2. Процесс перед использованием ф-ции ReadProcessMemory() д.б. открыт как минимум с правом PROCESS_VM_READ (см.вызов OpenProcess())