Войти

Показать полную графическую версию : Не срабатывает ControlClick


sNc-DAntES
23-05-2016, 16:08
Добрый день. Есть желание создать скрипт, который будет нажимать кнопки и отмечать галочки при установке некоторой программы. Рабочая его часть выглядит следующим образом:


#cs ----------------------------------------------------------------------------

AutoIt Version: 3.2.2.0

Author: m3741

Script Function:

Installs SpywareBlaster 3.5.1 since the silent installation function was

removed in this version. Thanks to JavaCool for making this program good

and free!

#ce ----------------------------------------------------------------------------

AutoItSetOption("MouseCoordMode", 0)

; Start the install

Run("spywareblastersetup55.exe")

WinWaitActive("Setup - SpywareBlaster")

Send("!n")

WinWaitActive("Setup - SpywareBlaster", "License Agreement")

Send("!a")

Send("!n")

WinWaitActive("Setup - SpywareBlaster", "Select Destination Location")

Send("!n")

WinWaitActive("Setup - SpywareBlaster", "Ready to Install")

Send("!i")

WinWaitActive("Setup - SpywareBlaster", "Completing the SpywareBlaster Setup Wizard")

Send("!f")

; Installation is complete. Finish up the install.

WinWaitActive("SpywareBlaster Tutorial")

Sleep(4000) ; Ждём, пока на кнопке Next бежит таймер

ControlCommand("SpywareBlaster Tutorial","Frame1","[CLASS:ThunderRT6UserControlDC; INSTANCE:1]", "Check","")

Send("{ENTER}")

ControlCommand("SpywareBlaster Tutorial","Frame1","[CLASS:ThunderRT6UserControlDC; INSTANCE:7]", "Check","")



Итогом, является появление окна:

http://rgho.st/8GJsrfqbb/thumb.png (http://rgho.st/8GJsrfqbb.view)

Здесь нужно отметить нижний чекбокс. Что я и пытаюсь сделать командой:
ControlCommand("SpywareBlaster Tutorial","Frame1","[CLASS:ThunderRT6UserControlDC; INSTANCE:7]", "Check","")Как видно на картинке, чекбокс становится жёлтеньким, то есть команда, я так понимаю, проходит, но в отличие от предыдущего нажатия на кнопку:

ControlCommand("SpywareBlaster Tutorial","Frame1","[CLASS:ThunderRT6UserControlDC; INSTANCE:1]", "Check","")

Send("{ENTER}")
Здесь не ставится галочка ни одной из кнопок, только мышкой. То есть чекбокс оно выделяет, но галочку не ставит. Подскажите пожалуйста, что я делаю не так? Спасибо.

Mike909
23-05-2016, 17:51
попробуйте тогда кликнуть на элементе:

ControlClick("SpywareBlaster Tutorial","Frame1","[CLASS:ThunderRT6UserControlDC; INSTANCE:7]", "main")

sNc-DAntES
23-05-2016, 21:25
Пробовал сначала так, тоже не выходило. В итоге я всё равно отказался от AutoIt с этой программой, т.к. там дурацкая система и поиск надо выполнять по картинке, а как это сделать по простому в AutoIt я не нашёл. Спасибо.

sNc-DAntES
25-05-2016, 13:27
Что-то не хотят мои скрипты дружить с этой командой, или я не понимаю, как она работает. Вот пример скрипта:


#cs ----------------------------------------------------------------------------

AutoIt Version: 3.3.14.2

Author: P1zdat1y

Script Function:

Автоматический запуск скрытого диска и его расшаривание

#ce ----------------------------------------------------------------------------
; Фокус на Рабочий Стол
WinMinimizeAll()
WinActivate ( 'Program Manager')
ControlClick ( 'Program Manager', '', '', 'main', 1, 1392, 130)
Send ('{ENTER}')



По координатам 1392, 130 находится ярлык. В системе включено, чтобы ярлыки открывались по одинарному клику. Но это не важно, так как я пробовал ставить и 2 клика и 20 и 200. Результат всегда один и тот же — ярлык просто выделяется мышью и далее приходится посылать нажатие клавиши Enter, чтобы его нажать.

Подскажите пожалуйста, что я делаю не так? Спасибо.

oz84
27-05-2016, 01:50
sNc-DAntES
По первому вопросу: не пробовали послать нажатие пробела
Send("{SPACE}")
? С клавиатуры пробел тут вроде должен срабатывать.

Вы не пробовали подружиться с функциями Run() и ShellExecute() со строкой запуска из свойств ярлыка? Вторая должна сработать даже так:
ShellExecute(@DesktopDir & "\ваш_ярлык.lnk")

sNc-DAntES
30-05-2016, 18:08
oz84, спасибо. Я только осваиваю этот скриптовый язык. Естественно, туплю. По кнопкам и галочкам нажимается отлично. Не хочет жаться там, где вместо кнопки картинка или другая нестандартная ерунда.

oz84
01-07-2016, 12:10
sNc-DAntES, посмотрите UIAutomate (http://autoit-script.ru/index.php?topic=16780.0), не подойдёт для таких случаев?




© OSzone.net 2001-2012