1

Тема: AHK: После загрузки страницы начать действие

Подскажите, возможно ли сделать проверку загружена ли страница полностью, если да - то следующее действие.

2 (изменено: ThrowSum, 2016-02-21 07:09:47)

Re: AHK: После загрузки страницы начать действие

Прочел через поиск достаточно много, но полно вопросов. Везде проверка загрузки страницы начинается вот так с создания сеанса ИЕ:

Browser :=   ComObjCreate ("InternetExplorer.Application")

Но мне нужен Хром и работа с уже открытым окно в нем, при загрузке в котором появится например сообщение "Загружено".
Проверка на это осуществляется вот так:

while Browser.busy
sleep 100

Но как мне поставить сюда переменную Browser, а именно она должна иметь значение уже открытого определенного окна Хрома.
Подскажите пожалуйста.

3

Re: AHK: После загрузки страницы начать действие

Сомневаюсь, что такое возможно средствами автохотки.

4 (изменено: Alectric, 2016-02-22 09:16:37)

Re: AHK: После загрузки страницы начать действие

Вот такой костыль:

#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.

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

5 (изменено: Malcev, 2016-02-22 07:51:29)

Re: AHK: После загрузки страницы начать действие

А зачем здесь ACC?
Не проще ли просто по PixelGetColor искать?

6

Re: AHK: После загрузки страницы начать действие

Malcev пишет:

А зачем здесь ACC?

Координаты кнопки искать.

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

7

Re: AHK: После загрузки страницы начать действие

Ну не знаю, мне кажется это лишним.
Легче один раз посмотреть за каким пикселем следить и дело с концом.
Кстати, твой вариант у меня не работает.
Пишет все время - "Страница загружается".
Если бы у меня была такая необходимость автоматизировать гугл хром, то я бы посмотрел это приложение:
https://chrome.google.com/extensions/de … joopmnlemp

8 (изменено: Alectric, 2016-02-22 09:19:37)

Re: AHK: После загрузки страницы начать действие

Хотел универсальное сделать, fail как всегда. Косяк с координатами наверно, или с названием кнопки, если у тебя Eng.
У тебя кнопка "Update" называется?

Post's attachments

Безымянный.png 82.62 kb, 16 downloads since 2016-02-22 

You don't have the permssions to download the attachments of this post.
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

9

Re: AHK: После загрузки страницы начать действие

Понял почему у меня не срабатывало.
У меня выключены все визуальные эффекты в виндовсе.
http://www.optimizemswindows.com/wp-con … rmance.jpg
Когда включил - заработало.

10

Re: AHK: После загрузки страницы начать действие

Я добавил в код:

  if !AccUpdateButton:=GetElementByName(AccObj, "Перезагрузить")
    AccUpdateButton:=GetElementByName(AccObj, "Update")
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.