|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
04.07.2007, 14:42 | #1 |
Регистрация: 01.07.2007
Сообщений: 4
|
Нужно программно найти окно программы и нажать на нем кнопку
Ну как найти окно я знаю. А как кнопку на нем найти и нажать? Не подскажете?
http://i-info.iplot.ru/
icq: 434327678 |
04.07.2007, 15:20 | #2 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Код:
Сматры не пэрэпутай, Кутузов
пыщь
|
04.07.2007, 16:07 | #3 |
Пользователь
Регистрация: 08.04.2007
Сообщений: 15
|
Насчёт предыдущего примера - он не универсален, т.к. будет работать, только если кнопка находитяся непосредственно на форме.
Кратко о навигации по окнам: У каждого окна (формы) как правило есть дочерние окна, т.е. объекты, находящиеся на этой форме. Каждого из этих объектов могут быть свои дочерние объекты, а у тех свои и т.д. Вот пример иерархии вложенности: ...................Главная______фор ма.......................... .................../........................... \........................ ............Панель N1 ................. Панель N2............... .........../........... \.................. /.............\.............. ....нопка N1 .... Кнопка N2 ... Панель N3 ... Кнопка N3 ................................... ......./................................ ................................... Кнопка N4.......................... Таким образом навигацию по окнам можно сравнить с навигацией по файловой системе. Раз у вас уже есть хэндл (назовём его hMain) "Главной формы", то остаётся "добраться" до нужной кнопки. Сделать это можно так: Напишем рекурсивную функцию, которая будет обходить наше "оконное дерево", ища кнопку с именем "Кнопка N3". Вид функции: HWND Walk(HWND Current,char * Name); Где-нибудь в программе делаем вызов target=Walk(hMain,"Кнопка N3"). Код:
Если обект найден, то на него осталось только нажать: SendMessage(target,WM_LBUUTONDOWN,0 ,0); И "отжать" его: SendMessage(target,WM_LBUUTONUP,0,0 ); Простите, что имею нагласть вопреки названию форума писать примеры на Си - я давно не писал на паскале и, решись я на это, я обрёк бы свой код быть одной большой ошибкой. Если кто-то считает это недопуститым - пишите, я перепишу этот пример на паскале и впредь буду использовать только его. Кстати. Если интересно, то вот программа (всесте с исходниками разумеется), которую я написал (как ни странно на дельфи), когда учился работать с чужими окнами. Она позволяет управлять любыми запущенными окнами и их дочерними объектами, как то скрывать и показывать их, переименовывать, рисовать на них, перемещать, унечтожать, ставить и снимать блокировку (послееднее особенно полезно, когда очень хочется нажать на кнопочку, а она по каким-то причинам недоступна).
Практика - лучший критерий истины. К.Маркс.
Последний раз редактировалось unnamed; 04.07.2007 в 16:24. |
04.07.2007, 18:03 | #4 |
Регистрация: 01.07.2007
Сообщений: 4
|
Что-то у меня ни один вариант не пашет(( Не знаю почему.
Вот есть запущенное окно подключения к интернету моего провайдера wanPPPoe с заголовком Connect altair и кнопкой Connect Вот код: Код:
И если это защита, то можт там класс у кнопок какой стремный? Не знаете, как я могу узнать класс кнопки? Даа точно, со своей программкой все работает. Значит что-то там не то. Наверно классы.
http://i-info.iplot.ru/
icq: 434327678 Последний раз редактировалось Stilet; 09.03.2010 в 07:58. |
04.07.2007, 18:20 | #5 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Пардон, не буду больше бред писать =) там в FindWindow парамерты местами поменять надо, да и bm_click не будет работать
Вот пришлось фасм быстренько скачать, рабочий код, жмет ОК в диалоге выполнить, ну в дельфе думаю ясно как Код:
Вот короче. ДОЛЖНО уже работать, надеюсь. дельфы рядом нет, проверить не могу, звыняйте Код:
-- А, ну да, unnamed прав, может эта твоя проглятая кнопка не просто на форме лежит. Шли скриншот
пыщь
Последний раз редактировалось JTG; 04.07.2007 в 18:40. |
04.07.2007, 18:56 | #6 |
Регистрация: 01.07.2007
Сообщений: 4
|
Млиин чуваак!! Я то думал что ты просто опечатался когда написал "&Connect" )) Я уже хотел забить на это дело но случайно прочитал последнюю строчку Действительно с классом "Button" и текстом "&Connect" все работает. Ну про текст понятно,но почему класс кнопки не TButton, а просто Button?
http://i-info.iplot.ru/
icq: 434327678 |
04.07.2007, 19:00 | #7 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
TButton TCheckBox etc. это всё от дяди Борманда. В WinAPI таких классов нет. Там просто Button
DelphiWorld какашка!!! За такие примеры руки в обратную сторону выгибать надо
пыщь
|
04.07.2007, 19:03 | #8 |
Регистрация: 01.07.2007
Сообщений: 4
|
Ну ясно. Вобщем спасибо что помогли!
http://i-info.iplot.ru/
icq: 434327678 |
13.07.2007, 18:13 | #9 |
Регистрация: 13.07.2007
Сообщений: 6
|
Если нужно работать с приложением писанным на дельфи то вот так:
Код:
|
13.07.2007, 23:12 | #10 |
Пользователь
Регистрация: 08.04.2007
Сообщений: 15
|
Если известны только относительные координаты (x0,y0) кнопки, то можно нажать на неё мышкой
Код:
Практика - лучший критерий истины. К.Маркс.
Последний раз редактировалось unnamed; 13.07.2007 в 23:15. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не могу нажать на кнопку 'Отправить' с помощью IdHTTP | Dron_kss | Работа с сетью в Delphi | 3 | 17.04.2009 13:34 |
Нажать кнопку | Dron_kss | Работа с сетью в Delphi | 1 | 28.03.2009 17:33 |
Программно нажать кнопку | DeDoK | Общие вопросы Delphi | 2 | 04.05.2008 21:46 |
Нажать кнопку | Teen4jump | Работа с сетью в Delphi | 11 | 29.02.2008 08:33 |
Как программно нажать Ctrl + V | ffo | Win Api | 11 | 29.07.2007 17:58 |