2011-11-10 24 views
0

我開發了一個使用UI自動化管理庫的應用程序。性能非常慢,所以我轉而使用UI Automation COM API與包裝:http://uiacomwrapper.codeplex.com/從UI自動化COM API中檢索模式

我遇到了一個AutomationElements的問題,它用來返回一個ValuePattern不再這樣做。當我使用UISpy時,我發現它也確實找到了ValuePattern。這是API的問題,包裝?有什麼我可以做,使它使用COM API工作。 (我真的不想回去使用託管庫)

感謝

+1

您可以使用當前版本的inspect32.exe查看值模式嗎? (Inspect來自Windows SDK,根據模式顯示MSAA或UIA元素,它是非託管的,因此將顯示與使用COM一致的視圖,同時管理UISpy。從我記憶中,託管和非託管版本你知道什麼類型的用戶界面(例如,winforms按鈕,通用控制列表視圖等),你看到這個問題? – BrendanMcK

+0

感謝您的回覆Brendan,我檢索UltraGrid內的一行的列元素。我認爲它是基於應用程序的UltraGrid的舊版本)主窗口顯示爲Win32,所以我猜它一定是在.NET之前創建的。至於檢查工具,我認爲它不是作爲SDK,有沒有單獨的下載地址? – evasilchenko

+0

沒關係,我認爲這是web安裝程序的代理。我現在試圖從DVD iso安裝它。 – evasilchenko

回答

0

你可以看到使用inspect32.exe的當前版本的數值模式? Inspect來自Windows SDK,並根據模式顯示MSAA或UIA元素。它是非託管的,所以會顯示與使用COM一致的視圖,而UISpy則被管理。從我記憶中來看,託管和非託管版本之間存在一些差異。你知道什麼類型的用戶界面(例如winforms按鈕,通用控件列表視圖等),你看到這個問題?

我的猜測是這裏發生的事情是,UltraGrid可能有一個MSAA/IAccessible實現。 UIA試圖將其轉化爲適當的UIA模式 - 但UIA對其管理版本和非管理版本的支持略有不同 - 特別是託管版本非常慢!在任何情況下,UIA的非託管版本都允許您深入到基礎MSAA實現 - 通過LegacyIAccessiblePattern - 從而可以從那裏獲取值。