Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编码UI和MSAA层次结构_C++_Treeview_Accessibility_Coded Ui Tests - Fatal编程技术网

C++ 编码UI和MSAA层次结构

C++ 编码UI和MSAA层次结构,c++,treeview,accessibility,coded-ui-tests,C++,Treeview,Accessibility,Coded Ui Tests,我正在使用MSAA服务器(Miscrosoft Active Accessibility)打开一个控件,以便使用编码的UI对其进行自动化测试。我使用MSAA是因为代码是针对VS2008的,所以UI自动化不可用 除了在同一窗口上有两个控件元素的情况外,它工作正常。问题在于生成的UI映射层次结构。这是错误的,但对于处理一个控件的情况,它可以正常工作 使用MSAA示例时出现的问题在sdk上找到: 因此,当我映射窗口时,我得到了正确的映射,但是当我映射列表中的元素时,该元素是正确的,但没有映射到列表中

我正在使用MSAA服务器(Miscrosoft Active Accessibility)打开一个控件,以便使用编码的UI对其进行自动化测试。我使用MSAA是因为代码是针对VS2008的,所以UI自动化不可用

除了在同一窗口上有两个控件元素的情况外,它工作正常。问题在于生成的UI映射层次结构。这是错误的,但对于处理一个控件的情况,它可以正常工作

使用MSAA示例时出现的问题在sdk上找到:

因此,当我映射窗口时,我得到了正确的映射,但是当我映射列表中的元素时,该元素是正确的,但没有映射到列表中:

我的应用程序中有完全相同的问题


谢谢

我已经修复了在创建新对象时使用静态
std::map
获取标识符的问题

因此,当创建一个新对象时,我用当前窗口标题查询静态结构(我知道这是一个危险的操作,但它可以工作),然后得到一个新的标识符

我在调用MSAA方法时返回标识符


我将编码用户界面的值搜索属性添加到该属性中,它按照我的经验工作。

我没有添加并回答Windows消息:WM_GETOBJECT,而是覆盖了类CWnd中的可访问方法

问题是get CWnd::get_accName(VARIANT varID,BSTR*pszName)返回的名称在窗口的所有子项中都是相同的,所以我在类中稍微修改了这个方法,以添加一些额外的信息来标识我的元素


而且很有效。

你读过吗?我不知道这会有多大帮助。我不是一个软件开发人员,但是如果你安装了Windows SDK,你应该有一个名为Inspect32的程序,这可能会有所帮助。您好,我已经阅读了Mozilla MSAA可访问性,并且使用了Inspect32。它显示了正确的层次结构,但我无法在编码的UI中获得正确的层次结构