Что нового

[Мышь, клавиатура] Имитация клика мыши в НЕАКТИВНОМ окне браузера Yandex

Сообщения
137
Репутация
-2
Добрый день, тем таких уйма, мне ни одно решение не подошло. Задача просто кликнуть на любую область НЕАКТИВНОГО окна браузера - хоть на кнопку "Поиск" данного раздела. Перепробовал уже всё:
Код:
#include <WinAPIEx.au3>
#include <WinAPI.au3>

Example()
Func Example()

$hWnd = WinGetHandle("Русское сообщество AutoIt - Главная страница – Yandex");

 ControlClick ( $hWnd,"", "left", 1, 1235, 95)

 EndFunc
А может быть:
Код:
#include <WinAPIEx.au3>
#include <WinAPI.au3>

Example()
Func Example()

$hWnd = WinGetHandle("Русское сообщество AutoIt - Главная страница – Yandex");

 ControlClick ( $hWnd,"", "[CLASS:Chrome_RenderWidgetHostHWND; INSTANCE:1]","left",1,1235,95)

 EndFunc

P.S. Вроде все замечания исправил, как тему переносить не знаю да и надо ли
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.
 
Автор
D
Сообщения
137
Репутация
-2
Хорошо, пусть будет так, не сворачиваю окно уже, оно просто не активно. Задача кликнуть на странице на кнопку "Поиск". Как уже написано я должен использовать функцию ControlClick(). При этом какие мне использовать координаты для кнопки? Варианты
ControlClick Coords: 1236, 112

Или

>>>> Mouse <<<<
Position: 1236, 176

Определившись с координатами, как мне теперь нажать на кнопку "Поиск", потому что вариантов море и все пишут , что они рабочие.

Код:
#include <ScreenCapture.au3>

ControlClick("[Автоматизация] Работа со "свёрнутой" игрой. Концепция не мешающего бота. – Yandex","Chrome Legacy Window","[Chrome_RenderWidgetHostHWND1]","left",1,1236,112)
; или
ControlClick("[Автоматизация] Работа со "свёрнутой" игрой. Концепция не мешающего бота. – Yandex","Chrome Legacy Window","[Chrome_RenderWidgetHostHWND1]","left",1,1236,176)
;или
ControlClick("[Автоматизация] Работа со "свёрнутой" игрой. Концепция не мешающего бота. – Yandex","","[Chrome_RenderWidgetHostHWND1]","left",1,1236,112)
;или
ControlClick("[Автоматизация] Работа со "свёрнутой" игрой. Концепция не мешающего бота. – Yandex","","[Chrome_RenderWidgetHostHWND1]","left",1,1236,176)
;или
ControlClick("[Автоматизация] Работа со "свёрнутой" игрой. Концепция не мешающего бота.","","[CLASS:Chrome_RenderWidgetHostHWND; INSTANCE:1]","left",1,1236,112)
;или
ControlClick("[Автоматизация] Работа со "свёрнутой" игрой. Концепция не мешающего бота.","","[CLASS:Chrome_RenderWidgetHostHWND; INSTANCE:1]","left",1,1236,176)

;или есть ещё такие варианты:
$hWnd = WinGetHandle("[Автоматизация] Работа со "свёрнутой" игрой. Концепция не мешающего бота. – Yandex")
ControlClick ( $hWnd,"", "[Chrome_RenderWidgetHostHWND1]","left",1,1236,112)
;или
ControlClick ( $hWnd,"", "[Chrome_RenderWidgetHostHWND1]","left",1,1236,176)
;или
ControlClick ( $hWnd,"Chrome Legacy Window","[Chrome_RenderWidgetHostHWND1]","left",1,1236,176)
;или
ControlClick ( $hWnd,"Chrome Legacy Window","[Chrome_RenderWidgetHostHWND1]","left",1,1236,112)
А вообще что я только не перепробовал за 2 дня мучений...
Причём прекрасно всё работает с блокнотом, в paint точки рисует также чудесно, а вот в браузере - никак. Подскажите,пожалуйста
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
какие мне использовать координаты для кнопки
Которые показывает Au3Info на вкладке Control или Summary: ControlClick Coords:1175, 175
Только учтите, что в новом и старом интерфейсе Яндекс.Браузера координаты будут разные.

нажать на кнопку "Поиск"
Код:
Opt("WinTitleMatchMode", 2)
$hWnd = WinWait(" – Yandex")
ControlClick($hWnd, "", "Chrome_RenderWidgetHostHWND1", "left", 1, 1175, 175)
 
Автор
D
Сообщения
137
Репутация
-2
Гуру он и есть гуру - всё работает)Огромное спасибо!

Со свёрнутым окном работать не будет вообще как я понял, а можно как-то указать хоть с какой именно НЕ Активной вкладкой скрипт будет работать? Потому что при запуске данного скрипта, хоть курсор и не двигается, окно яндекса получает "фокус" (становится активным). Вообщем, к чьей браузерной платформе мне сделать привязку скрипта, чтоб он делал действия без взятия окна в "фокус" (работать с не активным окном)? Я бы хотел гонять скрипт сутками без участия мышки и клавиатуры,то есть либо окно будет постоянно свёрнуто,либо передвинуто за пределы видимой области экрана на постоянной основе. Третий вариант...скрипт будет работать с конкретной одной НЕ Активной вкладкой браузера, не задействуя мышку и клавиатуру.


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

И сразу второй вопрос:
Задача скрипта для страницы с названием "Русское сообщество AutoIt - Главная страница - Maxthon Cloud Browser 4.9.2.1000 - 4yandex" кликнуть на кнопку "Поиск" с заданными координатами, происходит переход на страницу "Ошибка! - Maxthon Cloud Browser 4.9.2.1000 - 4yandex". На этой страницы кликаем на поле куда можно ввести текст для поиска и вводим текст This is some text. В активном окне всё работает, в свёрнутом окне только нажимает на страницу Поиск и вроде кликает на поле ввода текста, но если страницу развернуть, то поле ввода пустое...А если нажать кнопку на браузере Назад, то иногда видно мой текст. Что ж не так?
Код:
Local $hWnd = WinGetHandle("Русское сообщество AutoIt - Главная страница - Maxthon Cloud Browser 4.9.2.1000 - 4yandex", "")
ControlClick($hWnd, "", "Mx_WidgetWin_01", "left", 1, 1190, 110)
Sleep(2000)
Local $hWnd2 = WinGetHandle("Ошибка! - Maxthon Cloud Browser 4.9.2.1000 - 4yandex", "")
ControlClick($hWnd2, "", "Mx_WidgetWin_01", "left", 1,966, 110)
Sleep(500)
ControlSend($hWnd2, "", "Mx_WidgetWin_01", "This is some text")
Sleep(1000)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
Во-первых, мы тут говорим о кликах мыши, а не о вводе текста.

Во-вторых, если вы в свернутом окне Maxthon, кликните по полю ввода и введёте текст, то текст введётся нормально. Вероятно, в свёрнутом виде он вообще не отображает и не просчитывает элементы загружаемых страниц, следовательно, после нажатия "Поиск", на обновлённой странице не будет поле ввода и клик уйдёт в никуда.

В-третьих, если вы выбираете браузер для игрового бота, то и проверять всё это нужно непосредственно в игре. Часто работа с обычными страницами отличается от работы в игре, т.к. игры могут и активность окна проверять и положение курсора мыши отслеживать и вообще вести себя неадекатно.

В-четвёртых, у Maxthon обновился рендер страниц. Теперь для каждой вкладки создаётся свой "Mx_WidgetWin_0", что усложняет автоматизацию (раньше был один на всех "Maxthon3Cls_WebViewHost"). Больше не буду его предлагать.

В-пятых, попробуйте IE - самый автоматизируемый браузер.
 
Автор
D
Сообщения
137
Репутация
-2
Да, есть там поле ввода после нажатия "Поиск" и обновленной страницы. Ладно, я думал в коде не то что-то.
Спасибо за советы, тему считаю решённой.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
есть там поле ввода после нажатия "Поиск" и обновленной страницы
Да, действительно есть. Только координаты у него "0:0" (левый верхний угол) и "0:0" (правый нижний угол). Причём размеры самого рендера "Mx_WidgetWin_0" 349х282 с координатами "-31951:-31911" (левый верх) и "-31602:-31629" (правый низ).
 
Автор
D
Сообщения
137
Репутация
-2
Может,конечно,я не туда смотрю...но после нажатия кнопки "Поиск" и обновления страницы Maxthon у меня координаты окна для ввода текста 966:110, а рендер так и остаётся для всех окон Mx_WidgetWin_01 без изменений для обоих окон, также покликал по темам внизу- не изменяется:

Код:
>>>> Window <<<<
Title:	Ошибка! - Maxthon Cloud Browser 4.9.2.1000 - 4yandex
Class:	Maxthon3Cls_MainFrm
Position:	-8, -8
Size:	1382, 744
Style:	0x97CF0000
ExStyle:	0x00000100
Handle:	0x0000000000050354

>>>> Control <<<<
Class:	Mx_WidgetWin_0
Instance:	1
ClassnameNN:	Mx_WidgetWin_01
Name:	
Advanced (Class):	[CLASS:Mx_WidgetWin_0; INSTANCE:1]
ID:	
Text:	
Position:	49, 89
Size:	1319, 610
ControlClick Coords:	966, 110
Style:	0x56000000
ExStyle:	0x00000000
Handle:	0x00000000000303FA

>>>> Mouse <<<<
Position:	1015, 199
Cursor ID:	5
Color:	0xFFFFFF

Но стоит нажать на Быстрый старт для работы с AutoIt. или Инструменты и помощь по AutoIt., то начинается увеличение на единицу Mx_WidgetWin_02 потом Mx_WidgetWin_03 и т.д.

Только координаты у него "0:0" (левый верхний угол) и "0:0" (правый нижний угол). Причём размеры самого рендера "Mx_WidgetWin_0" 349х282 с координатами "-31951:-31911" (левый верх) и "-31602:-31629" (правый низ)
- честно говоря вообще не понял откуда эти координаты и цифры вообще.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
откуда эти координаты и цифры
Это координаты, которые получаются после нажатия скриптом кнопки "Поиск" в свёрнутом окне и загрузки страницы с ошибкой поиска. Другими словами, вы не сможете полноценно кликать по координатам после загрузки/обновления страницы в свёрнутом окне.
 
Автор
D
Сообщения
137
Репутация
-2
Подскажите, каким образом вы их определили? Я запустил AutoIt v3 Window Info после нажатия скриптом в свёрнутом окне Maxthon кнопки "Поиск" по координатам и загрузки страницы с ошибкой поиска и вижу, что положение кнопки "Поиск" а также двух прилегающих к ней слева полей не изменили своих положений, то есть если я снова применю координаты 1190, 110, то попаду на кнопку "Поиск". Каким образом у верхнего левого угла получаются координаты 0:0 я понимаю, но откуда у нижнего правого 0:0 ? И, как я прислал выше, размеры самого рендера Size: 1319, 610...
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
Вот именно - видите. Т.е. после нажатия "Поиск" в свёрнутом окне, вы восстанавливаете окно и определяете координаты. В момент, когда окно восстанавливается, рендер и "создаёт" страницу: раскладывает элементы по координатам, подгружает картинки, выполняет некоторые скрипты и т.д. А пока окно свёрнуто - ничего этого не происходит. Вот я вам и привёл цифры, которые вы не видите, но которые на самом деле имеют место быть. И когда вы пытались в свёрнутом окне нажать "Поиск", дождаться загрузки страницы и кликнуть в координаты поля ввода - этих координат просто не было.
 
Автор
D
Сообщения
137
Репутация
-2
Научите же, пожалуйста, как мне увидеть то, что вы видите?Какую программу использовать?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
как мне увидеть
Вот так можно увидеть положение и размер "страницы" (запустите скрипт со свёрнутым и с обычным окном Maxthon и сравните размеры)
Код:
Opt("WinTitleMatchMode", 2)
$hWnd = WinWait(" - Maxthon")
ControlSend($hWnd, "", "Mx_WidgetWin_01", "{F5}")
Sleep(2000)

#include <Array.au3>
_ArrayDisplay(ControlGetPos($hWnd, "", "Mx_WidgetWin_01"))
 
Автор
D
Сообщения
137
Репутация
-2
Да,действительно,спасибо огромное...Как же тогда писать ботов если размеры разные и координаты?
Какой браузер использовать?
Я удалил сразу при установке Explorer за ненадобностью...(не думал что понадобится) Сейчас пытаюсь скачать снова, он скачивается,устанавливается,перезагружается , доходит до 90 % или больше и потом пишет Ошибка установки, система будет приведена в начальное состояние...https://www.microsoft.com/ru-ru/download/Internet-Explorer-11-for-Windows-7-details.aspx?id=40902 Скачиваю вроде с офф сайта.
Не знаю как теперь быть просто...
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
Как же тогда писать ботов если размеры разные и координаты?
Просто не сворачивать окно. Для этого либо использовать виртуальную машину (если в активном окне), либо переместить окно браузера за пределы экрана (если в неактивном). Ну а если там "реальный барыш", то можно и на отдельную машину разориться.
 
Автор
D
Сообщения
137
Репутация
-2
Барыша нет, просто баловство...хобби). Какой лучше использовать для этих целей браузер? IE не доступен мне, к сожалению.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Dessan
Какой лучше использовать для этих целей браузер?
На данный момент браузеров (читай - движков) фактически три: IE, Firefox и все остальные Chromium-клоны. IE вам "не доступен", Chromium-клоны вас не устраивают. Значит, остаётся Firefox. По работе с Firefox довольно много тем. Ищите, изучайте, пробуйте.
 
Автор
D
Сообщения
137
Репутация
-2
Я так понимаю все подходят. Maxthon вроде интересный такой и ресурсов не много кушает, главное его не сворачивать
Кушает оперативку сильно, Firefox лучше будет, Chrome на втором месте.
 
Верх