Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Доступ к компонентам другого приложения [D6, Win2k]


Alexey ©   (2004-03-05 10:51:00) 

Как считать данные из компонента Tree  View другого приложения


Digitman   (2004-03-05 14:04:00) [1]


> Alexey   (05.03.04 13:50) [9]


то что ты получаешь 0 как рез-т вызова упомянутых макросов, говорит только об одном - хэндл целевого окна ты определил неверно

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


Alexey   (2004-03-05 14:04:00) [2]

To MBo:
Вот я и хочу для начала считать правильно хотя-бы число узлов.

To Digitman:
Спасибо. Я понял, что в дальнейшем чтобы получить структуру HTREEITEM (или другую если это не TreeView) мне придется внедрятся в адресное пространство целевого процесса, но пока эта задача еще не стоит.


Digitman   (2004-03-05 13:56:00) [3]


> Alexey   (05.03.04 13:50) [9]


ты в состоянии понять, что этот код  д.б. выполнен в ВАП целевого, а не твоего собственного процесса ?


MBo   (2004-03-05 13:54:00) [4]

TreeView_GetCount (вызывающий TVM_GETCOUNT) вернет число узлов, поскольку для этого достаточно передать непосредственное значение в параметре сообщения, однако лишь некоторые свойства контрола можно так получить (cм. [4])


Alexey   (2004-03-05 13:50:00) [5]

В Windows SDK сказано:

UINT TreeView_GetCount(hwnd);
Parameters hwnd Handle to the tree-view control.
Return Values
Returns the count of items.

Может что не так, подскажите?


Alexey   (2004-03-05 13:43:00) [6]

Пробовал:
TreeView_GetCount("Handle программы написанной мной на Delphi содержащий компонент TTreeView") всё Ок.
Так что думаю Handle нахожу правильно. Не ясен тип контрола к которому обращаюсь.


Digitman   (2004-03-05 13:41:00) [7]

да, MBo прав : даже если хэндл контрола определен верно, упомянутый тобой код д.б. выполнен в ВАП целевого (а не твоего собственного) процесса


Digitman   (2004-03-05 13:38:00) [8]


> нахожу следующие компоненты


судя по тому, что ты находишь, никакого отношения к компонентам делфи это не имеет

равно как и Делфи-формами там никакими не пахнет

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

касаемо же "пробовал считывать" мысль одна - хэндл целевого контрола (не компонента !!!) тобой определен неверно


Alexey   (2004-03-05 13:35:00) [9]

У компонента TREELISTCONTROLCLASS есть в Child-ах SysHeader32
Может это чем-то поможет.
________________________________________
А насчет данных, пока нечего читать, но спасибо за совет, обязательно поищу.


MBo   (2004-03-05 13:31:00) [10]

Найди в кладовке пример доступа к ListView чужого процесса, и делай по аналогии, а также читай Рихтера о внедрении в другой процесс.
Причины: большинство сообщений, достающих информацию об этих контролах, требуют передачи адреса структуры данных, а адрес этот - в чужом адресном пространстве.


Alexey   (2004-03-05 13:26:00) [11]

Вообще на форме нахожу следующие компоненты:
CAPTION: no name
CLASS: TREELISTCONTROLCLASS
___________________________
CAPTION: Tree
CLASS: Afx:400000:8:10011:1100060:0

Пробовал считывать ListView_GetItemCount(Handle)
и TreeView_GetCount(Handle) для каждого дает ноль.
Есть мысли?


Digitman   (2004-03-05 11:19:00) [12]


> Alexey   (05.03.04 10:51)  


именно из компонента TTreeView ? или из TreeView как общесистемного Win-контрола ? разные же вещи..


Cobalt   (2004-03-05 11:03:00) [13]

Может, если прога скомпилирована с BPL, будет проще.
А если нет - то придётся заморачиваться со свойсвами окон (GetWindowExtra, кажется...)
Проще считывать инфу не из компонентов, а из окон


Наверх

Титульная страница Поиск, карта сайта Написать письмо