Перехват оконных сообщений
От: Shurik77  
Дата: 18.07.03 08:38
Оценка:
Для перехвата сообщений я заменял адрес процедуры обработки сообщений через
SetWindowLong(hwnd, GWL_WNDPROC, (ULONG) &MyWindowProc);
Но, как оказалось, в некоторых програмках этот метод не проходит, так как адрес процедуры после создания окна изменяется, а старые обработчики не вызываются, и, соответственно,не вызывается моя функция MyWindowProс.
Посоветуйте, как выйти из этого положения (желательно без использования хуков).
Re: Перехват оконных сообщений
От: Виталий Россия  
Дата: 18.07.03 09:30
Оценка:
Здравствуйте, Shurik77, Вы писали:

S>Для перехвата сообщений я заменял адрес процедуры обработки сообщений через

S>SetWindowLong(hwnd, GWL_WNDPROC, (ULONG) &MyWindowProc);
S>Но, как оказалось, в некоторых програмках этот метод не проходит, так как адрес процедуры после создания окна изменяется, а старые обработчики не вызываются, и, соответственно,не вызывается моя функция MyWindowProс.
Что-то, по-моему у тебя просто не подменилось, GetLastError что показывает?

S>Посоветуйте, как выйти из этого положения (желательно без использования хуков).

WinMain можно подменить только будучи в ее процессе, то есть если пытаешься менять в чужом, то сначала в него надо внедриться , как? примеров много и на сайте и у Рихтера
Re[2]: Перехват оконных сообщений
От: Shurik77  
Дата: 18.07.03 09:59
Оценка:
Здравствуйте, Виталий:
В процесс я внедрился, и адрес заменяется, даже первые несколько сообщений обрабатываются, но потом все прекращается
Re[3]: Перехват оконных сообщений
От: SergH Россия  
Дата: 18.07.03 10:12
Оценка:
Здравствуйте, Shurik77, Вы писали:

S>В процесс я внедрился, и адрес заменяется, даже первые несколько сообщений обрабатываются, но потом все прекращается


Может, перхватить SetWindowLong? Хак, конечно..
Делай что должно, и будь что будет
Re: Перехват оконных сообщений
От: Shurik77  
Дата: 18.07.03 10:53
Оценка:
Перехватить функцию SetWindowLong, скорее всего не получиться, поскольку библиотека user32 подключается динамичски, поэтому, например в таблице импорта нет адреса этой функции.
Re[2]: Перехват оконных сообщений
От: SergH Россия  
Дата: 18.07.03 10:56
Оценка:
Здравствуйте, Shurik77, Вы писали:

S>Перехватить функцию SetWindowLong, скорее всего не получиться, поскольку библиотека user32 подключается динамичски, поэтому, например в таблице импорта нет адреса этой функции.


Можно поменять таблицу экспорта user32. Можно посткпть совсем грубо — поменять первые несколько байт SetWindowLong на переход к своей реализации. Но такое я не люблю.
Делай что должно, и будь что будет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.