|
|
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
Коллеги, где можно найти инфо о структуре классов в памяти в время работы x64 приложения, скомпиленного на Delphi? Поясню, что хочу сделать: Есть приложение PLSQL Developer x64, писанное на Дельфе с её vcl-компонентами. Нужно получить доступ к этим компонентам (например TcxCheckBox, TSyntaxMemo) и вызывать их методы/изменять свойства (напр, Checked) из dll-плагина. Удалось нарыть, что Дельфя привязывает к HWND визуальных компонент свойства (SetProp()) с именами ControlOfsXXXXXX..., которые содержат указатель на некую структуру, идентифицирующую объект класса. Но вот дальше - затык. Если есть спецы или где-то видели инфу - ответтье, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 16:48 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
qlost, Тебе проще через сообщения винды это делать, чем ковырять объекты. Потому что с невиртуальными методами ты как в том анекдоте: "а хотите всерьёз, по-настоящему?!"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 17:07 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
alekcvp, Неа, как ни странно, TcxCheckBox не хочет меняться с помощью Button_GetCheck/Button_SetCheck или WM_LBUTTONDOWN+WM_LBUTTONUP работает только Код: plaintext 1. 2. 3. но, это переключение, а как получить текущее состояние - ? к тому же, с TSyntaxMemo всё уже совсем не так просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 17:13 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
alekcvp qlost, Тебе проще через сообщения винды это делать, чем ковырять объекты. Потому что с невиртуальными методами ты как в том анекдоте: "а хотите всерьёз, по-настоящему?!"... Сейчас, в эпоху самописывания контролов с нуля, на совместимость с winapi сообщениями все чаще кладут болт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 17:52 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal Сейчас, в эпоху самописывания контролов с нуля, на совместимость с winapi сообщениями все чаще кладут болт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 19:31 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
alekcvp Большой минус как по мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 20:02 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
white_nigger alekcvp Большой минус как по мне. Зачем точную, вы же не создавать их через WinApi будете. А вот обмен информацией, типа BM_GETCHECK, WM_SETTEXT - почему нет? И не особо сложно, как по мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 20:09 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
alekcvp Зачем точную, вы же не создавать их через WinApi будете. А вот обмен информацией, типа BM_GETCHECK, WM_SETTEXT - почему нет? И не особо сложно, как по мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 20:20 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
Как мне кажется - мы не в ту сторону смотрим. Имеется какое приложение. В него хотят внедрится посредством посылки отсылки WinAPI сообщений и прочего мазохизма. Вопрос - зачем? Может исходное приложение имеет какие-то средства для плагинописателей ала Фар тот же (как пример) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 21:40 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
Если бы средства имелись, я бы тут не спрашивал. По существу вопроса ответы будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 22:44 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
qlost По существу вопроса ответы будут? А чего там по существу, открываешь исходники класса и смотришь. Только тебе надо будет точно знать версию компонента, с которой собрано приложение, ведь малейшее изменение в полях - и все свойства ползут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 23:13 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
qlost, https://docs.oracle.com/cd/E28280_01/admin.1111/e10029/oid_app_plsql_plugin.htm#OIDAG2007 Оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2020, 23:28 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal qlost По существу вопроса ответы будут? А чего там по существу, открываешь исходники класса и смотришь. Только тебе надо будет точно знать версию компонента, с которой собрано приложение, ведь малейшее изменение в полях - и все свойства ползут. Я хочу найти инфу, как менеджер объектов (хз как назвать) раскладывает объект в оперативной памяти. Где экземпляр объекта относительно hwnd, где таблица методов и т.п. Нагуглить удалось что-то типа того, но для x86. На x64 как-то не укладывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2020, 00:46 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
DarkMaster не оно. Софтину я указал в первом сообщении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2020, 00:47 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
qlost Я хочу найти инфу, как менеджер объектов (хз как назвать) раскладывает объект в оперативной памяти. Где экземпляр объекта относительно hwnd, где таблица методов и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2020, 15:23 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
qlost Если бы средства имелись, я бы тут не спрашивал. По существу вопроса ответы будут? PL/SQL Developer как раз имеет поддержку сторонних плагинов, и это даже всё официально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2020, 15:33 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
defecator qlost Если бы средства имелись, я бы тут не спрашивал. По существу вопроса ответы будут? PL/SQL Developer как раз имеет поддержку сторонних плагинов, и это даже всё официально Да ё моё ребята, по теме ответы прошу! Или вы тут все asm и двоичные коды в глаза не видывали? Есть поддержка, да, но нет того, что я хочу. Разрабы выполняют фич-реквесты десятилетиями или не выполняют вообще. А доступ к объектам vcl развязал бы руки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2020, 19:14 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
qlostДа ё моё ребята, по теме ответы прошу Ответ простой. Вы не можете получить доступ к компонентам в dll. Да и мало верится чтобы "что Дельфя привязывает к HWND визуальных компонент свойства (SetProp())". Компонент за свою жизнь может и не получить HWND, но доступ к свойствам всё равно есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2020, 19:52 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
DimaBr Да и мало верится чтобы "что Дельфя привязывает к HWND визуальных компонент свойства (SetProp())". Компонент за свою жизнь может и не получить HWND, но доступ к свойствам всё равно есть. Он этот SetProp() использует чтобы ссылку на Self прикрепить (для оконной процедуры). Проблема в том, что через Self можно достать только до VMT, где хранятся адреса виртуальных методов, а вот до статических таким образом не добраться. И я вообще слабо представляю, каким образом можно добраться до статических методов объекта без RTTI. А методы вроде SetChecked/GetChecked скорее всего ещё и приватные, т.е. даже RTTI для них нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2020, 20:49 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
alekcvp Проблема в том, что через Self можно достать только до VMT, где хранятся адреса виртуальных методов, а вот до статических таким образом не добраться. И я вообще слабо представляю, каким образом можно добраться до статических методов объекта без RTTI. А методы вроде SetChecked/GetChecked скорее всего ещё и приватные, т.е. даже RTTI для них нет. Да можно просто приведением к типу. Но версия VCL и либы должна совпадать хотя бы на уровне полей компонента. ТС: открываешь код компонента - именно так объект и располагается в памяти. Сначала предки вплоть до TObject, потом свои поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2020, 23:56 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
Исходников компонент в открытом доступе не нашёл. Да это и не самое важное. Найти бы ниточку от HWND к этому объекту в памяти. А HWND точно есть - EnumChildWindows() его перечисляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2020, 10:22 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
qlost Найти бы ниточку от HWND к этому объекту в памяти. Посмотри как реализован FindControl(...), обрати внимание на ObjectFromHWnd. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2020, 10:51 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2020, 13:58 |
|
||
|
Есть описание структуры VCL-классов x64?
|
|||
|---|---|---|---|
|
#18+
qlost Найти бы ниточку от HWND к этому объекту в памяти. А HWND точно есть - EnumChildWindows() его перечисляет. Я бы попробовал находить InitInstance после загрузки программы (возможно, просто поиском в памяти, возможно как-то оптимальнее) и перехватывал - так получится карта объектов с их классами. Скорее всего, объекты имеющие HWND будут потомками TWinControl (или какого-то иного базового класса, реализующего работу с окном). Эти потомки будут иметь HWND по некоторому одинаковому смещению. Не знаю, насколько это применимо к 64-битной версии, но проверяется легко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2020, 14:01 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=30&tid=2037768]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 356ms |

| 0 / 0 |
