Microsoft UI Automation: ValuePattern не поддерживается для RICHEDIT60W
Я занимаюсь разработкой приложения автоматизации пользовательского интерфейса для Microsoft Word, и мне нужно перехватить в текстовом поле RichEdit событие "AutoAddAutomationPropertyChanged" через определенный обработчик с помощью метода "AddAutomationPropertyChangedEventHandler". У меня есть элемент AutomationElement, представляющий элемент управления RichEdit, и я добавил событие в свой класс:
Automation.AddAutomationPropertyChangedEventHandler(element, TreeScope.Subtree, OnPropertyChanged, new[] { ValuePattern.ValueProperty });
и мой обработчик:
private void OnPropertyChanged(object sender, AutomationPropertyChangedEventArgs e)
{
if (e.Property == ValuePattern.ValueProperty)
{
...code...
}
}
Проблема заключается в том, что если я выполняю этот код в RichEdit типа "RichEdit20W", он работает и перехватывает событие, входя в метод-обработчик OnPropertyChanged. Моя проблема состоит в том, чтобы выполнить этот код на текстовом элементе управления RICHED60W: кажется, что событие никогда не вызывается из текстового элемента управления Richedit60w, поэтому я не могу поймать его для выполнения кода моего обработчика.
Например, в Microsoft Word 2010, если я выполняю этот код с помощью элемента управления RichEdit окна "Найти и заменить", он работает и выполняется код обработчика. Наоборот, если я выполняю код с помощью текстового элемента управления RichEdit слева от главного окна приложения Word, которое представляет собой RICHEDIT60W (панель "Навигация", открытая с помощью сочетания клавиш CTRL + F, и я использовал инструмент Inspect.exe, чтобы проверить его), он не работает и код обработчика никогда не выполняется. Я очень сбит с толку, потому что, если я пытаюсь перехватить событие с измененным значением свойства на RICHEDIT60W с помощью инструмента Accevent.exe, поставляемого с Windows SDK, инструмент работает правильно и отображает информацию о событии.
Я перепробовал все, даже с параметрами TreeScope.Element и TreeScope.Children, но ничего не происходит.
Я следую за этим: http://msdn.microsoft.com/en-us/library/system.windows.automation.valuepattern.valueproperty(v=vs.110).aspx
проверить, поддерживает ли элемент шаблон значений (очевидно, он поддерживает...), и это:
Заранее спасибо и извините за мой английский.