| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Нахождения компонентов другой программы |
| Автор: chiffa 4.7.2011, 10:34 | ||||
| Всем добрый день. Стоит задача получить информацию из определенных полей сторонней программы. Столкнулся с двумя основными проблемами. 1. Spy++ исследовал программу, получить такую структуру:
Перебираю элементы:
и основная проблема: как обратиться к третьему элементу TShape т.к. именно в нем находится нужный мне TRichEdit. И 2я непонятка. Программа находит и определяем хендлы, только когда приложение активно (то есть моя программка находится над ним), если же приложение в котором ведется поиск не активно или свернуто, почему то ничего не находит... Буду признателен за подсказки и помощь! Заранее всем спасибо! |
| Автор: Keeper89 4.7.2011, 16:33 |
| Что за программа? |
| Автор: chiffa 4.7.2011, 17:25 |
| Самописная (не мною)... |
| Автор: Keeper89 4.7.2011, 21:24 |
| Пощупать где можно взять? |
| Автор: chiffa 4.7.2011, 22:10 |
| к сожалению это нереально :( а универсального способа пройтись по всем компонентам нельзя?... |
| Автор: Keeper89 5.7.2011, 00:49 |
| Ну чем то вкладки отличаются? |
| Автор: northener 5.7.2011, 02:18 |
А при чём тут вкладки? Автору нужно на "какой-то вкладке" обнаружить некий "третий элемент TShape", который как автору показывает Spy++, является Parent'ом для какого-то "элемента TRichEdit". Вкладки он находит, судя по всему. Но вот "третий элемент" ему найти не удаётся. Не Брюс он Уиллис! |
| Автор: Keeper89 5.7.2011, 02:39 |
Ну так сначала надо вкладку определить или я не прав? |
| Автор: northener 5.7.2011, 03:27 |
Прав. Конечно прав. Только автору это не поможет. ((( Даже если он эту вкладку найдёт. Чем-то всё это мне напоминает знаменитое "угадал все буквы, не смог угадать слово". |
| Автор: bems 5.7.2011, 09:46 | ||
|
| Автор: chiffa 5.7.2011, 09:51 |
| Вкладки то я как раз нахожу, нормально, и первый TShape нахожу, а вот как обратится к третьему TShape - не знаю... Добавлено через 5 минут и 43 секунды Сорри... Я вообщем не путаю... инет просто лагает дико и стили посьезжали крайне трудно ориентироваться на странице... еще раз сорри... |
| Автор: Keeper89 5.7.2011, 10:23 |
| Вкладку определил, ок. В каждом шейпе есть РичЕдит? Если нет - то перебери все и как только встретишь один с РичЕдитом, его и бери. |
| Автор: chiffa 5.7.2011, 11:01 |
| ЭТо то я понимаю.. Но как их перебрать?... можно пример кода? |
| Автор: Keeper89 5.7.2011, 11:56 |
| Через EnumWindows. Где-то в этих темах я приводил пример: http://forum.vingrad.ru/forum/topic-265526/hl/findwindow/index.html http://forum.vingrad.ru/forum/topic-261954/hl/findwindow/index.html |
| Автор: chiffa 5.7.2011, 12:42 |
| Спасибо за ссылки, но что то я там не нашел там примеров с EnumWindows... Если не затруднит можешь скопировать сюда?.... |
| Автор: Keeper89 5.7.2011, 13:01 |
| Пройдись еще раз, должны быть |
| Автор: Dik0n 5.7.2011, 14:12 | ||
| Народ Вы о чем, TShape это графический элемент он не имеет Handle и на нем нельзя размещять компоненты и EnumWindows тут не поможет. искать надо примерно так, хватит и одной переменной
|
| Автор: Rrader 5.7.2011, 14:22 | ||
| Dik0n, раз у ТС речь идёт о Spy++, то это получается нестандартный TShape с хэндлом. По теме:
|
| Автор: chiffa 5.7.2011, 15:02 |
| Спасибо всем! То что нужно! А насчет того что находит только когда окно активно?... Какие могут быть варианты?... |
| Автор: Keeper89 5.7.2011, 15:44 |
| Dik0n, Rrader сказал правильно, значит он не обычный |
| Автор: Dik0n 5.7.2011, 16:21 |
| Keeper89, Вы не поняли, у chiffa уже все прекрасно работает, ньюанс в том, если окно свернуто, то функции по поиску окна не работают... |
| Автор: chiffa 5.7.2011, 16:47 |
| да именно так... непонятно только почему.... |
| Автор: Rrader 5.7.2011, 17:22 |
| Какой хэндл не находится, когда программа свернута? |
| Автор: chiffa 5.7.2011, 17:42 |
| TPageControl.... |
| Автор: chiffa 5.7.2011, 18:00 |
| Ошибка найдена... формы с заглавным именем класса TfrmMain запущено несколько, поэтому оно и не подхватывает ту которая активна, если не активны все, то хрен знает по какому принципу оно определяет первую форму... Отсюда вопрос: как задать именно нужную мне окно (кроме как прописать тайтл)?... |
| Автор: Rrader 6.7.2011, 05:16 |
| Тогда скажи нам, есть ли у нужной формы какие-нибудь уникальные признаки? |
| Автор: chiffa 6.7.2011, 08:36 |
| А что значит уникальные признаки?Я всегда считал что уникальный признак это Имя класса и заголовок, как показала практика я ошибался... Перебирать все компоненты со всех форм и сравнивать с заранее заданной структурой - иррационально... |
| Автор: Rennigth 7.7.2011, 10:15 | ||
Ну почему иррационально(чего в жизни иногда не зделаешь ради победы |