Форум: "Основная";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
ВнизМожно ли изменять таблицу DMT для класса в runtime? Найти похожие ветки
← →
kshin (2006-02-15 16:21) [0]Имеется ввиду возможна ли подмена адреса динамического метода в DMT на адрес своей функции.
У меня сложилось впечатление что регион памяти доступен только для чтения, в который компилятор заносит эти таблицы.
← →
Digitman © (2006-02-15 16:26) [1]
> У меня сложилось впечатление что регион памяти доступен
> только для чтения
И не только он самый. Да и не "регион" это ..
Мало ли что еще доступно "только для чтения" ..
← →
Игорь Шевченко © (2006-02-15 16:37) [2]
> У меня сложилось впечатление что регион памяти доступен
> только для чтения, в который компилятор заносит эти таблицы.
>
Впечатление правильное. DMT находится в сегменте кода, защищенном от записи. Защиту можно поменять, безусловно, непонятно только, какой смысл в таких действиях
← →
evvcom © (2006-02-16 10:00) [3]"Правильнее" написать потомка и перекрыть в нем ЭТОТ динамический метод.
← →
kshin (2006-02-16 10:43) [4]>Защиту можно поменять, безусловно, непонятно только, какой смысл в таких действиях
Смысл в том что так можно попробовать перехватить все сообщения одоного типа (читай номера), для определенных классов или объектов, не изменяя их код. А если можно поменять защиту, то интересно как?
> "Правильнее" написать потомка и перекрыть в нем ЭТОТ динамический метод.
Это я и так понимаю, но если я не хочу писать наследников всех компонентов для внесения некоторого общего изменения их поведения.
Конкретно - хотел сделать, что бы при работе приложения реакция на Enter, была аналогична реакции на Tab. (Ну и еще кое что)
← →
Плохиш © (2006-02-16 11:00) [5]
> что бы при работе приложения реакция на Enter, была аналогична
> реакции на Tab.
Для этого существует OnKeyDown/Press
← →
evvcom © (2006-02-16 11:10) [6]
> А если можно поменять защиту, то интересно как?
VirtualProtect
← →
kshin (2006-02-16 11:16) [7]Плохишу: OnKeyDown/Press - для каждой формы надо писать (копировать) каждый раз, когда создаеш новую форму.
И я не вижу ничего хорошего в том, что модуль формы с модифицированным поведением сразу содержит массу написанных обработчиков еще без содержания логики касающейся именно этой формы
← →
kshin (2006-02-16 11:18) [8]За ответы всем огромное спасибо.
← →
Плохиш © (2006-02-16 11:29) [9]
> Плохишу: OnKeyDown/Press - для каждой формы надо писать
> (копировать) каждый раз, когда создаеш новую форму.
> И я не вижу ничего хорошего в том, что модуль формы с модифицированным
> поведением сразу содержит массу написанных обработчиков
> еще без содержания логики касающейся именно этой формы
1. Форма - это тоже класс, к которому применимо понятие наследование
2. Реакции на нажатие кнопок вообще-то тоже относятся к "логике функционирования формы"
3. Может стоит занятся написанием новой оси для своей программы?
← →
Игорь Шевченко © (2006-02-16 11:45) [10]
> Конкретно - хотел сделать, что бы при работе приложения
> реакция на Enter, была аналогична реакции на Tab
В данном случае лучше использовать хук WH_GETMESSAGE
← →
Leonid Troyanovsky © (2006-02-16 12:05) [11]
> kshin (16.02.06 11:16) [7]
> Плохишу: OnKeyDown/Press - для каждой формы надо писать
> (копировать) каждый раз, когда создаеш новую форму.
http://rsdn.ru/Forum/?mid=671506
--
Regards, LVT.
← →
Игорь Шевченко © (2006-02-16 12:29) [12]Leonid Troyanovsky © (16.02.06 12:05) [11]
Так это тоже надо для каждой формы писать :))
← →
kshin (2006-02-16 12:56) [13]Leonid Troyanovsky © (16.02.06 12:05) [11]
До этого я и сам дошел. И именно обработчик cm_DialogKey для TCustomForm хотелось заменить на примерно такой - же, но в таблице динамических методов.
Может не понятно, но при этом можно не играть в наследование форм, а создавать обычную форму, каждый раз когда это надо при разработке приложения и всего раз включить один модуль, который выполняет подмену клавиши для ВСЕХ форм.
Но раз память под ТДМ read-only, то и дальнейшие рассуждения бессмысленны - следующее по простоте Репозитарий + наследование при добавлении из него.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c