Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать HWND кнопки 
:(
    Опции темы
kapbepucm
Дата 20.9.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Окно сторонней программы с кучей кнопок. Надо Handle конкретной кнопки получить. Знаю расположение, надпись "Start" и кнопка активна (Enter'ом сразу нажимается).
Пробывал разные способы, но получил только Handle родительского окна. Может кнопка просто нарисована? Подскажите что-нибудь.

Это сообщение отредактировал(а) kapbepucm - 20.9.2007, 16:26


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
zkv
Дата 20.9.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 12
Всего: 92



посмотри спаем (spy++ в составе VS) ID кнопки, через него и дотягивайся
PM MAIL   Вверх
Alexeis
Дата 20.9.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 7
Всего: 459



kapbepucm, Так FindWindow и ищет только родительские окна. 

Цитата

To search child windows, beginning with a specified child window, use the FindWindowEx function.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
NikeDeForest
Дата 20.9.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 15.9.2007

Репутация: нет
Всего: 2



Я делал глобальный хук на правую кнопку мыши и щелкал над необходимым мне элементом чужого приложения
--------------------
Еще один вопрос ...
PM   Вверх
Alexeis
Дата 20.9.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 7
Всего: 459



NikeDeForest, Ну это примерно как пушкой по воробьям smile . 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Mihhail
Дата 20.9.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 13.9.2007

Репутация: 5
Всего: 9



Цитата(kapbepucm @  20.9.2007,  20:22 Найти цитируемый пост)
Окно сторонней программы с кучей кнопок. Надо Handle конкретной кнопки получить. Знаю расположение, надпись "Start" и кнопка активна (Enter'ом сразу нажимается).Пробывал разные способы, но получил только Handle родительского окна.

Если известен Handle родительского окна, перебираем дочерние окна и проверяем надписи на них.
Код

HwSt = GetWindow( Handle, GW_CHILD );
while( HwSt ){
   GetWindowText( HwSt, str, max );
   if( !strcmp( str, "Start" ) ) break;
   HwSt = GetNextWindow( HwSt, GW_HWNDNEXT );
   }
if( HwSt ) ...... //Найдено нужное  


Если известны примерные координаты кнопки можно воспользоваться функцией:
HWND ChildWindowFromPoint(
    HWND hWndParent,    // handle to parent window
    POINT Point               // structure with point coordinates
   );

Это сообщение отредактировал(а) Mihhail - 20.9.2007, 21:39
PM MAIL WWW   Вверх
kapbepucm
Дата 21.9.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Спасибо, сейчас попробую!


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
NiJazz
Дата 21.9.2007, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



PM MAIL   Вверх
kapbepucm
Дата 21.9.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



А есть хороший програмный способ узнать HWND дочернего окна, незная HWND родителя но зная заголовок? Например хочу увидеть все кнопки "OK".

Это сообщение отредактировал(а) kapbepucm - 21.9.2007, 14:33


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Alexeis
Дата 21.9.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 7
Всего: 459



  По крайней мере можно найти все окна и пройтись по всем дочерним компонентам...


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
NikeDeForest
Дата 21.9.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 15.9.2007

Репутация: нет
Всего: 2



Alexeis, мне так проще показалось smile
--------------------
Еще один вопрос ...
PM   Вверх
Alexeis
Дата 21.9.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 7
Всего: 459



NikeDeForest, так я не с точки зрения простоты, а с точки зрения нагрузки на систему.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
kapbepucm
Дата 2.10.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(Alexeis @  21.9.2007,  13:19 Найти цитируемый пост)
По крайней мере можно найти все окна и пройтись по всем дочерним компонентам...
Не могу нигде пример найти... Задача: есть форма чужого процесса с кучей кнопок (явно дочки). Есть несколько кнопок "OK". Мне надо знать HWND всех этих кнопок. Покажите алгоритм пробега по дочкам. Уже, наверно, самостоятельно не справлюсь...
smile smile smile 

Это сообщение отредактировал(а) kapbepucm - 2.10.2007, 16:25


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Alexeis
Дата 2.10.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 7
Всего: 459



kapbepucm, так Mihhail в своем уже показал перебор дочерних компонентов. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
kapbepucm
Дата 3.10.2007, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Странно, но данным примером я нахожу первую дочку и больше ничего... Может есть способ иначе действующий?

Это сообщение отредактировал(а) kapbepucm - 3.10.2007, 07:58


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.