Что нового

Мышь, контекстное меню

Irbis_13

Новичок
Сообщения
8
Репутация
0
Здравствуйте товарищи.
Внутри окна, есть активное дочернее окно, с помощью
Код:
MouseClick("right", 1112, 349, 1)
произведен клик правой кнопки мыши.
Вопросы:
1) как взаимодействовать с выпадающим контекстным меню после нажатия правой кнопкой мыши?
2) есть еще способ нажатия правой кнопкой мыши не по координатам, а просто по активному окну?
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Здравствуйте товарищи.
Внутри окна, есть активное дочернее окно, с помощью
Код:
MouseClick("right", 1112, 349, 1)
произведен клик правой кнопки мыши.
Вопросы:
1) как взаимодействовать с выпадающим контекстным меню после нажатия правой кнопкой мыши?
2) есть еще способ нажатия правой кнопкой мыши не по координатам, а просто по активному окну?
А не пробовал использовать это?
Код:
ControlClick()
 
Автор
I

Irbis_13

Новичок
Сообщения
8
Репутация
0
А не пробовал использовать это?
Код:
ControlClick()
Спасибо, с кликом правой кнопкой мыши на активном дочернем окне - понятно... Остается вопрос, как взаимодействовать с выпадающим контекстным меню?
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Спасибо, с кликом правой кнопкой мыши на активном дочернем окне - понятно... Остается вопрос, как взаимодействовать с выпадающим контекстным меню?
Ну тут два варианта, которые я могу предложить.
1. ожидать появления текста и так же выбирать его, ну если он в зоне видимости.
Код:
WinWait ($Titile, 'Элемент из выпадающего списка')
ControlClick()

2. Если он вне зоны видимости использовать библиотеку UIAutomate.au3
Код:
_UIA_ElementScrollIntoView()
 
Автор
I

Irbis_13

Новичок
Сообщения
8
Репутация
0
Ну тут два варианта, которые я могу предложить.
1. ожидать появления текста и так же выбирать его, ну если он в зоне видимости.
Код:
WinWait ($Titile, 'Элемент из выпадающего списка')
ControlClick()

2. Если он вне зоны видимости использовать библиотеку UIAutomate.au3
Код:
_UIA_ElementScrollIntoView()
А что значит вне зоны видимости? Вне зоны видимости кого? Контекстно меню появляется сразу после
Код:
MouseClick[/URL]("right", 1112, 349, 1)

Код:
WinWait ($Titile, 'Элемент из выпадающего списка')

А как узнать Title окна, если при выборе во вспомогательной утилите AutoIt Window Info-> Finder Tool, данное контекстное меню, естественно, скрывается....
 

lettterssino

Знающий
Сообщения
109
Репутация
10
А что значит вне зоны видимости? Вне зоны видимости кого? Контекстно меню появляется сразу после
Код:
MouseClick[/URL]("right", 1112, 349, 1)

Код:
WinWait ($Titile, 'Элемент из выпадающего списка')

А как узнать Title окна, если при выборе во вспомогательной утилите AutoIt Window Info-> Finder Tool, данное контекстное меню, естественно, скрывается....
Значит, что у тебя ещё есть ползунок. Из-за того, что весь текст не помещается в окно и остальные пункты вне видимости
Так тайтл у тебя остаётся, просто ожидаешь текст, который должен появится, чтобы следующий клик не был раньше появления текста.
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Первая переменная или ты без неё как то делаешь?
Код:
ControlClick ( "title", "text", controlID [, button = "left" [, clicks = 1 [, x [, y ]]]] )
 
Автор
I

Irbis_13

Новичок
Сообщения
8
Репутация
0
А не пробовал использовать это?
Код:
ControlClick()
Он наотрез отказывается работать.
Сообщение автоматически объединено:

Ну тут два варианта, которые я могу предложить.
1. ожидать появления текста и так же выбирать его, ну если он в зоне видимости.
Код:
WinWait ($Titile, 'Элемент из выпадающего списка')
"Ожидать появления текста" - текст в окне уже есть, я на нем нажимаю правую кнопку мыши
Код:
MouseClick("right", 1112, 349, 1)
и появляется окошко контекстного меню.
Код:
WinWait ($Titile, 'Элемент из выпадающего списка')

$Titile - какого окна мне нужно? Окна? А зачем он мне? У меня же открывается контекстное меню... 'Элемент из выпадающего списка' - что за элемент выпадающего списка?
Я что-то нигде не смог найти, где с помощтю Autoit производится работа с контекстным меню получаемым в результате нажати правой кнопки мыши в окне....
Сообщение автоматически объединено:

Пока сделал топорно, просто вычислил координаты нахождения пункта контекстного меню и снова
Код:
MouseClick("left", 1089, 533, 1)
, но естественно, что так не пойдет...
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
62
Пока сделал топорно, просто вычислил координаты нахождения пункта контекстного меню и снова
Код:
MouseClick("left", 1089, 533, 1)
, но естественно, что так не пойдет...
Уж если делать топорно, то лучше посылать клавиатуре стрелки и <Enter>, выбрав нужным количеством нажатий нужных стрелок нужный по счёту пункт меню, чем по координатам кликать. Обычно контекстные меню позволяют это делать, можно сначала вручную проверить последовательность нажатия клавиш. Тоже не идеальное решение, но всё же постабильнее, чем по координатам.

Иногда можно сделать ещё проще: в случаях, когда нужный пункт меню имеет быструю клавишу для вызова. Например, для открытия в браузере ссылки, над которой находится указатель мыши, в новой вкладке на мышь посылается инструкция нажатия правой клавиши, а затем на клавиатуру - инструкция нажатия клавиши "t", которой подсвечен пункт меню "Open Link in New Tab" (в данном случае путём подчёркивания символа "T").

Для ещё более стабильного решения нужно получить идентификатор элемента управления, соответствующего нужному пункту меню, если к нему можно достучаться из скрипта по имени элемента управления.
 
Автор
I

Irbis_13

Новичок
Сообщения
8
Репутация
0
Уж если делать топорно, то лучше посылать клавиатуре стрелки и <Enter>, выбрав нужным количеством нажатий нужных стрелок нужный по счёту пункт меню, чем по координатам кликать.
Вот, кстати, да, так действительно надёжнее будет спасибо.
Сообщение автоматически объединено:

нужный пункт меню имеет быструю клавишу для вызова.
Нужный пункт меню не имеет "горячей клавиши" и нет возможности присвоить ему "горячую клавишу".
Сообщение автоматически объединено:

Для ещё более стабильного решения нужно получить идентификатор элемента управления, соответствующего нужному пункту меню, если к нему можно достучаться из скрипта по имени элемента управления.
Screenshot_1.png
Вот такие параметры есть у контекстного меню (если я конечно правильно работаю с Au3Info), из них class никогда не меняется (ну и size наверное можно обеспечить неизменным).
 
Последнее редактирование:

lettterssino

Знающий
Сообщения
109
Репутация
10
Уж если делать топорно, то лучше посылать клавиатуре стрелки и <Enter>, выбрав нужным количеством нажатий нужных стрелок нужный по счёту пункт меню, чем по координатам кликать. Обычно контекстные меню позволяют это делать, можно сначала вручную проверить последовательность нажатия клавиш. Тоже не идеальное решение, но всё же постабильнее, чем по координатам.

Иногда можно сделать ещё проще: в случаях, когда нужный пункт меню имеет быструю клавишу для вызова. Например, для открытия в браузере ссылки, над которой находится указатель мыши, в новой вкладке на мышь посылается инструкция нажатия правой клавиши, а затем на клавиатуру - инструкция нажатия клавиши "t", которой подсвечен пункт меню "Open Link in New Tab" (в данном случае путём подчёркивания символа "T").

Для ещё более стабильного решения нужно получить идентификатор элемента управления, соответствующего нужному пункту меню, если к нему можно достучаться из скрипта по имени элемента управления.
В работе тоже так думал, но бывают случае когда у одного и того же приложения список фильтрован иначе.
 

Oki

Продвинутый
Сообщения
452
Репутация
62
В работе тоже так думал, но бывают случае когда у одного и того же приложения список фильтрован иначе.
При написании моего комментария эта мысль у меня в голове тоже была, но не повлияла на высказанное мнение по той причине, что в сравнении с кликом по координатам такой путь всё равно в целом обычно надёжнее последнего.
 

lettterssino

Знающий
Сообщения
109
Репутация
10
При написании моего комментария эта мысль у меня в голове тоже была, но не повлияла на высказанное мнение по той причине, что в сравнении с кликом по координатам такой путь всё равно в целом обычно надёжнее последнего.
Ну всё же не всегда горячие клавиши это хорошо, это надо учесть ту же самую раскладку иначе не будет эффекта и тд.
 
Верх