Главная страница
    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.013 c
11-1121750231
hunn
2005-07-19 09:17
2006.03.19
Работа с событиями в KOLEcmListEdit


15-1139874209
Википед
2006-02-14 02:43
2006.03.19
Можно ли где нибудь получить аналог Википедии под свои нужды?


4-1135870536
Sergey2005
2005-12-29 18:35
2006.03.19
Отловить завершение виндовс.


4-1135711768
Варяг
2005-12-27 22:29
2006.03.19
Использование функции RegQueryValueEx()


2-1141105672
nap<>
2006-02-28 08:47
2006.03.19
Про GradientFill





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский