1 (изменено: Malcev, 2012-01-15 01:34:45)

Тема: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Вообщем никак не удаётся кликнуть в нужную часть контрола в зависимости от положения прилегающего к нему другого контрола.
То есть, нужно кликнуть в точку контрола 1, которая находится в 50 пикселях по горизонтали и в 100 пикселях по вертикали от левого верхнего угла контрола 2.
Такой вариант, почему-то не катит

ControlClick, Kontrol2, ahk_class Premiere Pro,,,, NA x50 y100

2 (изменено: creature.ws, 2012-01-15 01:48:07)

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Т.е. цель — клик по определённой области Kontrol1?
Но кликаете вы по координатам считающимся от control's upper left corner Kontrol2.
Вероятно, правильнее будет кликнуть по Kontrol1

3

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Контрол1 постоянно меняется при перезагрузки программы

4

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Что подразумевается под «меняется»?

5

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Меняется его ClassNN

6

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Т.е. имя нужного control'a не kontrol1?

7

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Да, один раз он может быть kontrol1, в следующий kontrol3 и т.д.

8

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Т.е. в исходных данных только относительные координаты места клика?

9 (изменено: Malcev, 2012-01-15 02:02:55)

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Имеем относительные координаты места клика Контрола с меняющимся  ClassNN, относительно Kontrol2,  ClassNN которого постоянен.
Kontrol2 это типа рамка Контрола с меняющимся  ClassNN

10 (изменено: creature.ws, 2012-01-15 02:23:44)

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

ControlGetPos , X, Y,,, Kontrol2, ahk_class Premiere Pro
ControlClick, % "X" X+50 " Y" Y+100, ahk_class Premiere Pro

11

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Не кликает. Координатыы ControlGetPos определяет правильно.
Но не кликает

12 (изменено: creature.ws, 2012-01-15 02:24:24)

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Отредактировал пример, попробуйте

13

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Спасибо огроменнейшее. Заработало!!! )))))

14

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Сделал по аналогии этого

ControlClick, % "X" X+50 " Y" Y+100

вот так

mousemove, % "" h%n% ", " v%n%

Выдаёт ошибку.
В чём проблема?

15

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Так как вопрос «в чём проблема», а не «сделайте мне чтоб работало» то позвольте переспросить,
почему вы используете посторонний, никак не связанный с mousemove пример?

Проблема в том, что вы не обратили внимание на соответствующий mousemove раздел справки.

В темах ранее обсуждавшихся неоднократно упоминалось ~ цель форума "научить, а не сделать на заказ",
я бы еще добавил — научить правильному подходу к выполнению поставленных задач, а не «разжевать базовые принципы, суть которых элементарно постигается при чтении справки и разборе существующих примеров кода».

16

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Так смысл же один - вписывание значения переменных.
Про mousemove посмотрел
http://l.autohotkey.net/docs/commands/MouseMove.htm
И по аналогии с вашей коммандой вписал правильно, разделив запятой.
Msgbox показывает, то что надо, а mousemove ругается.
Я конечно могу сделать так

a:=h%n%
b:=v%n%
mousemove, % a, b

Но хочу докопаться до сути.

17 (изменено: creature.ws, 2012-02-19 21:40:39)

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Запятая — разделитель параметров команды.
ControlClick подразумевает указание координат в первом параметре с добавкой к числовым значениям координат буквенного префикса «X» или «Y».
MouseMove подразумевает указание числового значения координаты X в первом параметре команды, Y‒во втором.
% (знак процента и пробел после него) — начало выражения. (не знаю как объяснить иначе, читайте справку).
Если в переменных a  и b — числа, то передать их в качестве параметров команды, в частности mousemove можно так:
MouseMove, % a, % b
либо
MouseMove, %a%, %b%

18

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Variables — читайте.

19 (изменено: Malcev, 2012-02-19 21:56:12)

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Получается, что в выражении не может стоять разделитель запятая?

n:=1
h1:=100
h2:=200
v1:=100
v2:=200
while (n<=2)
{
   mousemove, % h%n%, % v%n%
   sleep 1000
   n++
}

Но так тоже не работает.

Variables — читайте.

Так я читал.
Нету там этого.

20

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

OFF: Своё мнение и позицию я выразил в сообщении #15, уж не обижайтесь.

21 (изменено: Malcev, 2012-11-04 18:42:12)

Re: AHK: Выполнить ControlClick в зависимости от положения другого контрол

Кстати, предыдущий код заработал.
Видно от недосыпа начудил.

Если в переменных a  и b — числа, то передать их в качестве параметров команды, в частности mousemove можно так:
MouseMove, % a, % b
либо
MouseMove, %a%, %b%

либо
MouseMove, % a, b

Добавлю для себя.

Click, % 250 + x "," 150 + y

Спасибо за ликбез