powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос про SetWindowLong и GWL_WNDPROC
2 сообщений из 2, страница 1 из 1
Вопрос про SetWindowLong и GWL_WNDPROC
    #39168099
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть приложение с VBA. В нём есть модуль, в котором есть строчка:

Код: vbnet
1.
Let OldWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf NewWindowProc)



-- при исполнении этой строчки кода "оконная процедура" подменяется на процедуру NewWindowProc. Каков механизм этой подмены? Адрес процедуры NewWindowProc, "извлекаемый" конструкцией
Код: vbnet
1.
AddressOf NewWindowProc

передается - как конкретное число - в апишную процедуру SetWindowLong, и она его где-то там (где надо) вписывает.

Однако в какой момент у процедуры NewWindowProc появляется адрес-как-конкретное-число?

Я затрудняюсь этот момент точно обозначить, но это явно происходит ПОСЛЕ компиляции кода. Конкретно - после компиляции приведённой выше строчки (и компиляции процедуры NewWindowProc - раз эта строчка на неё ссылается).

Вопрос в следующем. Предположим, ПОСЛЕ всего этого - не закрывая приложение-с-VBA - я что-то в нём отредактировал, перекомпилировал его и запустил на исполнение таким образом, что приведённая выше строчка повторно не выполняется. А первоначальный адрес-как-конкретное-число - где-то там записанный - он куда теперь указывает? И что теперь вызывается вместо "оконной процедуры"?
...
Рейтинг: 0 / 0
Вопрос про SetWindowLong и GWL_WNDPROC
    #39168219
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОднако в какой момент у процедуры NewWindowProc появляется адрес-как-конкретное-число? в момент запуска макроса.

автор А первоначальный адрес-как-конкретное-число - где-то там записанный - он куда теперь указывает?туда же, куда и раньше. но вместо процедуры там, возможно, уже мусор, исполнение которого обрушит приложение.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос про SetWindowLong и GWL_WNDPROC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]