1 (изменено: manualex, 2015-07-28 17:38:08)

Тема: AHK: Закрыть alertBox в Firefox

Приветствую.

Нужно закрыть alertBox, который появляется в Firefox v.24 при разрыве/неустоичивом соединении, например при медленном прокси.

Появление alertBox нужно отслеживать по таймеру.


http://img2.tempfile.ru/14208/17ae6a75f0/b1150aa6b4ce85f2915a242c.jpgt.jpg

2

Re: AHK: Закрыть alertBox в Firefox

А в чём затруднение? Судя по картинке, стандартное окошко.
А почему по таймеру, а не по WinWait?

Забыл пароль и потерял e-mail.

3

Re: AHK: Закрыть alertBox в Firefox

Необходимые команды:

  • WinClose - закрыть окно

  • IfWinExist - проверить существование окна

  • SetTimer - установить таймер

4

Re: AHK: Закрыть alertBox в Firefox

Отвечу за автора.
Я написал ему готовый скрипт на отлов по цвету пикселя - там есть всё и таймер и т.д. , но это для другой задачи.
Отлажено, работает проблем нет.

Дальше он попросил меня помочь вот с этим вопросом.
Я попытался эмулировать его ошибку, у меня просто чистое окно с диагностикой ошибки отсутствия инет соединения.

Через скайп попытался помочь.
1. Найти контрол кнопки ОК не удалось, выдаёт окно Firefox, а это окно под alertBox.
2. Кнопка нажимается, ну всё как положено.
3. Окно  alertBox содержит хандлер Firefox  и текст диагностики + текст ОК.

Я понял, что ничего не понимаю, вот так и родился этот топик.

P.S. Процессы я посмотрел - нету, ну его там и не должно было быть.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

5 (изменено: shiz, 2015-07-29 01:40:53)

Re: AHK: Закрыть alertBox в Firefox

А чем не устраивает такое решение:

Loop {
    WinWait Предупреждение ahk_class MozillaDialogClass ahk_exe firefox.exe
        , Время ожидания от сервера
    WinClose
}

?

Забыл пароль и потерял e-mail.

6 (изменено: Indomito, 2015-07-29 01:26:10)

Re: AHK: Закрыть alertBox в Firefox

Завтра, если он будет активен, я в скайпе переберу все возможные варианты + я забыл скрытые окна, может поможет.

Два скришота прислали почтой, что то новенькое.

Запустил AhkSpy. Он нашел коды кнопок:
1. OK (рис.1)
2. Закрыть (рис.2)
Может чем поможет?
Читал твой пост на форуме.

http://i11.pixs.ru:/thumbs/7/4/9/1JPG_5390116_18201749.jpghttp://i11.pixs.ru:/thumbs/7/5/3/2JPG_7441085_18201753.jpg

"Почтальон Печкин"© - это я про себя.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

7 (изменено: Malcev, 2015-07-29 01:21:46)

Re: AHK: Закрыть alertBox в Firefox

Если необходимо именно нажать на кнопку, а не просто закрыть окно, то тут обсуждали:
http://forum.script-coding.com/viewtopic.php?id=10570

8

Re: AHK: Закрыть alertBox в Firefox

Malcev Спасибо, но тут закрытие эквивалент нажатия.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

9

Re: AHK: Закрыть alertBox в Firefox

Исправил #5 с учётом скриншота из #6.

Забыл пароль и потерял e-mail.

10

Re: AHK: Закрыть alertBox в Firefox

Спасибо, я так ещё не успел сделать, правда это не от меня зависит.

Докатился:
- ТС - не я;
- посты пишу я.

Но, радует, хоть понятно, что есть, и  что я упустил - блин, хотел проще, а получается как всегда.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

11 (изменено: manualex, 2015-07-29 12:32:48)

Re: AHK: Закрыть alertBox в Firefox

Всем спасибо.
Работает так:

Loop {
    WinWait Предупреждение ahk_class MozillaDialogClass ahk_exe firefox.exe
       
    WinClose
}

Код оформляется тегом code!

12

Re: AHK: Закрыть alertBox в Firefox

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

Loop
{
    WinWait,  Предупреждение ahk_class MozillaDialogClass ahk_exe firefox.exe
    WinClose, Предупреждение ahk_class MozillaDialogClass ahk_exe firefox.exe
    Sleep, 250
}

13 (изменено: shiz, 2015-07-29 16:52:22)

Re: AHK: Закрыть alertBox в Firefox

manualex пишет:

Работает так

Думаю, параметр WinText не помешал бы — мало ли какие ещё предупреждения выдаёт Firefox.

ypppu пишет:

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

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

Забыл пароль и потерял e-mail.

14

Re: AHK: Закрыть alertBox в Firefox

Я к тому, что Loop - коварная команда. Если внутри цикла нет команд, требующих существенного времени на выполнение, то период цикла быстро завершается, и цикл повторяется заново (особенно, если уменьшить SetBatchLines). Это загружает процессор.

Проще говоря, запустите такой скрипт и посмотрите загрузку процессора:

Loop
{
a := a+1
Sleep, 100
}

Затем сравните со вторым скриптом:

Loop
{
a := a+1
}

У manualex такое скорее всего никогда не случится. Просто я считаю, что лучше заранее всё предусмотреть.

15

Re: AHK: Закрыть alertBox в Firefox

ypppu пишет:

У manualex такое скорее всего никогда не случится. Просто я считаю, что лучше заранее всё предусмотреть.

я постараюсь всё учесть, т.к. этот скрипт будет фрагментом другого скрипта.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

16 (изменено: Indomito, 2015-07-29 22:02:37)

Re: AHK: Закрыть alertBox в Firefox

Спасибо, я кое что поменял - всё работает у ТС.

Возник дополнительный вопрос по теме.

Как отработать кнопку включение прокси после ошибки в FireFox?

Вот скриншоты и скрипт(вопрос по фрагменту №2).
Скриншоты только по фрагменту №2.

http://i10.pixs.ru:/thumbs/0/2/0/1jpg_3136703_18211020.jpg  http://i11.pixs.ru:/thumbs/0/2/2/2jpg_8021745_18211022.jpg

; Фрагмент №1
;-------- Работающий фрагмент-----------
WinWaitActive, Fast Dial - Mozilla Firefox
sleep 50
ControlClick, x206 y33, , , MIDDLE
;--------------------------------------

sleep 500

; Фрагмент №2
;-------- Работающий фрагмент, но только по координатам-----------
WinWaitActive, Fast Dial - Mozilla Firefox
sleep 50
ControlClick, x53 y14 , , , L
;----------------------------------------------------------------

Return
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

17

Re: AHK: Закрыть alertBox в Firefox

Через Acc. В 7 посте ссылка.

18

Re: AHK: Закрыть alertBox в Firefox

Как я понял ты про такую запись.

Send {AppsKey}{down 10}{enter}

По ID элемента, верно?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

19

Re: AHK: Закрыть alertBox в Firefox

Нет. Я про это:

DetectHiddenWindows, On
WinExist("ahk_class µTorrent4823DF041B09")
ControlGet, hwnd, hwnd,, ToolbarWindow322

PressToolBarButton(hwnd, 10)

PressToolBarButton(hwnd, ButtonID)
{
   AccObj := AccObjectFromWindow(hwnd, OBJID_CLIENT := 0xFFFFFFFC)
   if !IsObject(AccObj)  {
      MsgBox, Не удалось получить AccObj
      Return
   }
   AccObj.accDoDefaultAction(ButtonID)
}

AccObjectFromWindow(hWnd, idObject = 0)
{
   static h
   !h ? h := DllCall("LoadLibrary","Str","oleacc","Ptr")
   If   DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", idObject&=0xFFFFFFFF
      , "Ptr", -VarSetCapacity(IID,16)+NumPut(idObject==0xFFFFFFF0?0x46000000000000C0:0x719B3800AA000C81
      ,NumPut(idObject==0xFFFFFFF0?0x0000000000020400:0x11CF3C3D618736E0,IID,"Int64"),"Int64"), "Ptr*", pacc)=0
   Return   ComObjEnwrap(9,pacc,1)
}

20 (изменено: Indomito, 2015-07-30 01:47:13)

Re: AHK: Закрыть alertBox в Firefox

Ясно, а я то подумал что, уж всё слишком просто.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download