|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
|
Boltina |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.12.2016 Репутация: нет Всего: нет |
Есть стороннее приложение в нём в TDBGrid выводятся данные. Могу ли я с помощью winapi своим приложение получить эти данные? Сейчас получилось получить окно этого приложения. И посылать некоторые сообщения самому DBGrid'у.
Куда дальше копать, есть ли возможность получить данные? Какие варианты есть? |
|||
|
||||
миг |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 157 Регистрация: 15.9.2008 Репутация: 1 Всего: 1 |
Возможно существует ***.dll , которая может предоставить доступ к данным.
--------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
GremlinProg |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
TDBGrid - есть в Delphi такой компонент. Если речь о нем, то будет довольно муторно получить его данные.
Здесь нужен тулсет для работы с объектами Delphi в памяти. Проще наверное будет использовать не C++, а Delphi, причем, желательно той же версии, на которой написано исходное приложение. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Boltina |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.12.2016 Репутация: нет Всего: нет |
Очень похоже на Delphi. Возможность использовать Delphi вместо С++ есть, с версией проблема но подобрать нужную можно. Встает вопрос, а в delphi есть возможность получить доступ к TDBGrid сторонней программы? В какую сторону там смотреть? Или использовать другой случай - влезать в память относящейся к этой программе? |
|||
|
||||
GremlinProg |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
да, придется лезти в память чужого процесса, если TDBGrid не использует стандартные компоненты. Это надо исходники посмотреть TDBGrid. Насколько помню, такие компоненты даже если используют стандартные компоненты, то работают с ними в режиме CUSTOM_DRAW, т.е. непосредственно строки хранят в своей памяти, а рисуют их через свои обработчики. Либо имеют такой режим (virtual list/source как-то так называется). -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
миг |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 157 Регистрация: 15.9.2008 Репутация: 1 Всего: 1 |
А не проще определить какие dll файлы были установлены с программой? Часто разработчики зашивают в dll специальные Api функции позволяющие сторонней программе работать с данными их программы.
--------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
GremlinProg |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
конечно проще, если есть API для приложения, лучше воспользоваться им и не заморачиваться -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Boltina |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.12.2016 Репутация: нет Всего: нет |
обязательно посмотрю, если найду наверняка появятся вопросы: о результате напишу Добавлено через 3 минуты и 17 секунд TDBGrid, да кажется данные отдельно из компонента datasource или подобного. А как понять что нет возможности работать именно с компонентом и с его datasource (при его наличии) |
|||
|
||||
GremlinProg |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
У меня нет исходников под рукой. Посмотрите в CreateParams, какой класс окна создается для контрола в TDBGrid или его предках (в TMemo, например - это класс EDIT) Если ни какого, то смотрите, какие сообщения обрабатывает этот компонент. Вполне возможно, что можно получить необходимую Вам информацию через них (это API компонента). В Delphi хорошо развито общение между компонентами через такие внутренние сообщения. И только если ни чего из этого не помогает - можно пробовать получить данные. Для начала - в одном адресном пространстве (в одном процессе). -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |