![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
Вообщем такая проблема.
Есть активное окно. в нём есть компонент Edit. В этом Edit записан какой-то текст. Например "123". В данном окне Editov много. Дак вот как найти Хендл именного того, в котором записанно "123"? |
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
Перебирать все эдиты (например EnumChildWindows) и смотреть какой в них текст (например GetWindowText).
PS если это в своем приложении, то все намного проще |
|||
|
||||
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
Если не сложно, покажи пример рабочего кода.
|
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
drkb, google. msdn наконец. примеров много.
|
|||
|
||||
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
Пасиб конечно, но drkb и google я смотрел. до меня туго доходит. вот и попросил тя пример раболчего кода показать.
|
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
Показывай что не получается, там уже будет видно.
А так, в центр помощи. |
|||
|
||||
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
каким образом можно перебрать едиты?.
|
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 18 Всего: 50 |
|
|||
|
||||
THandle |
|
||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Qu1nt, это TEdit'ы в своем окне, а если надо найти что то еще?
Примеров предостаточно в интернете, но ссылку давать не буду, искать не могу, GPRS. Вот пример:
Ищет в окне, переданном в параметре HWND все окна класса TEdit. Если нашел, то показывает сообщение об этом. В общем просто пример. Можно искать окна любого класса... Вызываем для своего окна:
|
||||
|
|||||
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
THandle, а как теперь найти хендл того, в котором текст "123"?
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
добавить проверку
GetWindowText -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
По коду THandle хочется сказать, что надо добавить результат, возвращаемый функцией
Желательно вместо GetClassName использовать RealGetWindowClass и делать проверку на 'EDIT'. |
|||
|
||||
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
Если не сложно, покажи пример кода, а то чёт неполучается нифига. |
|||
|
||||
COOLHack |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
а поле edit в котором нужно найти текст "123" как раз в другой программе. |
||||
|
|||||
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
Это работает ттолько в своей проге. а как сделать тоже самое, но в чужой, если чужое окно в момеент выполнения кода активное? |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
||||
|
||||
THandle |
|
||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Так:
Вот так вызываем:
Или можно в цикле перебирать окна с помощью GetWindow(HWND, GW_HWNDNEXT) |
||||
|
|||||
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
Работает, РЕСПЕКТ!.
Добавлено через 12 минут и 44 секунды А как искать это в чужом окне? Когда я пишу так: HWND:=findwindow(nil, 'blblbl') то ничего не ищется. При этом в HWND 100% хендл окна. Это сообщение отредактировал(а) COOLHack - 19.8.2008, 12:03 |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
COOLHack,
Функцию саму не трожь!!!! Меняй вызов:
Добавлено через 11 минут и 3 секунды Почитай: http://msdn.microsoft.com/en-us/library/ms633494(VS.85).aspx http://msdn.microsoft.com/en-us/library/ms633493(VS.85).aspx HWND в функции EnumChild это найденное дочернее окно, а то что передаются в HWND EnumChildWindows - родительское окно, на котором и будет происходить поиск. |
|||
|
||||
COOLHack |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 281 Регистрация: 8.2.2008 Репутация: нет Всего: 0 |
Пасиб.
|
|||
|
||||
Larry |
|
|||
![]() Ленивый донгловед Профиль Группа: Участник Сообщений: 14 Регистрация: 16.9.2007 Где: Россия Репутация: нет Всего: нет |
Не совсем понял, как реализовать перебор окон с заданным текстом. Мне больше по душе GetWindow. Я делаю так:
Мне нужно найти компоненту ClaEdit с вбитым туда текстом ' 999'. Но у меня программа не то, чтобы не находит эту компоненту, но даже из цикла while почему-то не выходит. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Это сообщение отредактировал(а) Romikgy - 9.12.2008, 16:35 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Larry |
|
|||
![]() Ленивый донгловед Профиль Группа: Участник Сообщений: 14 Регистрация: 16.9.2007 Где: Россия Репутация: нет Всего: нет |
Romikgy, спасибо за помощь. Вечером буду пробовать.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |