Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2010, 17:26   #1
arach
 
Регистрация: 06.07.2010
Сообщений: 3
Лампочка Как нажать на кнопку в программе.

Вопросы уже задавались, но проблема такая:

Имеется несколько ОТКРЫТЫХ программ. В каждой программе должна нажиматься кнопка СТАРТ, по окончанию работы предыдущей. Запускать все в ручную надоело - каждая программа до окончания действия работает по 1 часу примерно. Т.е, указываешь время работы, путь к файлам .exe (Если это возможно, то именно путь). Программа сначала нажимает кнопку СТАРТ у одной из программ, по истечению таймаута (скажем 1 час, когда первая программа закончит работу) нажимает СТАРТ у второй программы и т.д. Как это все организовать?

Вид программ:


Язык программирования, с которым работаю - Delphi.

Последний раз редактировалось arach; 03.09.2010 в 17:28.
arach вне форума Ответить с цитированием
Старый 03.09.2010, 18:03   #2
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
По умолчанию

К примеру так:

На форме ТВОЕЙ ПРОГРАММЫ, а не той у которой нажать надо, кнопка "старт", поле ввода "Имя программы", поле ввода "Задержка".

При нажатии на кнопку "старт":

- запускаеш программу, имя которой в поле ввода "Имя программы" (ф-ция CreateProcess), хендл сохраняеш;
- По получившиму хендлу ишеш кнопку которую нужно нажать:
1. Качаеш программу WinDowse, запускаеш и наводиш мышку на нужную кнопку, во вкладке Parents смотриш всех ее родителей (Хендл первого родителя уже есть - это хендл запушенной программы).
2. Во вкладке Window смотри класс и текст самой кнопки, и по очереди функцией FindWindowsEx (параметры смотри в MSDN) ищи хендл нужной кнопки.
- Хендл кнопки есть, теперь отправляй 2 сообщения подряд:
SendMessage(хендл кнопки,WM_LBUTTONDOWN,0,0)
SendMessage(хендл кнопки,WM_LBUTTONUP,0,0)
Это имитация нажатия кнопки
Все, программа работает!
- Бери значение из поле ввода "Задержка" и вызывай Sleep
- Потом, как Sleep отработала вызывай TerminateProcess (закрываеш программу)
- Возвращайся на начало ( - запускаеш программу, имя которой в поле ввода "Имя программы" (ф-ция CreateProcess), хендл сохраняеш)
|{ot вне форума Ответить с цитированием
Старый 03.09.2010, 18:48   #3
arach
 
Регистрация: 06.07.2010
Сообщений: 3
По умолчанию

Все это хорошо, но возможно ты меня не до понял
Программу закрывать не нужно, она так и остается работать, просто действие должно перейти следующей программе, как - хз. Задержку я задаю сам, она не зависит от задержки рабочих программ.
arach вне форума Ответить с цитированием
Старый 03.09.2010, 20:16   #4
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
По умолчанию

Цитата:
Задержку я задаю сам, она не зависит от задержки рабочих программ.
Так и предполагаю.

Цитата:
просто действие должно перейти следующей программе, как - хз
А следующая программа обязательно должна быть уже запущенна, или же ее можно запустить из программы-управления?? Запуская из программы-управления - как по мне проще, если же так не хочешь, то у первой программы после запуска кнопки СТАРТ измени заголовок окна на другой, а как нужно будет уже второй программе СТАРТ нажимать ищи ее по оригинальному заголовку (FindWindow).
Изменить заголовок первой программы нужно для того, что бы при вызове FindWindow опять не вернулась она же.
Так пойдет?
|{ot вне форума Ответить с цитированием
Старый 03.09.2010, 20:40   #5
arach
 
Регистрация: 06.07.2010
Сообщений: 3
По умолчанию

Кот, с тобой можно как-то связаться? Есть контактные данные?
arach вне форума Ответить с цитированием
Старый 03.09.2010, 21:23   #6
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
По умолчанию

381544830 аська
|{ot вне форума Ответить с цитированием
Старый 07.09.2010, 19:50   #7
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как нажать кнопку в TWebBrowser duhduhduh Компоненты Delphi 0 03.05.2010 13:49
Как нажать на кнопку зная ее class? pain_kill Работа с сетью в Delphi 1 26.12.2009 17:51
Как нажать кнопку другого приложения? TwiX Общие вопросы Delphi 2 29.07.2009 19:08
Как нажать на кнопку в TWebBrowser да и вообще хоть на что-то.. postal2 Работа с сетью в Delphi 9 08.02.2009 22:45