Я автоматизирую приложение VB6 с помощью AutoIT и столкнулся с некоторыми проблемами.
Приложение имеет окно «Наборы инструментов», которое содержит элемент управления SSTab
с 18 вкладками в 6 строках. Существует более 100 экземпляров класса ThunderRT6CommandButton
. Мой скрипт AutoIT должен взаимодействовать с определенными кнопками, и до сих пор я использовал ControlClick
:
ControlClick($sToolboxes, '', '[CLASS:ThunderRT6CommandButton; INSTANCE:81]')
Проблема в том, что когда я переключаюсь на другую вкладку и закрываю окно с наборами инструментов, приложение запоминает, какая вкладка была открыта. Это означает, что в следующий раз, когда я открою окно с наборами инструментов, вкладки будут инициированы в другом порядке, и все номера экземпляров кнопок изменились.
Я даже не могу позвонить ControlClick
и указать текст кнопки, которую нужно нажать, потому что она не уникальна; около 20 кнопок просто помечены «Применить».
Использование Inspect.exe Я заметил, что у каждой кнопки есть уникальный AutomationID
, который является постоянным даже при закрытии и повторном открытии окна инструментов после перетасовывания вкладок.
Можно ли каким-либо образом нажимать кнопки, используя их AutomationID в AutoIT?
Единственное другое исправление, о котором я могу подумать, - заставить скрипт AutoIT запускать само приложение, чтобы при каждом запуске скрипта наборы инструментов были в одном и том же порядке.