c – MSAA UI自动化get_accChildCount在Winforms中为Infragistics UltraTree错误地返回0
作者:互联网
在C#Winforms应用程序中自动化Infragistics UltraTree控件时,我发现UltraTree实现了AccessibleObject模型(MSAA).通过将hwnd从间谍中抓出来,我能够成功地获取IAccessible接口
IAccessible* accessibleObject;
AccessibleObjectFromWindow(hwnd, OBJID_CLIENT, IID_IAccessible, (void**)&accessibleObj);
问题是,我现在打电话
long childCount;
accessibleObj->get_accChildCount(&childCount);
我得到的结果是零.通过查看UltraTree源代码,我注意到它的子计数实现不应该返回零(通过使用windbg来检查内部代码中使用的字段进行验证).所有其他MSAA功能似乎都正常工作(例如’accLocation’).
我很难过为什么会这样.我也试过使用’IEnumVARIANT’,但是同样没有孩子,即使树中有25个项目’get_accChildCount’使用了.我还没有试过看看微软讲述者是否已经能够识别这些孩子,因为这台机器没有声卡,但是希望能够尽快设置好.我的猜测是讲述者会找到孩子们,并且我会遗漏一些奇怪的伎俩.
解决方法:
我对infragistics控件有同样的问题.
如果您能够更改被测试的应用程序,您有2个选项,否则我认为没有解决方案而且您被困.
a)覆盖UltraTree的AutomationPeer实现,因此只需创建自己的CustomizedUltraTree.这是关于此主题Docu的有用链接
b)联系infragistics客户支持,对我来说这只是一些版本问题而且非常快速和自信.
标签:infragistics,c,winforms,microsoft-ui-automation,msaa 来源: https://codeday.me/bug/20191003/1849220.html