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 не работает
Доброе время суток.
Задача:
сидеть ждать, пока не запустится Эксплорер. При запуске ввести в адресную строку адрес и нажать на Обновить. (тут именно на обновить, а не послать 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
| куда эти координаты втулить в строку: » |
Судя по всему ты читал русскую справку , которая сильно устарела.
Обрати внимание на Английскую :
Это сообщение посчитали полезным следующие участники:
| куда эти координаты втулить в строку: » |
Судя по всему ты читал русскую справку , которая сильно устарела.
Обрати внимание на Английскую :
Это сообщение посчитали полезным следующие участники: