.NET программно находит текстовое поле в элементе управления ActiveX, изменяет его текст и отправляет его.

У меня есть элемент управления ActiveX (Adobe PDF Reader) с панелью инструментов. Этот элемент управления не предоставляет некоторые функции, доступные через панель инструментов (в основном, функцию поиска). Я ищу способ программно найти поле поиска на панели инструментов, ввести текст и вызвать поиск (эквивалент нажатия клавиши Enter в этом поле). Какой самый точный способ сделать это? Нашел решение, основанное на пространстве имен System.Windows.Automation, но не смог заставить его работать правильно.

Спасибо.

Вот код, который я пробовал:

Dim pdfElement As AutomationElement = AutomationElement.FromHandle(AxAcroPDF1.Handle)
Dim condition As New AndCondition(New OrCondition(New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit), New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document), New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Text)), New PropertyCondition(AutomationElement.IsTextPatternAvailableProperty, True))
Dim ac As AutomationElementCollection = pdfElement.FindAll(TreeScope.Descendants, condition)

For Each element As AutomationElement In ac

    If element.Current.Name = "Find" Then
        element.SetFocus()
        SendKeys.Send("TESTSEARCH")
    End If

Next

person SharpAffair    schedule 29.08.2010    source источник
comment
Что ты не мог заставить его делать? Не могли бы вы опубликовать код?   -  person MunkiPhD    schedule 29.08.2010


Ответы (1)


Тот же ответ, что и в предыдущем вопросе. В интерфейсе автоматизации розничной торговли есть метод FindText (). Я уже давал вам ссылку на документацию по API.

person Hans Passant    schedule 29.08.2010
comment
Ганс, спасибо за ответ. При таком типе автоматизации нужно ли будет каждому пользователю моего приложения покупать розничную версию? - person SharpAffair; 29.08.2010
comment
Понятия не имею, каковы условия лицензирования. Наверняка вы найдете это где-нибудь на сайте adobe.com. Вы слишком скупы, чтобы сделать это за вас. - person Hans Passant; 29.08.2010
comment
Я не беспокоюсь об условиях лицензирования прямо сейчас, мне интересно, возможно ли технически использовать интерфейс полной автоматизации, не заставляя каждого пользователя покупать программное обеспечение Adobe. - person SharpAffair; 29.08.2010
comment
Если вы можете распространять розничную среду выполнения, все связано с условиями лицензирования. - person Hans Passant; 29.08.2010
comment
Хммм ... Если это разрешено, какие-нибудь подсказки, какие файлы следует распространять, чтобы это стало возможным? - person SharpAffair; 29.08.2010
comment
Я скачал полную версию Acrobat. На какой COM следует ссылаться вместо AcroPDF.DLL, чтобы использовать ранее недоступные методы (например, FindText)? - person SharpAffair; 29.08.2010