在 AutoIT 中使用 AutomationID 单击按钮

Click buttons using AutomationID in AutoIT

我正在使用 AutoIT 自动化 VB6 应用程序并遇到了一些问题。

该应用程序有一个 'Toolboxes' window,其中包含一个 SSTab 控件,其中包含 6 行中的 18 个选项卡。 ThunderRT6CommandButton class 有 100 多个实例。我的 AutoIT 脚本应该与特定按钮交互,到目前为止我一直在使用 ControlClick:

ControlClick($sToolboxes, '', '[CLASS:ThunderRT6CommandButton; INSTANCE:81]')

问题是当我切换到不同的选项卡并关闭工具箱时 window 应用程序会记住打开的选项卡。这意味着下次我打开工具箱 window 时,选项卡将以不同的顺序启动,并且按钮的所有实例编号都已更改。 我什至无法调用 ControlClick 并指定要单击的按钮的文本,因为它不是唯一的;大约 20 个按钮被简单地标记为 'Apply'.

使用 Inspect.exe 我注意到每个按钮都有一个唯一的 AutomationID 即使在关闭和重新打开工具箱 window 之后也是如此洗牌。

有什么方法可以让我在 AutoIT 中使用按钮的 AutomationID 单击按钮?

我能想到的唯一其他修复方法是让 AutoIT 脚本自行启动应用程序,以便每次运行脚本时工具箱的顺序相同

AutoIT Window 信息工具显示 AutomationID,但称其为 "ID":

我更改了我的脚本以包含 ID:## 而不是实例编号并且它有效:

ControlClick($sToolboxes, '', '[CLASS:ThunderRT6CommandButton; ID:245]')