В C# или VB.Net, как я могу использовать Microsoft UI Automation для извлечения текста любого элемента управления, содержащего текст?
Я изучал документы MSDN, но не понял.
Получение текстовых атрибутов с помощью автоматизации пользовательского интерфейса
Затем, например, с помощью приведенного ниже кода я пытаюсь получить текст строки заголовка окна, указав hwnd этого окна, но я точно не знаю, как следовать строке заголовка, чтобы найти дочерний элемент управления (метка?) который действительно содержит текст.
Imports System.Windows.Automation
Imports System.Windows.Automation.Text
.
Dim hwnd As IntPtr = Process.GetProcessesByName("notepad").First.MainWindowHandle
Dim targetApp As AutomationElement = AutomationElement.FromHandle(hwnd)
' The control type we're looking for; in this case 'TitleBar'
Dim cond1 As New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.TitleBar)
Dim targetTextElement As AutomationElement =
targetApp.FindFirst(TreeScope.Descendants, cond1)
Debug.WriteLine(targetTextElement Is Nothing)
В приведенном выше примере я пытаюсь сделать это с заголовком, но я хотел бы сделать это с любым другим элементом управления, содержащим текст... например, с заголовком.
PS: я знаю о P/Invoking GetWindowText
API.