Что нового

Ожидание закрытия окна

mv6677

Новичок
Сообщения
105
Репутация
0
Версия AutoIt: 3.3.14.2

Описание:
Добрый вечер.
Подскажите, если кто знает - как дождаться закрытия окна, у которого в Title - встречается слово "system32" ?
(Иными словами событие здесь - это закрытие окна. Как только это окно закроется - должно появиться сообщение "Окно закрылось" )
(А если такого окна на момент запуска - нет на экране - то скрипт ничего не предпринимает. А когда данное окно появится - то скрипт начинает ожидать его закрытия - чтобы при закрытии выдать сообщение.)

Примечания:
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <MsgBoxConstants.au3>
Opt("WinTitleMatchMode", -2)

While Sleep(10)
	If WinWait("system32") Then
		WinWaitClose("system32")
		MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, "Пример", "Окно закрылось")
	EndIf
WEnd
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
mv6677 [?]
Подскажите, если кто знает - как дождаться закрытия окна, у которого в Title - встречается слово "system32" ? (Иными словами событие здесь - это закрытие окна. Как только это окно закроется - должно появиться сообщение "Окно закрылось" )(А если такого окна на момент запуска - нет на экране - то скрипт ничего не предпринимает. А когда данное окно появится - то скрипт начинает ожидать его закрытия - чтобы при закрытии выдать сообщение.)

Несмотря на ответ выше, думаю, что каждая мысль интересна...

Код:
Local $hWnd
$hWnd = WinGetHandle("[REGEXPTITLE:(.*?)(s|S)(y|Y)(s|S)(t|T)(e|E)(m|M)32(.*?)]")
	If @Error Then
	; Окно не найдено при запуске: следующие 2 строки можно заменить, чтобы добиться, чтобы "скрипт ничего не делал? это как?"
	MsgBox(16,0,"Окно не найдено")
	Exitt 1
	EndIF

; Выполняется бесконечный цикл. Если окно закроется, то цикл прервется (продолжится работа скрипта после "Wend"). Внутри цикла выполняется проверка: существует-ли окно каждые 100 мс. (1/10 сек.)
While WinExists($hWnd)
Sleep(100)
Wend

MsgBox(0,0,"Окно закрылось")
Exit 0
 
Автор
M

mv6677

Новичок
Сообщения
105
Репутация
0
Спасибо всем.
Скрипты работают хорошо.
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Tempo
Уважаемый, запустите код при отсутствии окна. Примерно через 8 сек Вы увидите сообщение "Окно закрылось". Причем, выход из цикла не выполняется и выполняется повторный вывод сообщения...
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Astel064, в бесконечной проверке наличия окна и его закрытия суть темы если я правильно понял автора

И у меня не наблюдается сообщения через 8 секунд (скрипт висит от времени ответа) если не трудно объясните по какому условию оно может появится кроме закрытия окна?
 
A

Alofa

Гость
Astel064
Astel064 сказал(а):
...
Код:
;...
; чтобы "скрипт ничего не делал? это как?"
Это форум. Тут, что хотят авторы и то как описывают - это разные вещи. Привыкайте.
Перевожу: "скрипт ничего не предпринимает" = Ожидает появления этого самого окна.

Astel064 сказал(а):
...
Код:
; ... Внутри цикла выполняется проверка: существует-ли окно каждые 100 мс.
While WinExists($hWnd)
Sleep(100)
Wend
Это кардинально не так.

Astel064 вы пишите в ISN AutoIt Studio?
 
Верх