powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Есть описание структуры VCL-классов x64?
27 сообщений из 27, показаны все 2 страниц
Есть описание структуры VCL-классов x64?
    #40029116
qlost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, где можно найти инфо о структуре классов в памяти в время работы x64 приложения, скомпиленного на Delphi?
Поясню, что хочу сделать:
Есть приложение PLSQL Developer x64, писанное на Дельфе с её vcl-компонентами. Нужно получить доступ к этим компонентам (например TcxCheckBox, TSyntaxMemo) и вызывать их методы/изменять свойства (напр, Checked) из dll-плагина.
Удалось нарыть, что Дельфя привязывает к HWND визуальных компонент свойства (SetProp()) с именами ControlOfsXXXXXX..., которые содержат указатель на некую структуру, идентифицирующую объект класса.
Но вот дальше - затык.
Если есть спецы или где-то видели инфу - ответтье, пожалуйста.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029119
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlost,

Тебе проще через сообщения винды это делать, чем ковырять объекты. Потому что с невиртуальными методами ты как в том анекдоте: "а хотите всерьёз, по-настоящему?!"...
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029121
qlost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Неа, как ни странно, TcxCheckBox не хочет меняться с помощью Button_GetCheck/Button_SetCheck или WM_LBUTTONDOWN+WM_LBUTTONUP
работает только
Код: plaintext
1.
2.
3.
    SendMessage(h, WM_ACTIVATE, WA_CLICKACTIVE, 0);//активация контрола
    PostMessage(h, WM_KEYDOWN, ' ', 0);//нажать пробел
    PostMessage(h, WM_KEYUP, ' ', 0);//отжать пробел


но, это переключение, а как получить текущее состояние - ?
к тому же, с TSyntaxMemo всё уже совсем не так просто.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029125
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp
qlost,

Тебе проще через сообщения винды это делать, чем ковырять объекты. Потому что с невиртуальными методами ты как в том анекдоте: "а хотите всерьёз, по-настоящему?!"...

Сейчас, в эпоху самописывания контролов с нуля, на совместимость с winapi сообщениями все чаще кладут болт
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029143
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Сейчас, в эпоху самописывания контролов с нуля, на совместимость с winapi сообщениями все чаще кладут болт
Большой минус как по мне.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029149
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
Большой минус как по мне.
Нафик-нафик. Почитай Чена или посмотри сырцы винды, на предмет сколько там говна из-за легаси скопилось. Если в каждом контроле пытаться эмулировать точную реакцию на виндовые мессаги -это надо отдельную группу разработчиков-мазохистов надо нанимать и платить большие деньги
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029150
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger
alekcvp
Большой минус как по мне.
Нафик-нафик. Почитай Чена или посмотри сырцы винды, на предмет сколько там говна из-за легаси скопилось. Если в каждом контроле пытаться эмулировать точную реакцию на виндовые мессаги -это надо отдельную группу разработчиков-мазохистов надо нанимать и платить большие деньги

Зачем точную, вы же не создавать их через WinApi будете. А вот обмен информацией, типа BM_GETCHECK, WM_SETTEXT - почему нет? И не особо сложно, как по мне.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029151
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
Зачем точную, вы же не создавать их через WinApi будете. А вот обмен информацией, типа BM_GETCHECK, WM_SETTEXT - почему нет? И не особо сложно, как по мне.
А нафига? Цель кустомных контролов - дать то чего нет и с удобным API. Если человек вместо этого начинает городить мессаги - это повод задуматься об изъянах в API, а не пытаться натянуть сову на глобус. К тоже же профессионалов в WinAPI не так много, иногда пользователи такое учудят. Плюс никто не отменял, что часто люди не знают контролов с которыми работают - хотя бы на уровне чтения хелпа. Вот и изобретают велосипеды.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029167
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как мне кажется - мы не в ту сторону смотрим. Имеется какое приложение. В него хотят внедрится посредством посылки отсылки WinAPI сообщений и прочего мазохизма. Вопрос - зачем? Может исходное приложение имеет какие-то средства для плагинописателей ала Фар тот же (как пример) ?
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029175
qlost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы средства имелись, я бы тут не спрашивал.
По существу вопроса ответы будут?
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029179
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qlost
По существу вопроса ответы будут?

А чего там по существу, открываешь исходники класса и смотришь. Только тебе надо будет точно знать версию компонента, с которой собрано приложение, ведь малейшее изменение в полях - и все свойства ползут.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029183
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029195
qlost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
qlost
По существу вопроса ответы будут?

А чего там по существу, открываешь исходники класса и смотришь. Только тебе надо будет точно знать версию компонента, с которой собрано приложение, ведь малейшее изменение в полях - и все свойства ползут.

Я хочу найти инфу, как менеджер объектов (хз как назвать) раскладывает объект в оперативной памяти. Где экземпляр объекта относительно hwnd, где таблица методов и т.п.
Нагуглить удалось что-то типа того, но для x86. На x64 как-то не укладывается.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029196
qlost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

не оно. Софтину я указал в первом сообщении.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029257
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlost
Я хочу найти инфу, как менеджер объектов (хз как назвать) раскладывает объект в оперативной памяти. Где экземпляр объекта относительно hwnd, где таблица методов и т.п.
А вот и натягивание совы...
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029259
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
qlost
Если бы средства имелись, я бы тут не спрашивал.
По существу вопроса ответы будут?


PL/SQL Developer как раз имеет поддержку сторонних плагинов, и это даже всё официально
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029303
qlost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
qlost
Если бы средства имелись, я бы тут не спрашивал.
По существу вопроса ответы будут?


PL/SQL Developer как раз имеет поддержку сторонних плагинов, и это даже всё официально

Да ё моё ребята, по теме ответы прошу! Или вы тут все asm и двоичные коды в глаза не видывали?
Есть поддержка, да, но нет того, что я хочу. Разрабы выполняют фич-реквесты десятилетиями или не выполняют вообще. А доступ к объектам vcl развязал бы руки.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029312
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlostДа ё моё ребята, по теме ответы прошу
Ответ простой. Вы не можете получить доступ к компонентам в dll.
Да и мало верится чтобы "что Дельфя привязывает к HWND визуальных компонент свойства (SetProp())".
Компонент за свою жизнь может и не получить HWND, но доступ к свойствам всё равно есть.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029319
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
Да и мало верится чтобы "что Дельфя привязывает к HWND визуальных компонент свойства (SetProp())".
Компонент за свою жизнь может и не получить HWND, но доступ к свойствам всё равно есть.

Он этот SetProp() использует чтобы ссылку на Self прикрепить (для оконной процедуры).
Проблема в том, что через Self можно достать только до VMT, где хранятся адреса виртуальных методов, а вот до статических таким образом не добраться. И я вообще слабо представляю, каким образом можно добраться до статических методов объекта без RTTI. А методы вроде SetChecked/GetChecked скорее всего ещё и приватные, т.е. даже RTTI для них нет.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029575
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp
Проблема в том, что через Self можно достать только до VMT, где хранятся адреса виртуальных методов, а вот до статических таким образом не добраться. И я вообще слабо представляю, каким образом можно добраться до статических методов объекта без RTTI. А методы вроде SetChecked/GetChecked скорее всего ещё и приватные, т.е. даже RTTI для них нет.

Да можно просто приведением к типу. Но версия VCL и либы должна совпадать хотя бы на уровне полей компонента.

ТС: открываешь код компонента - именно так объект и располагается в памяти. Сначала предки вплоть до TObject, потом свои поля.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029635
qlost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходников компонент в открытом доступе не нашёл. Да это и не самое важное. Найти бы ниточку от HWND к этому объекту в памяти.
А HWND точно есть - EnumChildWindows() его перечисляет.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029649
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlost
Найти бы ниточку от HWND к этому объекту в памяти.

Посмотри как реализован FindControl(...), обрати внимание на ObjectFromHWnd.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029733
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029736
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlost
Найти бы ниточку от HWND к этому объекту в памяти.
А HWND точно есть - EnumChildWindows() его перечисляет.


Я бы попробовал находить InitInstance после загрузки программы (возможно, просто поиском в памяти, возможно как-то оптимальнее) и перехватывал - так получится карта объектов с их классами. Скорее всего, объекты имеющие HWND будут потомками TWinControl (или какого-то иного базового класса, реализующего работу с окном). Эти потомки будут иметь HWND по некоторому одинаковому смещению.
Не знаю, насколько это применимо к 64-битной версии, но проверяется легко.
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029763
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064
Не знаю, насколько это применимо к 64-битной версии, но проверяется легко.

Что ему это даст, если у него нет исходников?
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029776
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp

Что ему это даст, если у него нет исходников?


"Ниточку" :)
Ну и вот эту инфу, если известна версия транслятора:
Я хочу найти инфу, как менеджер объектов (хз как назвать) раскладывает объект в оперативной памяти. Где экземпляр объекта относительно hwnd, где таблица методов и т.п.
Нагуглить удалось что-то типа того, но для x86. На x64 как-то не укладывается.


Но к решению изначальной задачи это имет отдаленное отношение.

Если брать конкретную версию управляемой программы, то расковырять можно, в общем случае - "овчинка выделки не стоит".
...
Рейтинг: 0 / 0
Есть описание структуры VCL-классов x64?
    #40029780
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlost,

У вас есть только один легальный способ - для установки значений эмулировать действия пользователя (SendInput и подобное). Для запроса состояния, если контрол не отзывается на стандартные функции, делать PrntWindow с последующим распознаванием распознаванием для чекбокса или CopyToClipboard для TSyntaxMemo
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Есть описание структуры VCL-классов x64?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]