Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение данных из TDBGrid - C++ WinAPI 
:(
    Опции темы
Boltina
Дата 27.12.2016, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.12.2016

Репутация: нет
Всего: нет



Есть стороннее приложение в нём в TDBGrid выводятся данные. Могу ли я с помощью winapi своим приложение получить эти данные? Сейчас получилось получить окно этого приложения. И посылать некоторые сообщения самому DBGrid'у.
Куда дальше копать, есть ли возможность получить данные? Какие варианты есть?
PM MAIL   Вверх
миг
Дата 27.12.2016, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 15.9.2008

Репутация: 1
Всего: 1



Возможно существует ***.dll , которая может предоставить доступ к данным. 
--------------------
Oaks may fall when reeds stand the storm.
PM MAIL   Вверх
GremlinProg
Дата 27.12.2016, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



TDBGrid - есть в Delphi такой компонент. Если речь о нем, то будет довольно муторно получить его данные.
Здесь нужен тулсет для работы с объектами Delphi в памяти.
Проще наверное будет использовать не C++, а Delphi,
причем, желательно той же версии, на которой написано исходное приложение.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Boltina
Дата 27.12.2016, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.12.2016

Репутация: нет
Всего: нет



Цитата(GremlinProg @ 27.12.2016,  10:53)
TDBGrid - есть в Delphi такой компонент. Если речь о нем, то будет довольно муторно получить его данные.
Здесь нужен тулсет для работы с объектами Delphi в памяти.
Проще наверное будет использовать не C++, а Delphi,
причем, желательно той же версии, на которой написано исходное приложение.

Очень похоже на Delphi. Возможность использовать Delphi вместо С++ есть, с версией проблема но подобрать нужную можно. 
Встает вопрос, а в delphi есть возможность получить доступ к TDBGrid сторонней программы? В какую сторону там смотреть?
Или использовать другой случай - влезать в память относящейся к этой программе?
PM MAIL   Вверх
GremlinProg
Дата 27.12.2016, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Boltina @  27.12.2016,  14:29 Найти цитируемый пост)
Или использовать другой случай - влезать в память относящейся к этой программе? 

да, придется лезти в память чужого процесса, если TDBGrid не использует стандартные компоненты.
Это надо исходники посмотреть TDBGrid.

Насколько помню, такие компоненты даже если используют стандартные компоненты,
то работают с ними в режиме CUSTOM_DRAW, т.е. непосредственно строки хранят в своей памяти, а рисуют их через свои обработчики.
Либо имеют такой режим (virtual list/source как-то так называется).


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
миг
Дата 27.12.2016, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 15.9.2008

Репутация: 1
Всего: 1



А не проще определить какие dll файлы были установлены с программой? Часто разработчики зашивают в dll специальные Api функции позволяющие сторонней программе работать с данными их программы.
--------------------
Oaks may fall when reeds stand the storm.
PM MAIL   Вверх
GremlinProg
Дата 27.12.2016, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(миг @  27.12.2016,  15:59 Найти цитируемый пост)
А не проще определить какие dll файлы были установлены с программой? Часто разработчики зашивают в dll специальные Api функции позволяющие сторонней программе работать с данными их программы. 

конечно проще,
если есть API для приложения, лучше воспользоваться им и не заморачиваться


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Boltina
Дата 27.12.2016, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.12.2016

Репутация: нет
Всего: нет



Цитата(миг @ 27.12.2016,  13:59)
А не проще определить какие dll файлы были установлены с программой? Часто разработчики зашивают в dll специальные Api функции позволяющие сторонней программе работать с данными их программы.

обязательно посмотрю, если найду наверняка появятся вопросы: о результате напишу

Добавлено через 3 минуты и 17 секунд
Цитата(GremlinProg @ 27.12.2016,  13:31)
Цитата(Boltina @  27.12.2016,  14:29 Найти цитируемый пост)
Или использовать другой случай - влезать в память относящейся к этой программе? 

да, придется лезти в память чужого процесса, если TDBGrid не использует стандартные компоненты.
Это надо исходники посмотреть TDBGrid.

Насколько помню, такие компоненты даже если используют стандартные компоненты,
то работают с ними в режиме CUSTOM_DRAW, т.е. непосредственно строки хранят в своей памяти, а рисуют их через свои обработчики.
Либо имеют такой режим (virtual list/source как-то так называется).

TDBGrid, да кажется данные отдельно из компонента datasource или подобного.
А как понять что нет возможности работать именно с компонентом и с его datasource (при его наличии)
PM MAIL   Вверх
GremlinProg
Дата 28.12.2016, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Boltina @  27.12.2016,  18:27 Найти цитируемый пост)
А как понять что нет возможности работать именно с компонентом и с его datasource (при его наличии) 

У меня нет исходников под рукой. Посмотрите в CreateParams, какой класс окна создается для контрола в TDBGrid или его предках (в TMemo, например - это класс EDIT)
Если ни какого, то смотрите, какие сообщения обрабатывает этот компонент. Вполне возможно, что можно получить необходимую Вам информацию через них (это API компонента).
В Delphi хорошо развито общение между компонентами через такие внутренние сообщения.

И только если ни чего из этого не помогает - можно пробовать получить данные.
Для начала - в одном адресном пространстве (в одном процессе).


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1317 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.