26

Re: AHK: Работа с библиотекой Acc Library. Вывод информации

Да, действительно.
А что по вашему hotkey, как не команда?

27 (изменено: stealzy, 2017-12-28 18:14:54)

Re: AHK: Работа с библиотекой Acc Library. Вывод информации

Hotkey конечно команда, имел ввиду ::.

28

Re: AHK: Работа с библиотекой Acc Library. Вывод информации

В общем, разобрался со своим вопросом.

Как обычно, все оказалось не так уж и сложно, стоило только вникнуть в суть. Хотя и там без своих заморочек не обошлось, но куда же без этого)?

Распишу моменты, которые понял, может еще кому пригодится.

Сразу ссылка на Acc.ahk, а то было непросто ее найти.

Для начала, очень полезной оказалась программка Accessible Info Viewer (AIV). С ее помощью находим элемент, который нам нужен, копируем порядок дочерних элементов (к примеру, 4.3.4.1), добавляем в функцию acc_get и все. Дальше делаем с найденным элементом все, что захочется (в пределах возможностей acc, конечно) ).

Как пример, выберем папку в окне проводника:

#include Acc.ahk

WinGet, hWnd, ID, ahk_class CabinetWClass
Acc := Acc_Get("Object", "4.3.4.1.4.1.4.4.4.1.4.2", 0, "ahk_id " hWnd)
Acc.accSelect(9,0)

Кстати, можно поиграться с первым значением accSelect() и выбрать необходимый режим выделения элементов.

А теперь самое интересное: этот метод подходит не для всех программ. К примеру, тот код, который я приводил в своем первом сообщении, действительно оказался нерабочим. Мало того, если исследовать AIV Total Commander, то окажется, что элементы из панелей TMyListBox (папки и файлы) вообще не отображаются в окне AIV. Т.е. таким способом информацию об этих элементах мы не узнаем, а также не сможем с ними взаимодействовать.

И здесь можно применить другой способ:

#include Acc.ahk

ControlGet, hwnd, hwnd, , TMyListBox2, ahk_class TTOTAL_CMD
Acc :=   Acc_ObjectFromWindow(hWnd)
For i, child in Acc_Children(Acc)	
	Acc.accSelect(9,i)

Но, опять-таки, есть своё но: в последней (найденной) версии Acc.ahk (last updated 10/25/2012), в функции Acc_ObjectFromWindow был изменен параметр idObject = 0. И при выполнении код завершается ошибкой. Если изменить его на старое значение idObject = -4, то все выполняется как нужно.

Не буду утверждать, что это универсальный вариант, возможно у кого-то будет работать и с новым значением.

У кого будут какие дополнения - пишите, лишним точно не будет.

P.S.

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