微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不同 PC 上 COM 对象的不同代码行为和不同 LegacyIAccessible 属性

如何解决不同 PC 上 COM 对象的不同代码行为和不同 LegacyIAccessible 属性

我正在测试一些使用 UI 自动化操作另一个 GUI exe 的 c# 控制台应用程序。我在两台安装了相同操作系统(win 2019 数据中心)和其他软件的不同机器上测试了我的程序。问题是:它对其中一个有效,但对另一个无效。

我正在尝试获取 UIAutomationElement“接口”的一些 LegacyIAccessible 属性

这是我的代码示例:

iuiAutomationLegacyIAccessiblePattern pattern = (iuiAutomationLegacyIAccessiblePattern)this.uiAutomation.GetAnyPattern(patternId,interface);
IAccessible accessible = pattern.GetIAccessible();

在一台机器上,“accessible”不为空,当我悬停在它上面时,Inspect.exe 会显示“接口”对象的这些属性

LegacyIAccessible.ChildId:  0
LegacyIAccessible.DefaultAction:    "Press"
LegacyIAccessible.Description:  "Color [Red]"
LegacyIAccessible.Help: ""
LegacyIAccessible.KeyboardShortcut: ""
LegacyIAccessible.Name: "Debug"
LegacyIAccessible.Role: menu item (0xC)
LegacyIAccessible.State:    focusable (0x100000)

在另一台机器上,“accessible”为空,Inspect.exe 显示

LegacyIAccessible.ChildId:  0
LegacyIAccessible.DefaultAction:    "Press"
LegacyIAccessible.Description:  ""
LegacyIAccessible.Help: ""
LegacyIAccessible.KeyboardShortcut: ""
LegacyIAccessible.Name: "Debug"
LegacyIAccessible.Role: push button (0x2B)
LegacyIAccessible.State:    collapsed,focusable (0x100400)
LegacyIAccessible.Value:    ""

在两次检查中,都显示了“界面”对象 IsLegacyIAccessiblePatternAvailable: 真 但他们表现出不同的角色。

因此,我无法在其中一台计算机上获得“颜色”。

自动化行为不同的原因可能是什么?就像我说的,这两种环境几乎相同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。