![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Окно сторонней программы с кучей кнопок. Надо Handle конкретной кнопки получить. Знаю расположение, надпись "Start" и кнопка активна (Enter'ом сразу нажимается).
Пробывал разные способы, но получил только Handle родительского окна. Может кнопка просто нарисована? Подскажите что-нибудь. Это сообщение отредактировал(а) kapbepucm - 20.9.2007, 16:26 -------------------- (С) kapbepucm |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 12 Всего: 92 |
посмотри спаем (spy++ в составе VS) ID кнопки, через него и дотягивайся
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
kapbepucm, Так FindWindow и ищет только родительские окна.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Я делал глобальный хук на правую кнопку мыши и щелкал над необходимым мне элементом чужого приложения
--------------------
Еще один вопрос ... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
NikeDeForest, Ну это примерно как пушкой по воробьям
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
Если известен Handle родительского окна, перебираем дочерние окна и проверяем надписи на них.
Если известны примерные координаты кнопки можно воспользоваться функцией: HWND ChildWindowFromPoint( HWND hWndParent, // handle to parent window POINT Point // structure with point coordinates ); Это сообщение отредактировал(а) Mihhail - 20.9.2007, 21:39 |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Спасибо, сейчас попробую!
-------------------- (С) kapbepucm |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
||||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
А есть хороший програмный способ узнать HWND дочернего окна, незная HWND родителя но зная заголовок? Например хочу увидеть все кнопки "OK".
Это сообщение отредактировал(а) kapbepucm - 21.9.2007, 14:33 -------------------- (С) kapbepucm |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
По крайней мере можно найти все окна и пройтись по всем дочерним компонентам...
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Alexeis, мне так проще показалось
--------------------
Еще один вопрос ... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
NikeDeForest, так я не с точки зрения простоты, а с точки зрения нагрузки на систему.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Это сообщение отредактировал(а) kapbepucm - 2.10.2007, 16:25 -------------------- (С) kapbepucm |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
kapbepucm, так Mihhail в своем уже показал перебор дочерних компонентов.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Странно, но данным примером я нахожу первую дочку и больше ничего... Может есть способ иначе действующий?
Это сообщение отредактировал(а) kapbepucm - 3.10.2007, 07:58 -------------------- (С) kapbepucm |
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
kapbepucm, вот кусок кода с Архангельского по Builder но всё кроме вывода API:
|
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Попытасля поработать с калькулятором- всё работает идеально (все дочки видны). Но если перейти к моей сторонней форме, то средствами EnumChildWindows или GetWindow нахожу только одну дочку без заголовка с каким-то классом Container60000000. Некоторое время назад комплекс VS потерпел у меня крах (по независящим от меня обстоятельствам пока не имею возможности это исправить), поэтому не могу пользоваться SPY++. Как поступать дальше?
NikeDeForest, по-подробнее расскажи как пушкой по воробьям, что-то даже это направляет меня к одной и той-же дочке... Это сообщение отредактировал(а) kapbepucm - 3.10.2007, 14:48 -------------------- (С) kapbepucm |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Скорее всего, форма и содержит одно окно-контейнер, а все кнопки - уже в нем.
Проверь это дело с помошью Спая. И ищи не конкретно в данном окне, а в этой самой дочке. Кстати, вложенность может быть и глубже... -------------------- ... |
|||
|
||||
| NikeDeForest |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
запуск хука
остановка хука
сама длл с хуком
Это по сути пример, переделанный из книги "С++ глазами хакера". Если есть эта книга, то туда глянь. Там в том числе и описано то, что тебе здесь уже предлагали - пробежать все окна (в том числе дочерние). --------------------
Еще один вопрос ... |
||||||
|
|||||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Вот, это будет для тебя более фундаментально и полезно http://www.rsdn.ru/article/baseserv/hookdll.xml
--------------------
Еще один вопрос ... |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Приветствую, это опять я. "Допрашивая" спая, удалось выяснть как там всё устроено. Как Earnest говорил, там многоуровневая вложеность. Теперь задача несколько поменялась. Мне надо пройтись от дочки до "первого" родителя. Подскажите, как это можно реализовать, изначально зная только HWND.
-------------------- (С) kapbepucm |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Изначально зная HWND чего? Если кнопки то GetParent(hwnd) и так далее до главного окна. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Русский язык допускает обращаться к неопределённому лицу как к лицу муж. рода
А по делу, GetParent- это первое, что я испытывал; так я получал 0 в ответ -------------------- (С) kapbepucm |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Подожди, а зачем тебе зная HWND кнопки получать HWND родителя?
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Хочу понять, почему то, что умеет спай, не могу реализовать я (стандартными функциями API). Собственоручно выяснил, что у главного родителя нет детей, а у дочерней кнопки нет родителя- так спай имеет другое (я думаю он прав) мнение. Что за $$$$$? На стандартном виндовском калькуляторе всё получается
Это сообщение отредактировал(а) kapbepucm - 26.10.2007, 14:14 -------------------- (С) kapbepucm |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Судя по тому, что GetParent говорит, да
-------------------- (С) kapbepucm |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |