【发布时间】:2015-12-06 20:59:33
【问题描述】:
在 C# Winforms 应用程序中自动化 Infragistics UltraTree 控件时,我发现 UltraTree 实现了 AccessibleObject 模型 (MSAA)。通过将从 spy++ 抓取的 hwnd 放入
中,我能够成功抓取 IAccessible 接口IAccessible* accessibleObject;
AccessibleObjectFromWindow(hwnd, OBJID_CLIENT, IID_IAccessible, (void**)&accessibleObj);
问题是当我现在打电话时
long childCount;
accessibleObj->get_accChildCount(&childCount);
我得到的结果是零。通过查看 UltraTree 源代码,我注意到它的子计数实现不应返回零(通过使用 windbg 检查内部代码中使用的字段进行验证)。所有其他 MSAA 功能似乎都正常工作(例如“accLocation”)。
我很困惑为什么会这样。我也尝试过使用“IEnumVARIANT”,但是即使树在“get_accChildCount”使用的集合中有 25 个项目,同样也没有发现任何子项。由于机器没有声卡,我还没有尝试查看 Microsoft Narrator 是否能够识别孩子,但希望尽快进行设置尝试。我的猜测是讲述人会找到孩子们,我错过了一些奇怪的技巧。
【问题讨论】:
标签: c++ winforms infragistics microsoft-ui-automation msaa