我正致力于自动化Windows应用程序。我正在使用teststack白色框架。我遇到了问题。这个程序有一个窗口'我内心无法看到的物体。白色显示其内部没有控件。在UI自动化模式下运行时,Inspect.exe在其中没有显示任何控件。如果我将Inspect切换到MSAA,它会看到里面的控件就好了。反正我是否使用C#中的MSAA来处理这些控件?
答案 0 :(得分:4)
如果您可以识别所需的MSAA功能,可以使用P / Invoke从C#中调用它们。以下是关于使用MSAA执行此操作的示例文章:
http://www.codeproject.com/Articles/38906/UI-Automation-Using-Microsoft-Active-Accessibility
此外,pinvoke.net可用于识别IAccessible(MSAA)功能:
http://www.pinvoke.net/search.aspx?search=IAccessible&namespace=[All]
以下是这些问题的另一个答案:
最后,作为P / Invoke的替代方法,您也可以使用Tlbimp.exe为oleacc.dll创建包装程序集,并通过它访问MSAA函数。我不确定这是否适用于MSAA,但值得一试。
作为一个例子,这里是我编写的一个C#hello world示例,它展示了如何使用来自C#的UI Automation COM接口,使用使用Tlbimp.exe创建的程序集:
正如该文件中的注释所述,从Windows 7.1 SDK开始,使用Tlbimp.exe生成程序集如下所示:
"%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\bin\tlbimp.exe" %windir%\system32\UIAutomationCore.dll /out:interop.UIAutomationCore.dll