Что нового

[Автоматизация] Завершить скрипт (Закрыть GUI) при переходе на страницу с определенным адресом

AngryFlay

Новичок
Сообщения
17
Репутация
0
Б(м)ира всем! :beer:
Прошу направить на путь истинный.
Есть некие сайты, на которых имеются кнопки, либо ссылки "выход" он же "exit" по нажатию на которые осуществляется переход на страницу ввода логина и пароля или прощальная надпись, по типу "Всего вам! Приходите ещё". Прошу помочь допилить скрипт, чтобы при загрузке такой страницы он завершался, то-есть GUI закрывался, дабы избавить пользователя от необходимости закрывать окно крестиком или по Alt+F4.
Признателен буду за помощь и (или) идеи.
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
GUICreate("какой-то сайт", 1024, 768, (@DesktopWidth - 1024) / 2, (@DesktopHeight - 768) / 2, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
Local $oIE = ObjCreate("Shell.Explorer.2")
GUICtrlCreateObj($oIE, 0, 0, 1024, 768)
GUICtrlSetResizing(-1, 2 + 4 + 32 + 64)
GUISetState()
$oIE.Navigate("адрес сайта или путь к html ")
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
		Case $GUI_EVENT_CLOSE
			ExitLoop
	EndSwitch
WEnd
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Добавьте к примеру такую функцию:
Код:
AdlibRegister("_FindText", 1000)
Func _FindText()
	If Not IsObj($oIE) Then Return
	If StringInStr(_IEBodyReadHTML($oIE), "прощальный текст... вы уходите?") > 0 Then Exit; Если найдёт текст, то выход
EndFunc
 
Автор
A

AngryFlay

Новичок
Сообщения
17
Репутация
0
alex33 сказал(а):
Добавьте к примеру такую функцию

Ожидал подсказки, получил готовое решение. Работает! Спасибо!
Так как текста на таких страницах мало, то срабатывает быстро.
Возможно есть и другие решения, я копал в направлении адреса страницы, но пока без результата.
Поделитесь идеями пожалуйста, если таковые возникнут.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
AngryFlay [?]
Возможно есть и другие решения, я копал в направлении адреса страницы, но пока без результата.
Поделитесь идеями пожалуйста, если таковые возникнут.
А вот условие для адреса:
Код:
If StringInStr(_IEPropertyGet($oIE, "url"), "/logout") > 0 Then Exit; Если в URL есть вхождение /logout , то выход
 
Автор
A

AngryFlay

Новичок
Сообщения
17
Репутация
0
alex33 сказал(а):
AngryFlay [?]
Возможно есть и другие решения, я копал в направлении адреса страницы, но пока без результата.
Поделитесь идеями пожалуйста, если таковые возникнут.
А вот условие для адреса:
Код:
If StringInStr(_IEPropertyGet($oIE, "url"), "/logout") > 0 Then Exit; Если в URL есть вхождение /logout , то выход

Спасибо Вам за проявленное внимание. Первый вариант 100% рабочий на всех сайтах где мне это необходимо.
Со вторым условием не срабатывает ни один. Причину вижу в том, что адрес скрипт не видит, так как нет адресной строки.
Буду покапать еще.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Со вторым условием не срабатывает ни один. Причину вижу в том, что адрес скрипт не видит, так как нет адресной строки.
Нет, не из-за этого.
Я код с маленькой ошибкой написал... надо так было, попробуйте:
Код:
If StringInStr(_IEPropertyGet($oIE, "locationurl"), "/logout") > 0 Then Exit; Если в URL есть вхождение /logout , то выход
 
Автор
A

AngryFlay

Новичок
Сообщения
17
Репутация
0
alex33 сказал(а):
Со вторым условием не срабатывает ни один. Причину вижу в том, что адрес скрипт не видит, так как нет адресной строки.
Нет, не из-за этого.
Я код с маленькой ошибкой написал... надо так было, попробуйте:
Код:
If StringInStr(_IEPropertyGet($oIE, "locationurl"), "/logout") > 0 Then Exit; Если в URL есть вхождение /logout , то выход

О да! То что нужно. Срабатывает очень быстро.
Спасибо огромное!!!
 
Верх