Что нового

Автоматическое закрытие модальных окошек

PavelV

Новичок
Сообщения
4
Репутация
0
есть 2 экзешника с разными именами, периодически появляются ошибки (модальные окна) с одной кнопкой ОК. Ошибки копятся в течение дня, потом приходится 20 раз нажимать кнопку ОК.
Как можно автоматизировать это?
Дополнительный процесс не появляется в списке при появлении ошибки.
 

classick

Новичок
Сообщения
16
Репутация
1
Как-то так?
Код:
While 1
   $varError = WinGetHandle("Application")
	  If WinActive($varError) Then
		 WinClose("Application")
	  EndIf
   Sleep ( 1000 )
WEnd

Application - можно получить через Autoit Window Info
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ну или вообще вот так : :smile:
Код:
While 1
      ControlClick("Application", "", "Button1")
   Sleep ( 1000 )
WEnd
 
Автор
P

PavelV

Новичок
Сообщения
4
Репутация
0
Подскажите как именно смотреть Application в autoit window info ?
Именно такого поля я там не вижу
 
Автор
P

PavelV

Новичок
Сообщения
4
Репутация
0
Ок, теперь понял. Как написал classick - получилось закрывать, если окно активное, то закрывается.
Как вы написали, жду пока появится ошибка, чтоб попробовать.

Еще вопросы. Оба запущенных экзешника имеют разные имена, но одинаковые титле. Думаю что появляющиеся модальные окна будут также иметь те же самые титле. Как тогда ControlClick будет понимать какую кнопку нажимать? Button1 - мне так и оставить или вместо нее я должен написать название кнопки ОК ?

В запущенном экзешнике есть 2 кнопки - старт и стоп..
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Как тогда ControlClick будет понимать какую кнопку нажимать?
Он будет проходить по всем окнам с таким title и если там есть Button1 то он её нажмёт.

Button1 - мне так и оставить или вместо нее я должен написать название кнопки ОК ?
Button1 так и оставить...
 
Автор
P

PavelV

Новичок
Сообщения
4
Репутация
0
ок, с ControlClick получилось.
Тогда у меня есть вопрос - у меня 2 окна с одинаковыми титле, в этих окнах по 2 кнопки Старт и Стоп. Плюс Параллельно открывается еще модальное окно с ошибкой и одной кнопкой ОК. и имеет тот же самый титле.

Какой признак привязки Button1 к окну? Это первая по счету кнопка? Ведь раз окна имеют одинаковый титле, то в окне с экзешником он также нажмет какую то из 2х кнопок - либо старт, либо стоп. верно я понимаю?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
PavelV [?]
верно я понимаю?
Верно. Поэтому вам нужно уточнить данные поиска окон. Например, искать окна не только по заголовку, но ещё и по классу. Или добавить вторым параметром текст окна. Или добавить текст кнопки. Или всё это сразу. Вариантов много. Здесь для окон, здесь для элементов.
Код:
ControlClick("[title:Заголовок;class:#32770]", "", "[class:Button;text:ОК]")
 

i81

Новичок
Сообщения
1
Репутация
0
Друзья, искал гуглом - наткнулся на Ваш ворум.
Есть задача прямо как у автора этого типика. По аналогии сделал скрипт
Код:
While 1
      ;ControlClick("Application", "", "Button1")
	  ControlClick("[class:#32770]", "", "[class:Button;text:ОК]")

   Sleep ( 10 )
WEnd
но он не работает. Если я правильно понимаю скрипт в трее становится на паузу.
помогите пожалуйста советом
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
i81

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


С уважением, ваш Глобальный модератор.
 
A

Alofa

Гость
i81 сказал(а):
... Если я правильно понимаю ...
Нет, вы неправильно понимаете.
Но сначала устраните замечание Garrett.



С Новым Годом, с Новым Счастьем! :beer:
 
Верх