Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.19;
Скачать: CL | DM;

Вниз

Можно ли изменять таблицу 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.05 c
2-1141391931
jenya
2006-03-03 16:18
2006.03.19
Из ColorDialog в Edit1, как текст, возможно?


15-1139828884
Megabyte
2006-02-13 14:08
2006.03.19
Тема работы в аспирантуре


3-1138109339
Tornado
2006-01-24 16:28
2006.03.19
MS SQL Server Connect


3-1138133335
ANB
2006-01-24 23:08
2006.03.19
Как отсортировать дерево в оракле ?


15-1140848766
rezya
2006-02-25 09:26
2006.03.19
АТ команды для телефона