Что нового

[Автоматизация] Закрытие pop-up окон и restart

d007

Новичок
Сообщения
4
Репутация
0
Всем доброго времени суток!

Хотелось бы автоматизировать цикл работы триальной Программы, запускающейся в отдельном Окне с Кнопкой запуска, нажатие которой генерит всплывающее Окно1, его закрытие (x) запускает процесс, а после окончания - Окно2, закрытие (x) которого закрывает и основное Окно.

С AutoIt ранее не пересекался - написал скрипт, отталкиваясь от школьных воспоминаний о Бэйсике и Паскале, но что-то мне подсказывает, что их не достаточно: имеется только четкое осознание, что все поп-ап окна должны быть закрыты, а прога перезапущена...
Также всплывают смутные догадки о необходимости остальных частей оператора IF-THEN-ELSE, но пока нет полной уверенности...
И последний вопросик - решено, спасибо ra4o

Был бы признателен профессионалам, любителям или просто хорошим людям за помощь!

[Сырой] продукт творчества моей необузданной мысли:
Код:
While 1
Run("Программа.exe")
WinActivate("Окно")
WinWaitActive("Окно")
ControlClick ("Окно", "", "[CLASS:Button;INSTANCE:Кнопка]")
WinGetTitle ("title")
If $title = "Окно1" Then
WinWait ($title)
WinClose ($title)
EndIf
If $title = "Окно2" Then
WinWait ($title)
WinClose ($title)
EndIf
Sleep (2000)
WEnd
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Автор
D

d007

Новичок
Сообщения
4
Репутация
0
Re: [Автоматизация] Закрытие всплывающих окон и перезапуск программы

ra4o сказал(а):
И последний вопросик - о кракозябрах вместо кириллической части текста в названиях окон
В этой теме ответ №7 http://autoit-script.ru/index.php?topic=24810.msg142917#msg142917
Спасибо, похоже помогло!

Остался только главный вопрос )
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Автоматизация] Закрытие всплывающих окон и перезапуск программы

d007

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Администратор.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Зачем Вы заключили скрипт в бесконечный цикл ? Вам нужно что-бы программа запускалась и закрывалась постоянно ?
Вы ведь знаете, что после запуска ожидается появление окон в строгой очерёдности , тогда скрипт может выглядеть примерно так:
Код:
Run("Программа.exe")
$MainWindow=WinWait("Окно")
ControlClick($MainWindow, "", "[CLASS:Button;INSTANCE:Кнопка]")
$Window1=WinWait("Окно1")
WinClose($Window1)
$Window2=WinWait("Окно2")
WinClose($Window2)
 
Автор
D

d007

Новичок
Сообщения
4
Репутация
0
Re: [Автоматизация] Закрытие всплывающих окон и перезапуск программы

CreatoR сказал(а):
Исправил


Добавлено:
Сообщение автоматически объединено:

ra4o сказал(а):
скрипт может выглядеть примерно так:
Код:
Run("Программа.exe")
$MainWindow=WinWait("Окно")
ControlClick($MainWindow, "", "[CLASS:Button;INSTANCE:Кнопка]")
$Window1=WinWait("Окно1")
WinClose($Window1)
$Window2=WinWait("Окно2")
WinClose($Window2)
Спасибо за совет!
Опробую чуть позже
ra4o сказал(а):
Зачем Вы заключили скрипт в бесконечный цикл ? Вам нужно что-бы программа запускалась и закрывалась постоянно ?
Да, нужен именно цикл, иначе из-за двух нажатий нет смысла и заморачиваться )
ra4o сказал(а):
ожидается появление окон в строгой очерёдности
Есть один нюанс: Окно1 появляется не всегда - кмк, просто добавить тайм-аут, чтобы скрипт не завис в ожидании?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Есть один нюанс: Окно1 появляется не всегда
Об этом ньюансе Вы говорите впервые, в таком случае можно добавить таймаут в функцию ожидания окна №1 :
Код:
While 1
	Run("Программа.exe")
	$MainWindow = WinWait("Окно")
	ControlClick($MainWindow, "", "[CLASS:Button;INSTANCE:Кнопка]")
	$Window1 = WinWait("Окно1", "", 10) ;Таймаут появления окна 1 10 сек
	If $Window1 Then WinClose($Window1)
	$Window2 = WinWait("Окно2")
	WinClose($Window2)
	Sleep(2000)
WEnd
 
Автор
D

d007

Новичок
Сообщения
4
Репутация
0
ra4o сказал(а):
Об этом ньюансе Вы говорите впервые
Не стал усложнять )

ra4o сказал(а):
в таком случае:
Код:
While 1
	Run("Программа.exe")
	$MainWindow = WinWait("Окно")
	ControlClick($MainWindow, "", "[CLASS:Button;INSTANCE:Кнопка]")
	$Window1 = WinWait("Окно1", "", 10) ;Таймаут появления окна 1 10 сек
	If $Window1 Then WinClose($Window1)
	$Window2 = WinWait("Окно2")
	WinClose($Window2)
	Sleep(2000)
WEnd
Все гениальное [выглядит] просто!
Заработало отлично! (с легким тайм-тюнингом)
Задача решена.

Огромная благодарность AUTOIT ГУРУ RA4O за помощь!
 
Верх