Autoit controlclick не работает

AutoIt — ControlClick не работает

Я не знаю, как заставить это работать, или мне что-то не хватает — возможно, в #include ? на данный момент у меня есть:

Я проверил с помощью AutoIt v3 WIndow Control и аргументы внутри ControlClick верны

ни одна из последних двух строк не делает AutoIt нужным выбором. Любая помощь очень ценится.

Вероятно, скрипт ждет, пока окно станет активным WinWaitActive().

В этом случае вы можете использовать WinActivate перед WinWaitActive, чтобы избежать этой проблемы.

Если вы хотите более надежное решение, вы можете использовать это:

Возможно, это не то, что вы ищете, так как он ждет, пока окно будет активным для запуска кода. WinActivate() активирует окно. Если вы хотите, чтобы код запускался при активации окна, то WinWaitActive() будет делать.

Также вы можете избежать заголовка в ControlClick, выполнив это.

Используйте инструмент Autoit Window Info, чтобы найти классы, если вы еще не используете его. (https://www.autoitscript.com/autoit3/docs/intro/au3spy.htm)

Если ControlClick все еще не работает, вы можете попробовать использовать

X, Y — координаты.

Я написал UDF в AutoIt, чтобы ждать элементов управления. размещены здесь несколько раз. просто кормите его тем, что хотите, и как долго, если это применимо, вы хотите подождать. вы можете ждать по умолчанию.

Однако есть более простое решение, установите его в тихом режиме. выполнить команду

Выполнить ($ sDrivers & ‘\ vcredist_x86.exe/q’)

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

Источник

AutoIt — ControlClick не работает

Я не знаю, как это сделать, или мне что-то не хватает — может быть, в #include ? на данный момент у меня есть:

Я проверил с помощью AutoIt v3 WIndow Control, и аргументы внутри ControlClick верны

Ни одна из последних двух строк не заставляет AutoIt выбрать желаемый вариант. Любая помощь очень ценится.

4 ответа

Вероятно, скрипт ждет, когда станет активным окно WinWaitActive ().

В этом случае вы можете использовать WinActivate перед WinWaitActive, чтобы избежать этой проблемы.

Если вам нужно более надежное решение, вы можете использовать это:

Читайте также:  Ивеко дейли не работает левый поворотник

Пройдя через аналогичную ситуацию для одного приложения, пытаясь автоматизировать это, после попытки всей отладки просто добавил команду ниже, и она сработала как шарм

Я написал UDF в AutoIt, чтобы дождаться элементов управления. размещены здесь несколько раз. просто кормите его тем, что хотите, и сколько времени, если возможно, вы хотите ждать. по умолчанию вы можете ждать вечно.

Однако есть более простое решение — установить его в тихом режиме. запустить команду

Запустите ($ sDrivers & ‘\ vcredist_x86.exe / q’)

Теперь вам не нужно тыкать в кнопки. Кроме того, лучше не использовать ID, потому что, если вы тестируете приложение, которое меняется, разработчики могут все это изменить. Вместо этого я использую текст кнопки как дополнительный критерий поиска. гораздо более надежен и требует меньше обслуживания в моем коде.

Вероятно, это не то, что вы ищете, так как он ждет, пока окно не станет активным, для запуска кода. WinActivate () активирует окно. Если вы хотите, чтобы код запускался при активации окна, подойдет WinWaitActive () .

Также вы можете избежать появления заголовка в ControlClick, сделав это.

Используйте инструмент Autoit Window Info, чтобы найти классы, если вы его еще не используете. (https://www.autoitscript.com/autoit3/docs/intro/au3spy. htm)

Если ControlClick по-прежнему не работает, вы можете попробовать использовать

Источник

[Мышь, клавиатура] Использование ControlClick с ControlGetHandle

Fallen

Новичок

Добрый день. Все бьюсь с функцией ControlClick и что-то, ничего у меня не получается. Я так понимаю она должна работать по аналогии с функцией ControlSend, ан нет. ControlSend работает отлично. Ниже мои попытки)

Alofa

Гость

Fallen

Новичок

Alofa

Гость

Причем здесь я (или Мы)? Повторюсь — это ВАМ нужно.

Fallen

Новичок

Повторюсь, что в аналогичном примере с ControlSend все работает отлично. Функцию ControlGetHandle я нашел на анг. форуме, у одного из пользователей была аналогичная проблема с пустым ControlID и ему посоветовали использовать ControlGetHandle. Данный совет подошел и для меня. Функция не возвращает пустое значение.

Для интереса сделал следующее :

Знающий

это у меня получение указателя рабочего поля пейнта по названию и классу.
Рекомендую скачать Control Viewer (автор Yashied) и пользоваться вместо Autoit Windows Info, имхо поудобнее.

А вообще если не можете найти место, где программа перестает работать как требуется, то после каждой строки кода выводите полученное значение через MsgBox или ConsoleWrite. Скорее всего у вас $hwnd из ControlGetHandle не получается. Но точно вам никто не скажет, пока сами не проверите — вряд ли кто-то будет ставить вашу игрушку и там пробовать.
ControlClick, насколько помню, кликает по координатам относительно левого верхнего угла котрола, Opt(«MouseCoordMode»,0) там не пришей кобыле хвоста.

Читайте также:  Как отремонтировать крепления двери шкафа

Если $hwnd получается из контрола как надо, если вы не тупите с координатами (проверяйте все в Control Viewer), а все равно ничего не нажимается. то такое тоже иногда бывает. ControlClick имитирует клик мышкой, когда кнопка мыши нажимается и моментально отжимается. Иногда надо задержать недолго нажатой кнопку, чтоб сработало. Попробуйте так нажать (это для левой кнопки мыши), может поможет. $Sleep хоть пару милисекунд поставьте. #include в начало скрипта добавьте.

Источник

Autoit controlclick не работает

Профиль | Отправить PM | Цитировать

Доброе время суток.
Задача:
сидеть ждать, пока не запустится Эксплорер. При запуске ввести в адресную строку адрес и нажать на Обновить. (тут именно на обновить, а не послать Send(««))

Решение:
WinWaitActive(‘Пустая страница — Windows Internet Explorer’,’about :blank’)
ControlSend(«Пустая страница — Windows Internet Explorer», «about :blank», «[CLASS:Edit; INSTANCE:1]», «http://www.google.com»)

До сих пор все работает как надо. А вот дальше чего-то я никак не соображу:
ControlClick(«Пустая страница — Windows Internet Explorer», «http://www.google.com», «[CLASS:ToolbarWindow32; INSTANCE:4]», «Left»)

Вот что выдает AutoIt Window Info:
>>>> Window >>> Control

Сообщения: 88
Благодарности: 19

куда эти координаты втулить в строку: »

Судя по всему ты читал русскую справку , которая сильно устарела.
Обрати внимание на Английскую :

Это сообщение посчитали полезным следующие участники:

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

О, опыт удался:
ControlClick («Пустая страница — Windows Internet Explorer», «http://www.google.com», «ToolbarWindow324», «right», 1, 1, 1)
Нда, порой сложно разобраться как работает телевизор читая инструкцию от холодильника.

То есть, по сути, ControlClick работает надежней чем MouseClick, ибо где бы окно не находилось, ControlClick всегда тыкнет в координаты на нужной кнопке, а MouseClick просто в координаты, и ему до лампочки что находится под тем местом, куда он тычет.

Последний раз редактировалось FrankiAm, 30-10-2010 в 14:02 .

Источник

Autoit controlclick не работает

Профиль | Отправить PM | Цитировать

Доброе время суток.
Задача:
сидеть ждать, пока не запустится Эксплорер. При запуске ввести в адресную строку адрес и нажать на Обновить. (тут именно на обновить, а не послать Send(««))

Решение:
WinWaitActive(‘Пустая страница — Windows Internet Explorer’,’about :blank’)
ControlSend(«Пустая страница — Windows Internet Explorer», «about :blank», «[CLASS:Edit; INSTANCE:1]», «http://www.google.com»)

До сих пор все работает как надо. А вот дальше чего-то я никак не соображу:
ControlClick(«Пустая страница — Windows Internet Explorer», «http://www.google.com», «[CLASS:ToolbarWindow32; INSTANCE:4]», «Left»)

Вот что выдает AutoIt Window Info:
>>>> Window >>> Control

Сообщения: 88
Благодарности: 19

куда эти координаты втулить в строку: »

Судя по всему ты читал русскую справку , которая сильно устарела.
Обрати внимание на Английскую :

Это сообщение посчитали полезным следующие участники:

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

О, опыт удался:
ControlClick («Пустая страница — Windows Internet Explorer», «http://www.google.com», «ToolbarWindow324», «right», 1, 1, 1)
Нда, порой сложно разобраться как работает телевизор читая инструкцию от холодильника.

То есть, по сути, ControlClick работает надежней чем MouseClick, ибо где бы окно не находилось, ControlClick всегда тыкнет в координаты на нужной кнопке, а MouseClick просто в координаты, и ему до лампочки что находится под тем местом, куда он тычет.

Последний раз редактировалось FrankiAm, 30-10-2010 в 14:02 .

Источник

Оцените статью