![]() |
Написать прогу, которая будет нажимать кнопки в чужом окне
Помогите, серьёзная проблема. Мне надо прогу напсать, она должна нажимать на чужие Батоны (кнопки в чужом окне). Это можно сделать программно через посылку сообщения по Хендлу контрола. Я могу конечно вычислить хендля объекта под крысой, но это неудобно(каждый раз тыкать прогу носом в чужой контрол). Скажите, нельзя ли по хендлу окна вычислить хендлы его дочерних контролов. Причём, скажу сразу, в Винде их хендлы неизвестны, они не регистрируются и поиск через FindWindow бесполезен.
Зарание благодарен. |
В таком случае и писать нечего есть программы автоматизаторы выполняющие заданные тобой последовательности действий.
Просто один раз проделываешь нужные манипуляции прога их записывает, а после повторяет один в один |
Цитата:
В "Винде" всё известно. FindWindow ищет только окна верхнего уровня. Из MSDN: Код:
The FindWindow function retrieves a handle to the top-level window ....Из MSDN: Код:
HWND FindWindowEx( HWND hwndParent, |
Не-е-е-е!
Нет, ты не так понял. моя программа - не просто нажималка.
Вообще у нас в ВГУ на ФКН часто используется локальный чат NSCat (написан нашими же). Но в неём куча недостатков и мало функций. Я решил было его модернизировать, но исходников не получил. Менч посетила идея: мне нужно всего лишь научиться вставлять в поле редактора текст сообщения и нажимать на "Отправить" программным способом. Это вкратце, на самом деле я задумал большее... И всё упирается в поиск дочерних объектов. Помогите. :молись: alexey_ma Спасибо большое за подсказку. Я только не пойму, что за параметр Child: HWND. Если не трудно, просвети, а? :confused: |
SolidSnake
А если сделать по-другому: прослушать сеть и определить, по какому порту идет связь между клиентами, а так же каков формат посылаемого сообщения (содержит ли оно какие-либо управляющие символы или просто голый текст); написать прогу, которая будет создавать сокет-клиент на этом порту и отправлять твои сообщения... И еще, насчет поиска окон: c помощью Код:
HWND FindWindow(Код:
BOOL EnumChildWindows( |
Цитата:
Если про GetWindow то вот пример поиска дочернего окна по заголовку: Код:
HWND CXXXXX::FindBtnPreview()GetWindow потому что : MSDN Код:
This function is more reliable than calling the GetWindow function in a loop. |
Давайте сделаем попроще.
Дано: в какой-то проге контрол. Его classname='button', windowname='caption'. Найти: хэндл этого контрола. Примечание 'button' и 'caption' - реальные класс и имя контрола. Они зарание известны. Укого есть какие предложения, дайте, пожалуйста, код. Ещё раз всем спасибо. |
Если у тебя есть хендел главного окна в котором нужно искать ребенка то можешь сделать примерно так :
Код:
HWND MyFindWindow(HWND hParent, const CString& strCaption,const CString& strClassName)То есть сделай сначала так: HWND hFirstChild = ::GetWindow(hParent,GW_CHILD); А потом вызов функции HWND hFoundWindow=MyFindWindow(hFirstChild ,strCaption,strClassName); Надеюсь :yees: что вся эта пурга будет работать. |
| Часовой пояс GMT +4, время: 09:14. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.