1 (изменено: stokber, 2022-10-16 20:29:21)

Тема: AHK: ControlClick и панель кнопок под одним ClassNN

В программе имеет место быть панель из нескольких кнопок. Это горизонтальная панель в один ряд. Вся панель определяется как один ClassNN, а именно ToolbarWindow325. Панель состоит из сорока с лишним элементов. Задача: сделать клик по одной из этих кнопок без ориентира на ее координаты (x, y).
Программа AhkSpy фиксирует между этими кнопками следующие различия:
1. В строке ( Accessible ) :
Type:  Child  ▪  Id:  30 
Собственно 30 - это номер расположения этого элемента начиная с самого первого левого.
2. В строке ( Name ) :
Код
Это также текст, который появляется во всплывающей подсказке при наведении на требуемую кнопку в исследуемой программе (В моём случае это - FBE}.
Экспериментировал с общепринятым

ControlClick, ToolbarWindow325 , ahk_class FictionBookEditorFrame

пытаясь куда-нибудь воткнуть этот злополучный Id:  30. Конечно безрезультатно.
Никаких пояснений и примеров для подобных ситуаций нагуглить не удалось.
Прошу помощи. Заранее благодарен.

2

Re: AHK: ControlClick и панель кнопок под одним ClassNN

stokber пишет:

1. В строке ( Accessible ) :
Type:  Child  ▪  Id:  30

Чтобы воспользоваться этой информацией, нужно иметь некоторый опыт работы с IAccessible интерфейсом. Обычно для этого используют библиотеку Acc.ahk. Ищите примеры на нашем и англоязычном форуме.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: ControlClick и панель кнопок под одним ClassNN

Спасибо за наводку. Будем пробовать разобраться. У меня ещё были вопросы по другим пунктам из AhkSpy, а конкретно о (Name) и (State: ...), но так понял, что это всё относится к Accessible.

4

Re: AHK: ControlClick и панель кнопок под одним ClassNN

Да.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: ControlClick и панель кнопок под одним ClassNN

stokber пишет:

Экспериментировал с общепринятым

В AhkSpy есть тест ControlClick, он в отличие от вашего примера посылает клик в координаты. Если работает, то вычислить координаты нужной по порядку кнопки не сложно.
ControlClick часто не работает с неактивным окном и сам неактивирует его. Для этого при активности нужного окна надо кликнуть по кнопке ControlClick в AhkSpy с зажатым Shift.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

6

Re: AHK: ControlClick и панель кнопок под одним ClassNN

serzh82saratov пишет:

кликнуть по кнопке ControlClick

Не вижу почему-то такой. Может быть имеется ввиду кнопка Нажать  ▪   Execute? Нажимал с Shift-ом. Ничего не происходит.

7

Re: AHK: ControlClick и панель кнопок под одним ClassNN

https://i.imgur.com/h20jInx.png

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

8

Re: AHK: ControlClick и панель кнопок под одним ClassNN

Спасибо, теперь понял. Нажал, но безрезультатно. А что должно произойти?

9

Re: AHK: ControlClick и панель кнопок под одним ClassNN

stokber пишет:

А что должно произойти?

stokber пишет:

Задача: сделать клик по одной из этих кнопок

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

10

Re: AHK: ControlClick и панель кнопок под одним ClassNN

Если Execute и ControlClick не работают, значит просто Click.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

11

Re: AHK: ControlClick и панель кнопок под одним ClassNN

Сработало. Мне просто ещё нужно было выделить в испытуемой программе фрагмент текста, без этого кнопка не реагирует.

12 (изменено: stokber, 2022-10-30 21:00:38)

Re: AHK: ControlClick и панель кнопок под одним ClassNN

serzh82saratov пишет:

В AhkSpy есть тест ControlClick, он в отличие от вашего примера посылает клик в координаты. Если работает, то вычислить координаты нужной по порядку кнопки не сложно.

И как можно вычислить координаты этой кнопки?  Прогуглил Acc в надежде на благоприятный исход. Использовал patch из Accessible AhkSpy.

oAcc := Acc_Get("Object", "4.1.4.3.4", 0, "ahk_id" WinActive("A")) ; {
oRect := Acc_Location(oAcc)
CoordMode, Mouse
MsgBox % "x: " oRect.x "`ny: " oRect.y "`nw: " oRect.w "`nh: " oRect.h

Это, естественно, патч всей панели с группой кнопок. Номер по порядку кнопки - 30. На это указывает также и AccViewer. Что можно сделать дальше?

13

Re: AHK: ControlClick и панель кнопок под одним ClassNN

stokber пишет:

И как можно вычислить координаты этой кнопки?

Относительно  контрола, есть его ширина (в случае если он вертикальный), кнопки квадратные, ширину на 30 умножьте.

Также есть готовый параметр "Mouse relative control".

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

14

Re: AHK: ControlClick и панель кнопок под одним ClassNN

https://t.me/AhkSpy_Group
В телеге вопрос задайте, там удобнее картинки скидывать.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

15

Re: AHK: ControlClick и панель кнопок под одним ClassNN

serzh82saratov пишет:

Относительно  контрола, есть его ширина (в случае если он вертикальный), кнопки квадратные, ширину на 30 умножьте.

Спасибо за отклик!
Тоже думал об этом. Но там кнопки разной ширины. Вернее, кроме кнопок есть ещё узкие разделители между некоторыми из них. Они тоже под номерами.
Ещё мысль была по Name искать координаты. Не нашел какая функция при этом используется. Но думаю в результате всё упрётся в те же координаты всей панели.

16

Re: AHK: ControlClick и панель кнопок под одним ClassNN

Ничего особо не понял.

Также есть готовый параметр "Mouse relative control".

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

17 (изменено: stokber, 2022-10-30 23:22:18)

Re: AHK: ControlClick и панель кнопок под одним ClassNN

Ну, там просто на 30 умножить к точным координатам не приведёт.  Кроме кнопок ещё имеются разделители между некоторыми кнопками, тоже являющиеся отдельными элементами под своими id-номерами. Это тоже контролы. Визуально это такие неширокие полоски между кнопками, несущие чисто декоративную функцию. Но в принципе и их ширину можно рассчитать и всё учесть.
А что за зверь такой "Mouse relative control"? В справке по ahk не нашёл, в сети что-то есть, но пока ещё не вник.

18

Re: AHK: ControlClick и панель кнопок под одним ClassNN

stokber пишет:

А что за зверь такой "Mouse relative control"?

Это в AhkSpy.
Ну там же одинаковая координата всегда, это я загнался про вычисление.
Относительно контрола. Не надо вычислять ничего - это новые вводные. )

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

19

Re: AHK: ControlClick и панель кнопок под одним ClassNN

https://i.imgur.com/4ySWJ2Y.png

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

20

Re: AHK: ControlClick и панель кнопок под одним ClassNN

А, вижу такой пункт. Ну, там еще не совсем постоянная координата. Как оказалось уже после первого моего поста в этой теме - это настраиваемая панель кнопок, где пользователь может какие-то кнопки убрать, а также убрать или добавить разделители. Хотелось бы более независимый метод определения, поэтому и интересовался пунктом Name (у меня - Код) из AhkSpy.

serzh82saratov пишет:

Не надо вычислять ничего - это новые вводные.

А тут я уже не понял, и что там на счет "Mouse relative control"?

21

Re: AHK: ControlClick и панель кнопок под одним ClassNN

stokber пишет:

Собственно 30 - это номер расположения этого элемента начиная с самого первого левого.

stokber пишет:

это настраиваемая панель кнопок, где пользователь может какие-то кнопки убрать

. ((

Изучайте Асс, или через поиск картинки.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.34.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

22

Re: AHK: ControlClick и панель кнопок под одним ClassNN

Изучаем. Благодарю.