Тема: AHK: Acc - работа с дочерними элементами
yalanne приводил пример, как узнать accValue и accName элемента под курсором.
Возможно ли узнать количество дочерних элементов окна и их пути(хендлы)?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
yalanne приводил пример, как узнать accValue и accName элемента под курсором.
Возможно ли узнать количество дочерних элементов окна и их пути(хендлы)?
stealzy, accName и accValue — это свойства элемента, они между собой никак не связаны. Это просто строчные значения без всякого указателя на сам объект, так что напрямую никак. Можно перебрать все дочерние элементы у родительского, и выяснить их Name и Value, но нужно учитывать, что они могут быть одинаковыми у нескольких элементов.
Пример для калькулятора, считывающий результат (требует Acc.ahk):
#Include Acc.ahk
if !WinExist("ahk_class CalcFrame ahk_exe calc.exe") {
Run calc.exe
Sleep 500
}
ControlGet, hWnd, Hwnd,, Static4, ahk_class CalcFrame ahk_exe calc.exe ; Запись в hWnd контрола, содержащего "Результат" калькулятора
MsgBox,,% Acc_Get("Name", ChildPath := 4,, "ahk_id" hWnd) , % Acc_Get("Value", ChildPath := 4,, "ahk_id" hWnd)
ChildPath получен с помощью AccViewer.
Показывает относительный путь! Несмотря на то, что целился в рамку окна нужной мне программы, оказалось что спереди нужно добавить "2.", т.е. AccViewer показывал ChildPath := "3.1.1.1.1.1", а нужно было ChildPath := "2.3.1.1.1.1.1". Если целиться внутри окна, можете получить и "1.1.1".
Если копируете путь из AccViewer, заменяйте запятые в пути на точки!
Количество дочерних элементов в корне и у 2-го элемента в корне:
Acc := Acc_ObjectFromWindow(hWnd)
RootChildElementNumber := Acc_Children(Acc).MaxIndex()
2elChildElementNumber := Acc_Children(Acc_Children(Acc)[2]).MaxIndex()
Неплохо бы написать функцию, по наведению курсора получающую полный путь.
А если допустим есть Acc кнопка, ее можно нажать?
А если допустим есть Acc кнопка, ее можно нажать?
accDoDefaultAction()?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться