Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Не срабатывает ControlClick (http://forum.oszone.net/showthread.php?t=315136)

sNc-DAntES 23-05-2016 16:08 2637031

Не срабатывает ControlClick
 
Добрый день. Есть желание создать скрипт, который будет нажимать кнопки и отмечать галочки при установке некоторой программы. Рабочая его часть выглядит следующим образом:
Скрытый текст

Код:

#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","")



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



Здесь нужно отметить нижний чекбокс. Что я и пытаюсь сделать командой:
Код:

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 2637052

попробуйте тогда кликнуть на элементе:
Код:

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

sNc-DAntES 23-05-2016 21:25 2637113

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

sNc-DAntES 25-05-2016 13:27 2637530

Что-то не хотят мои скрипты дружить с этой командой, или я не понимаю, как она работает. Вот пример скрипта:
Скрытый текст

Код:

#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 2637970

sNc-DAntES
По первому вопросу: не пробовали послать нажатие пробела
Код:

Send("{SPACE}")
? С клавиатуры пробел тут вроде должен срабатывать.

Вы не пробовали подружиться с функциями Run() и ShellExecute() со строкой запуска из свойств ярлыка? Вторая должна сработать даже так:
Код:

ShellExecute(@DesktopDir & "\ваш_ярлык.lnk")

sNc-DAntES 30-05-2016 18:08 2638846

oz84, спасибо. Я только осваиваю этот скриптовый язык. Естественно, туплю. По кнопкам и галочкам нажимается отлично. Не хочет жаться там, где вместо кнопки картинка или другая нестандартная ерунда.

oz84 01-07-2016 12:10 2647119

sNc-DAntES, посмотрите UIAutomate, не подойдёт для таких случаев?


Время: 17:01.

Время: 17:01.
© OSzone.net 2001-