Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизДоступ к компонентам другого приложения Найти похожие ветки
← →
Alexey (2004-03-05 10:51) [0]Как считать данные из компонента Tree View другого приложения
← →
Cobalt © (2004-03-05 11:03) [1]Может, если прога скомпилирована с BPL, будет проще.
А если нет - то придётся заморачиваться со свойсвами окон (GetWindowExtra, кажется...)
Проще считывать инфу не из компонентов, а из окон
← →
Digitman © (2004-03-05 11:19) [2]
> Alexey (05.03.04 10:51)
именно из компонента TTreeView ? или из TreeView как общесистемного Win-контрола ? разные же вещи..
← →
Alexey (2004-03-05 13:26) [3]Вообще на форме нахожу следующие компоненты:
CAPTION: no name
CLASS: TREELISTCONTROLCLASS
___________________________
CAPTION: Tree
CLASS: Afx:400000:8:10011:1100060:0
Пробовал считывать ListView_GetItemCount(Handle)
и TreeView_GetCount(Handle) для каждого дает ноль.
Есть мысли?
← →
MBo © (2004-03-05 13:31) [4]Найди в кладовке пример доступа к ListView чужого процесса, и делай по аналогии, а также читай Рихтера о внедрении в другой процесс.
Причины: большинство сообщений, достающих информацию об этих контролах, требуют передачи адреса структуры данных, а адрес этот - в чужом адресном пространстве.
← →
Alexey (2004-03-05 13:35) [5]У компонента TREELISTCONTROLCLASS есть в Child-ах SysHeader32
Может это чем-то поможет.
________________________________________
А насчет данных, пока нечего читать, но спасибо за совет, обязательно поищу.
← →
Digitman © (2004-03-05 13:38) [6]
> нахожу следующие компоненты
судя по тому, что ты находишь, никакого отношения к компонентам делфи это не имеет
равно как и Делфи-формами там никакими не пахнет
иными словами, целевое приложение не является Делфи-приложением. а это значит, что ни о каких "формах" и "компонентах" (в привычном для Делфи-программинга смысле) речи быть не может
касаемо же "пробовал считывать" мысль одна - хэндл целевого контрола (не компонента !!!) тобой определен неверно
← →
Digitman © (2004-03-05 13:41) [7]да, MBo прав : даже если хэндл контрола определен верно, упомянутый тобой код д.б. выполнен в ВАП целевого (а не твоего собственного) процесса
← →
Alexey (2004-03-05 13:43) [8]Пробовал:
TreeView_GetCount("Handle программы написанной мной на Delphi содержащий компонент TTreeView") всё Ок.
Так что думаю Handle нахожу правильно. Не ясен тип контрола к которому обращаюсь.
← →
Alexey (2004-03-05 13:50) [9]В Windows SDK сказано:
UINT TreeView_GetCount(hwnd);
Parameters hwnd Handle to the tree-view control.
Return Values
Returns the count of items.
Может что не так, подскажите?
← →
MBo © (2004-03-05 13:54) [10]TreeView_GetCount (вызывающий TVM_GETCOUNT) вернет число узлов, поскольку для этого достаточно передать непосредственное значение в параметре сообщения, однако лишь некоторые свойства контрола можно так получить (cм. [4])
← →
Digitman © (2004-03-05 13:56) [11]
> Alexey (05.03.04 13:50) [9]
ты в состоянии понять, что этот код д.б. выполнен в ВАП целевого, а не твоего собственного процесса ?
← →
Digitman © (2004-03-05 14:04) [12]
> Alexey (05.03.04 13:50) [9]
то что ты получаешь 0 как рез-т вызова упомянутых макросов, говорит только об одном - хэндл целевого окна ты определил неверно
но даже если ты получишь не 0, прочитать данные об узлах непосредственно из своего процесса ты не сможешь - соотв-е макросы должны быть вызваны в ВАП того процесса, который создал и владеет интересующим тебя контролом
← →
Alexey (2004-03-05 14:04) [13]To MBo:
Вот я и хочу для начала считать правильно хотя-бы число узлов.
To Digitman:
Спасибо. Я понял, что в дальнейшем чтобы получить структуру HTREEITEM (или другую если это не TreeView) мне придется внедрятся в адресное пространство целевого процесса, но пока эта задача еще не стоит.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c