Что нового

[Автоматизация] Как обновить окно браузера через определённое время?

dimcomp

Новичок
Сообщения
66
Репутация
0
Как обновить окно браузера через определённое время?
Код:
Func obnov()
Send("^F5")
EndFunc

AdlibRegister("obnov", 1*60*1000)


Такая конструкция почему-то не работает :(
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
dimcomp
У вас в Send() отсутствуют скобки. И главного цикла нет.
Вот так можно. Даже в неактивное окно
Код:
AdlibRegister("obnov", 1*60*1000)

Opt("WinTitleMatchMode", 2)

While Sleep(1000)
WEnd

Func obnov()
  ControlSend("- Mozilla Firefox", "", "", "{F5}")
EndFunc
 
Автор
D

dimcomp

Новичок
Сообщения
66
Репутация
0
InnI сказал(а):
dimcomp
У вас в Send() отсутствуют скобки.
Точно, про скобки забыл совсем :smile: Всё работает. За неактивное окно, отдельное спасибо! :ok:
 
Сообщения
137
Репутация
-2
Не хотел создавать новую тему, нашёл эту.
Почему у меня не обновляется страница браузера?

Ни так:
Код:
AdlibRegister("obnov", 1*60*1000)

Opt("WinTitleMatchMode", 2)

While Sleep(1000)
WEnd

Func obnov()

Opt("WinTitleMatchMode", 2)
ControlSend("- Yandex", "", "", "{F5}")

EndFunc


Ни так:
Код:
Opt("WinTitleMatchMode", 2)
$hWnd = WinWait(" - Yandex")
ControlSend($hWnd, "", "Chrome_RenderWidgetHostHWND1", "{F5}")
Sleep(2000)


И ни так:
Код:
Opt("WinTitleMatchMode", 2)
$hWnd = WinGetHandle("- Yandex") ; 
$hControl = ControlGetHandle($hWnd, "", "Chrome_RenderWidgetHostHWND1")
ControlSend($hWnd, "", $hControl, "{^F5}")
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
- Yandex там видимо не минус, а короткое тире. Попробуй это – Yandex
 
Сообщения
137
Репутация
-2
Не работает...я ж копирую с Window Info

Но работает:

Код:
Sleep (2000)

Opt("WinTitleMatchMode", 2)
$hWnd = WinGetHandle("Русское сообщество AutoIt - Главная страница") ;
$hControl = ControlGetHandle($hWnd, "", "Chrome_RenderWidgetHostHWND1")
ControlSend($hWnd, "", "Chrome_RenderWidgetHostHWND1", "{F5}")
Sleep(2000)


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

И так работает:

Код:
Opt("WinTitleMatchMode", 2)
$hWnd = WinWait("Русское сообщество AutoIt - Главная страница")
ControlSend($hWnd, "", "Chrome_RenderWidgetHostHWND1", "{F5}")
Sleep(2000)


Если за время слип успеть сделать окно активным а потом ещё свернуть и развернуть его.
Мне кажется так не должно работать.

Вообще мне нужно , чтоб обновлялось неактивное окно (развёрнутое) и без моего участия, а также не забирая на себя фокус
 
A

Alofa

Гость
Код:
AdlibRegister("obnov", 60*1000)

While Sleep(1000)
WEnd

Func obnov()
	$aList = WinList('[REGEXPCLASS:(?i)Chrome]')
	If $aList[0][0] Then
		For $i = 1 To $aList[0][0]
			If $aList[$i][0] Then
				WinActivate($aList[$i][1])
				ControlSend($aList[$i][1], '', '', '{F5}')
			EndIf
		Next
	EndIf
EndFunc
 
Сообщения
137
Репутация
-2
Спасибо за код...Почему всё, что мне нужно всегда имеет такой :stars: вид...Скопировал как есть - ничего не работает. Можно пару слов на тему как именно это работает и в какое место это вставлять? Мне всего-то нужно F5 отправить в неактивное окно и чтоб оно не забирало фокус...Мне, чтоб мышка, при нахождении определённого цвета пикселя, кликала по его координатам, пришлось,с помощью гуру autoit, написать код на два экрана...сейчас , чтоб отправить F5 будет ещё два экрана видимо...
 
A

Alofa

Гость
Dessan сказал(а):
...Скопировал как есть - ничего не работает.
Все работает (и не только для Yandex), но только с частотой в 1 минуту.

Dessan сказал(а):
... Мне всего-то нужно F5 отправить в неактивное окно и чтоб оно не забирало фокус...
Этот активирует. Иначе не получилось.
 
Сообщения
137
Репутация
-2
Alofa сказал(а):
Код:
AdlibRegister("obnov", 60*1000)

While Sleep(1000)
WEnd

Func obnov()
	$aList = WinList('[REGEXPCLASS:(?i)Chrome]')
	If $aList[0][0] Then
		For $i = 1 To $aList[0][0]
			If $aList[$i][0] Then
				WinActivate($aList[$i][1])
				ControlSend($aList[$i][1], '', '', '{F5}')
			EndIf
		Next
	EndIf
EndFunc
С этим кодом фокус бегает между двух окон и обновляет циклично каждое. Мне больше подходит для одного окна и единоразово:

Код:
Func obnov()
	$aList = WinList('[REGEXPCLASS:(?i)Chrome]') ;делает активным окно одного из браузеров

	If $aList[0][0] Then ; возвращает количество окон
		For $i = 1 To $aList[0][0] 
			If StringRegExp($aList[$i][0], "[Автоматизация]  Как обновить окно браузера через определённое время?") = 1 Then
								
				WinActivate($aList[$i][1])
				
				ControlSend($aList[$i][1], '', '', '{F5}')
				TrayTip("F5", "Обновлено", 2, 1)
		
			EndIf
		Next
	EndIf
EndFunc   ;==>obnov


А не подскажешь почему $aList[0][0] возвращает цифру "9" при любом количестве окон?

А, вообще, если окно всё равно получит фокус, то такой код и не нужен. Можно обойтись двумя строчками WinActive и ControlSend. Может кто-то знает можно ли обновить неактивное окно так, чтоб не брать его в фокус?
 
Сообщения
137
Репутация
-2
Вопрос всё ещё актуален, может кто-то подскажет в какую сторону смотреть?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
в какую сторону смотреть?
В сторону замены браузера. IE, Firefox, Maxthon прекрасно обновляются в фоне. А Maxthon ещё умеет обновлять вкладки автоматически: клик ПКМ по вкладке, пункт меню "Автообновление".
 
Сообщения
137
Репутация
-2
Спасибо, работает с FireFox, но окно делается активным во время обновления.
ControlSend вообще не работает, а $aList делает окно активным. Возможно WinActivate($aList[$i][1]) и делает окно активным?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
работает с FireFox, но окно делается активным во время обновления. ControlSend вообще не работает
Между прочим, вы продолжили тему, в которой данная проблема решена именно для Firefox. Ответ #6 перечитайте.
 
Сообщения
137
Репутация
-2
Вы приходите и всё сразу начинает работать...вот уж природный дар к учительству. Спасибо

На форуме нашёл дескриптор для Firefox: [CLASS:MozillaWindowClass; INSTANCE:1]
Где его увидели? У меня Window Info ничего не показывает. Я так понимаю, ответ кроется где-то здесь http://autoit-script.ru/index.php?topic=40.60, вы могли бы взглянуть?
В любом случае, раз уж дескриптор есть, почему не работает вот так:

Код:
While 1
	Opt("WinTitleMatchMode", 2)
	$hWnd = WinGetHandle("[Автоматизация] Как обновить окно браузера через определённое время? – Mozilla Firefox") ;
	$hControl = ControlGetHandle($hWnd, "", "[CLASS:MozillaWindowClass; INSTANCE:1]")
	ControlSend($hWnd, "", $hControl, "{^F5}")
	Sleep(3000)
WEnd


К этому виду я как-то больше...привык


Добавлено:
Сообщение автоматически объединено:

Код:
ControlSend("- Mozilla Firefox", "", "", "{F5}")
даже так работает с Firefox,просто эту строчку вставить и все
 
Верх