【发布时间】:2011-11-10 17:57:50
【问题描述】:
我开发了一个使用 UI 自动化托管库的应用程序。性能非常慢,所以我转而使用带有包装器的 UI 自动化 COM API:http://uiacomwrapper.codeplex.com/。
我遇到了一个用于返回 ValuePattern 的 AutomationElement 不再这样做的问题。当我使用 UISpy 时,我发现它也确实找到了 ValuePattern。这是API,包装器的问题吗?我可以做些什么来让它使用 COM API 工作。 (我真的不想再使用托管库了)
谢谢
【问题讨论】:
-
你能用当前版本的inspect32.exe看到值模式吗? (Inspect 来自 Windows SDK,并根据模式显示 MSAA 或 UIA 元素。它是非托管的,因此将显示与使用 COM 一致的视图,而 UISpy 是托管的。据我所知,托管和托管之间存在一些差异非托管版本。您知道您遇到此问题的 UI 类型(例如 winforms 按钮、常用控件列表视图等)吗?
-
感谢 Brendan 的回复,我正在检索 UltraGrid 中一行的列元素。 (我相信它是基于应用程序的旧版 UltraGrid) 主窗口显示为 Win32,所以我猜它一定是在 .NET 之前创建的。至于检查工具,我不认为它是作为 SDK 的一部分安装的,是否有单独的下载?
-
没关系,我认为是网络安装程序出现了问题。我现在正在尝试从 DVD iso 安装它。
-
BrendanMck,它没有显示值模式,但检查器工具显示的是 LegacyIAccessiblePattern,它的 value 属性恰好是我正在寻找的。奇怪的是,当我运行 GetSupportedPatterns 时它没有返回它......无论如何,请添加您的评论作为答案,以便我接受它。谢谢!
标签: c# winapi user-interface automation