Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.015 c
2-1141050227
Riva4
2006-02-27 17:23
2006.03.19
Как сделать фильтрацию по дате


2-1141219145
ViktorZ
2006-03-01 16:19
2006.03.19
Как записать в таблицу ЭТО?


1-1139761602
Fl@sh
2006-02-12 19:26
2006.03.19
CryptoApi & криптопровайдеры и информацыя о них


2-1141559590
Der Nechk@ssoff
2006-03-05 14:53
2006.03.19
подобно Memo


2-1141394071
n_sch
2006-03-03 16:54
2006.03.19
Помогите разобраться с DBRichEdit !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский