Тема: AHK: UIA как получить доступ к диалогу?
Добрый день. У меня есть простенький скрипт который перехватывает пкм при нажатом #
$#RButton::
MouseClick, right ; отрабатываем правоклик для вызова контекстного меню
Sleep, 10
Send, {DOWN 7}{ENTER} ;в контекстном меню спускаемся на 7 позиции ниже и нажимаем Enter чтобы вызвать диалоговое окно
Send, {TAB 4}{DOWN 2}{SPACE} ;в диалоговом окне табом прыгаем до радиокнопки, нажимаем 2 до нужной кнопки и пробелом активируем
Return
Возможности забиндить кнопки в контекстном меню нет, а разработчик любит добавлять/удалять/менять местами элементы и в каждой версии приходится переделывать скрипт.
Решил переделать его "по уму":
$#RButton::
{
MouseClick, right ; посылаю правоклик чтобы открылось контекстное меню
UIA := UIA_Interface()
resolve:= UIA.ElementFromHandle(WinExist("ahk_exe CLO_Standalone_OnlineAuth_x64.exe"))
; проверил что открыта нужная програма и получил UIA
element:= resolve.FindFirstBy("ClassName=QAction AND Name=Split").Click() ;в контекстном меню отлавливаю элемент "Split" и кликаю его, открывается диалоговое окно
И на этом всё, EdiBox в диалоге активен и реагирует на ручное нажатие Tab, однако "Send, {TAB 4}{DOWN 2}{SPACE}" работало в предыдущем варианте но сейчас не срабатывает.
Приаттачиваю скрин диалога и раскрытого UIATreeInspector-а.
Подскажите, куда копать?
upd. После "element:= resolve" добавил MouseMove, 100,100,100 - мышь поползла только когда закрыл открытый диалог. Получается что диалог в другом процессе и оно останавливает выполнение скрипта? Или я что то не так понял?