1

Тема: AHK: Сложность определения элемента интерфейса

Не удается обозначить команду для совершения клика по данному элементу интерфейса (см. скриншот) с выпадающим списком. Пробовал записывать действие с помощью Macro Creator и XMR, но безуспешно. Пытался кое-как использовать команду ControlClick. Сложность заключается в том, что метод координации клика относительно экрана не подходит в данном случае, т.к. данное окно имеет свойство менять свое положение относительно экрана. Вероятно, я не правильно использую Window Spy. Пожалуйста, помогите разобраться.


IfWinNotActive,Untitled - Vegas Pro 13.0 ahk_class Vegas.Class.Frame
WinActivate,Untitled - Vegas Pro 13.0 ahk_class Vegas.Class.Frame
MouseClick,L,1465,98,,,D
MouseClick,L,1465,98,,,U

http://puu.sh/jRz9K/eafc3dcc90.png http://puu.sh/jRzXJ/4d8ef4d388.png


Или подскажите, какие параметры из заданных списков требуется выбрать для определения элемента интерфейса на первом скриншоте?

+ открыть спойлер

http://puu.sh/jRzIX/47ef2ab0d0.png http://puu.sh/jRzKW/192ea59c26.png http://puu.sh/jRzLI/b45882b902.png

2

Re: AHK: Сложность определения элемента интерфейса

В документации, в общем-то всё написано по-русски.

MouseClick [, WhichButton, X, Y, ClickCount, Speed, D|U, R]

Щелчок мышки посылается относительно активного окна, либо относительно всего экрана в зависимости от опции R и команды CoordMode.

3 (изменено: becauseim, 2015-08-29 12:10:20)

Re: AHK: Сложность определения элемента интерфейса

ypppu, безусловно, то, что Вы наводите на самостоятельное решение вопроса - это правильно, но, к сожалению, для меня, как для не имеющего отношения к программированию пользователя, порядком сложно написать синтаксически верный рабочий код для данного параметра. Я уже пробовал использовать координаты относительные от окна, но, к сожалению, решение работало только до тех пор, пока окно не меняло свою позицию, т.е. получалось ровным счетом то же, что и при задании координат всего экрана. На скриншоте Window Spy отображено необходимое для клика положение, буду признателен подсказке, как же все-таки грамотно использовать отображенные в нем результаты.

4

Re: AHK: Сложность определения элемента интерфейса

Судя по картинке выпадающий список находится в левом верхнем углу. А по показаниям программы Window Spy курсор мыши находится в правом верхнем углу.

AutoHotkey отсчитывает координаты относительно левого верхнего угла экрана. У Вас какой-нибудь режим расширенного Рабочего стола или работа с несколькими мониторами?

5

Re: AHK: Сложность определения элемента интерфейса

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

6 (изменено: becauseim, 2015-08-29 14:26:05)

Re: AHK: Сложность определения элемента интерфейса

Информация о положении курсора, полученная с помощью AhkSpy:

+ открыть спойлер

( Mouse pos ) pause 
Screen:  x1391 y91  ▪  Window:  x1399 y99  ▪  Client:  x1391 y48
Relative pos to a window:  x/w 0.677810  y/h 0.087766  for  w2064  h1128
Relative active window:  x1399 y99  ▪  exe vegas130.exe class Vegas.Class.Frame

( PixelGetColor )
RGB:  0x457594  ▪  457594  ▪  BGR:  0x947545  ▪  947545

( Window: Class & ProcessName & HWND )
ahk_class Vegas.Class.Frame ahk_exe vegas130.exe ahk_id 0x709ce

( Control )
Class NN:  ToolbarWindow321  ▪  Win class:  ToolbarWindow32
Pos:  x1223 y88  ▪  Size:  w826 h27  ▪  x22049 y2115
Pos relative client area:  x1215 y37  ▪  x22041 y264
Mouse relative control:  x176 y11  ▪  Client area:  x8 y51 w2048 h1069
HWND:  0x10bfa  ▪  Style:  0x5600994D  ▪  ExStyle:  0x00000000
Focus control:  Vegas.Class.Doc11  ▪  Cursor type:  Arrow  ▪  Caret pos:  x361 y703

( AccInfo )
Type:  Child  ▪  Id:  7  ▪  Pos: x1348 y80 w81 h22  ▪  Mouse relative: x43 y11

( Name )
Draft (Half)

( State )
отслеженное  ▪  code: 128

( Role )
элемент меню  ▪  code: 12

( Role - parent )
панель инструментов  ▪  code: 22

( Action )
Нажать

Полагаю, AhkSpy более полно описывает положение курсора.

7 (изменено: yalanne, 2015-08-29 15:55:11)

Re: AHK: Сложность определения элемента интерфейса

В ControlClick не только по позиции можно кликать, можно указывать имя контрола.
Вот это подходит?

SetTitleMatchMode 2
ControlClick ToolbarWindow321, - Vegas Pro 13.0 ahk_class Vegas.Class.Frame

8

Re: AHK: Сложность определения элемента интерфейса

Значит монитор такой широкий 2064 x 1128... Тогда должно работать:

MouseClick, ,1461 ,97

Если не заработает, проверьте в других программах, к примеру в Paint. Некоторые программы не воспринимают AutoHotkey.

9

Re: AHK: Сложность определения элемента интерфейса

yalanne пишет:

В ControlClick не только по позиции можно кликать, можно указывать имя контрола.
Вот это подходит?

SetTitleMatchMode 2
ControlClick ToolbarWindow321, - Vegas Pro 13.0 ahk_class Vegas.Class.Frame

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

10

Re: AHK: Сложность определения элемента интерфейса

becauseim пишет:

Полагаю, это не полный сценарий для клипа по кнопке с выпадающим списком

Ну по идее это должно просто открыть этот список не выбирая не чего в нем.

11

Re: AHK: Сложность определения элемента интерфейса

ypppu пишет:

Тогда должно работать:

MouseClick, ,1461 ,97

Повторюсь, окно с размещенной на ней кнопкой, имеет свойство менять свое положении в виду "подвижности" интерфейса.

ypppu пишет:

Некоторые программы не воспринимают AutoHotkey.

Vegas Pro воспринимает. Уже имею набор скриптов, полученных методом записи действий на языке AHK, в т.ч. и с командой ControlClick.

12

Re: AHK: Сложность определения элемента интерфейса

yalanne пишет:

Вот это подходит?

SetTitleMatchMode 2
ControlClick ToolbarWindow321, - Vegas Pro 13.0 ahk_class Vegas.Class.Frame

Ничего не происходит, к сожалению.

Сделал запись с экрана того, что требуется и при каких условиях. Надеюсь, это поспособствует решению.
https://youtu.be/2Au48McfQnA

13

Re: AHK: Сложность определения элемента интерфейса

Ничего не происходит, к сожалению.

Наверное потому что клик происходит по центру контрола, а надо справа. В Options надо добавить координаты, которые в AhkSpy в параметре - Mouse relative control.


SetTitleMatchMode 2
ControlClick, ToolbarWindow321, - Vegas Pro 13.0 ahk_class Vegas.Class.Frame,,,, x176 y11

При условии что контрол не изменяет своих размеров, иначе так:

SetTitleMatchMode 2
ControlGetPos, , , W, H, ToolbarWindow321, - Vegas Pro 13.0 ahk_class Vegas.Class.Frame
ControlClick, ToolbarWindow321, - Vegas Pro 13.0 ahk_class Vegas.Class.Frame,,,, % "x" W-5 " y" H//2
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14

Re: AHK: Сложность определения элемента интерфейса

Вопрос закрыт. Отправил плюсы в репутацию всем откликнувшимся.

WinActivate, Vegas Pro 13.0 ahk_class Vegas.Class.Frame
ControlClick, ToolbarWindow321, Vegas Pro 13.0 ahk_class Vegas.Class.Frame,, Left, , Down x203 y8 NA

15 (изменено: Alectric, 2015-08-29 18:40:06)

Re: AHK: Сложность определения элемента интерфейса

Можно попробовать использовать Acc. Для начала скачай "AccViewer Source.ahk", и с его помощь посмотри путь к той кнопке... или сразу к нужной кнопке в выпадающем меню. Путь будет указан внизу в виде цифр (4,2,3,2,6).

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

16 (изменено: yalanne, 2015-08-29 21:03:28)

Re: AHK: Сложность определения элемента интерфейса

У ToolbarWindow32 может быть разный индекс на конце, это зависит от открытых окон в вегасе. То есть может кликнуть не туда.
Вот скрипт который определяет нужный индекс и нажимает в нужное место

SetTitleMatchMode 2
SetBatchLines -1
if !WinExist("Vegas Pro 13.0 ahk_class Vegas.Class.Frame")
    return
ControlGetPos,x_VideoPreview,y_VideoPreview, , ,Vegas.Class.VideoPreview.Output1,Vegas Pro 13.0 ahk_class Vegas.Class.Frame
loop
{
ControlGetPos,x,y,w,h,ToolbarWindow32%A_Index%,Vegas Pro 13.0 ahk_class Vegas.Class.Frame
if (x="") and (y="")
    return
if (x = x_VideoPreview) and ((y+h) = y_VideoPreview) and (toolbar:="ToolbarWindow32" A_Index)
    break
}

WinActivate, Vegas Pro 13.0 ahk_class Vegas.Class.Frame
ControlClick, %toolbar%, Vegas Pro 13.0 ahk_class Vegas.Class.Frame,, Left, , Down x203 y8 NA
WinWait ahk_class #32768
SendInput {Down}{Right}{Down 2}
return

17

Re: AHK: Сложность определения элемента интерфейса

yalanne, интересно, но не совсем понял, что делает этот скрипт. А сценарий, описанный в этой теме, у меня теперь уже работает.

18

Re: AHK: Сложность определения элемента интерфейса

А зачем Вегасу автохотки, когда там можно прописывать свои сценарии:
http://www.sonycreativesoftware.com/for … eid=715936

19 (изменено: becauseim, 2015-09-02 15:19:03)

Re: AHK: Сложность определения элемента интерфейса

Malcev, насколько мне известно, нельзя средствами скриптинга в Вегасе отправить команду в окно предварительного просмотра.
А также, сриптописание в Вегасе подразумеваниет более тесное взаимоотношение с программированием. Если в AHK задать нажатие клавиш и кликов по указанным координатам не столь сложно для рядового пользователя, то для Java необходимы куда более обширные знания. Да и помощь в скриптописании для Вегаса не предлагается ни на одном отечественном ресурсе. На provegas.ru тема заброшена. Если Вам известны зарубежные альтернативные ресурсы, то прошу поделиться в личку. Главное, чтобы они были "живыми".

upd.: Не сразу перешел по ссылке, извиняюсь. Ознакомлюсь с предложенными по ней скриптами. Спасибо!

20 (изменено: Malcev, 2015-09-02 15:26:10)

Re: AHK: Сложность определения элемента интерфейса

Malcev, насколько мне известно, нельзя средствами скриптинга в Вегасе отправить команду в окно предварительного просмотра

А код по ссылке из 18 поста, разве не отправляет?
Сам с вегасом не дружу, но тут ветка есть на видеоэдитинге:
http://forum.videoediting.ru/index.php? … ony-vegas/
Англоязычный ресурс:
http://www.jetdv.com/vegas/forum/index.php

21 (изменено: becauseim, 2015-09-02 15:51:46)

Re: AHK: Сложность определения элемента интерфейса

Работают. Но игра таки стоила свеч. Разве что зря напряг людей.

22 (изменено: becauseim, 2015-11-28 16:13:57)

Re: AHK: Сложность определения элемента интерфейса

Помогите, пожалуйста, с идентификацией окна. Необходимо отправить несколько клавиш после его закрытия. Самостоятельные попытки установить ожидание на его закрытие, к сожалению, к результату не привели. Окно является индикатором прогресса просчета видеоэффекта в программе Vegas Pro, схожее окно отображается при рендеринге видеофайла.

WinWait, ahk_class #32770 ahk_exe vegas130.exe ahk_id 0xa18fa
WinWaitClose, ahk_class #32770 ahk_exe vegas130.exe ahk_id 0xa18fa

; WinWait, ahk_class #32770 ahk_exe vegas130.exe ahk_id 0x702f4
; WinWaitClose, ahk_class #32770 ahk_exe vegas130.exe ahk_id 0x702f4

Sleep 1000
SendInput !0^+{vkDB}
+ открыть спойлер

http://puu.sh/lBANl/4d28de611b.png

http://puu.sh/lBBgL/9c2b73a4e4.png

23 (изменено: Alectric, 2015-11-28 18:25:28)

Re: AHK: Сложность определения элемента интерфейса

WinWait, ahk_class #32770,Analyse Video...
WinWaitClose, ahk_class #32770,Analyse Video...

Sleep 1000
SendInput !0^+{vkDB}
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

24 (изменено: becauseim, 2015-11-29 02:04:25)

Re: AHK: Сложность определения элемента интерфейса

Alectric, Спасибо!

Скажите, пожалуйста, можно ли при помощи ImageSearch отправить клик по кнопке с названием эффекта?
В моем случае это кнопка Color Corrector. Кнопка не определяется как отдельный элемент интерфейса и относительно координат окна имеет свойство занимать различное положение.

+ открыть спойлер

http://puu.sh/lBWFG/8f0c688d8a.png

http://puu.sh/lBWJI/59ac07b21a.png