我有一個程序不是我寫的(封閉源代碼),我需要從看起來像多行文本編輯的文本中讀取文本。UI自動化查找所有(TreeScope.Descendants)沒有達到孫子
該程序在最高級別有15個選項卡的TabControl。在第15個標籤中,有我需要的文本編輯。
AutomationElement aeEntireApplication = AutomationElement.FromHandle(hwd);
AutomationElementCollection aeEditCollection = aeEntireApplication.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.ClassNameProperty,"Edit"));
foreach (AutomationElement aeEdit in aeEditCollection)
{
object patternObj;
if (edit.TryGetCurrentPattern(TextPattern.Pattern, out patternObj))
{
var textPattern = (TextPattern)patternObj;
Console.WriteLine(textPattern.DocumentRange.GetText(-1).TrimEnd('\r')); // often there is an extra '\r' hanging off the end.
}
}
有了這個代碼,它只是將打印文本編輯的內容,以我目前的標籤。是否可以在不必打開該選項卡的情況下訪問選項卡#15的內容?
AutomationElement可用於僅可見元素。很明顯,您需要使用Win32 API來處理隱藏的控件或用於本地應用程序的一些UI自動化工具(如pywinauto或AutoIt)。 –