Тема: AHK: После загрузки страницы начать действие
Подскажите, возможно ли сделать проверку загружена ли страница полностью, если да - то следующее действие.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Подскажите, возможно ли сделать проверку загружена ли страница полностью, если да - то следующее действие.
Прочел через поиск достаточно много, но полно вопросов. Везде проверка загрузки страницы начинается вот так с создания сеанса ИЕ:
Browser := ComObjCreate ("InternetExplorer.Application")
Но мне нужен Хром и работа с уже открытым окно в нем, при загрузке в котором появится например сообщение "Загружено".
Проверка на это осуществляется вот так:
while Browser.busy
sleep 100
Но как мне поставить сюда переменную Browser, а именно она должна иметь значение уже открытого определенного окна Хрома.
Подскажите пожалуйста.
Сомневаюсь, что такое возможно средствами автохотки.
Вот такой костыль:
#include,%a_scriptdir%\Acc.ahk
ComObjError(false)
CoordMode,Pixel,screen
#ifwinactive,ahk_class Chrome_WidgetWin_1
~lbutton::
sleep,300
waitChromeLoad()
tooltip,Загружена.
return
waitChromeLoad()
{
static colormin:=0x000000, colormax:=0xaaaaaa
hwnd:=WinExist("ahk_class Chrome_WidgetWin_1")
AccObj:=Acc_ObjectFromWindow(hwnd)
if !AccUpdateButton:=GetElementByName(AccObj, "Перезагрузить")
AccUpdateButton:=GetElementByName(AccObj, "Update")
Loc:=Acc_Location(AccUpdateButton,0)
loop,10000
{
sleep,10
PixelGetColor,color,% Loc.x+Loc.w/2,% Loc.y+Loc.h/3, RGB
if incolors(Color,colormin,colormax)
loaded++
tooltip,Страница загружается.`n%loaded%
} until loaded=10
tooltip
}
GetElementByName(AccObj, name) {
if (AccObj.accName(0) = name)
return AccObj
for k, v in Acc_Children(AccObj)
if IsObject(obj := GetElementByName(v, name))
return obj
}
incolors(Color,colormin,colormax)
{
if (Color&0xff0000>(colormin&0xff0000)-1 and Color&0xff0000<(colormax&0xff0000)+1
and Color&0x00ff00>(colormin&0x00ff00)-1 and Color&0x00ff00<(colormax&0x00ff00)+1
and Color&0x0000ff>(colormin&0x0000ff)-1 and Color&0x0000ff<(colormax&0x0000ff)+1)
return 1
}
Требуется библиотека Acc.ahk.
А зачем здесь ACC?
Не проще ли просто по PixelGetColor искать?
А зачем здесь ACC?
Координаты кнопки искать.
Ну не знаю, мне кажется это лишним.
Легче один раз посмотреть за каким пикселем следить и дело с концом.
Кстати, твой вариант у меня не работает.
Пишет все время - "Страница загружается".
Если бы у меня была такая необходимость автоматизировать гугл хром, то я бы посмотрел это приложение:
https://chrome.google.com/extensions/de … joopmnlemp
Хотел универсальное сделать, fail как всегда. Косяк с координатами наверно, или с названием кнопки, если у тебя Eng.
У тебя кнопка "Update" называется?
Понял почему у меня не срабатывало.
У меня выключены все визуальные эффекты в виндовсе.
http://www.optimizemswindows.com/wp-con … rmance.jpg
Когда включил - заработало.
Я добавил в код:
if !AccUpdateButton:=GetElementByName(AccObj, "Перезагрузить")
AccUpdateButton:=GetElementByName(AccObj, "Update")
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться