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

проверить, поддерживает ли элемент шаблон значений (очевидно, он поддерживает...), и это:

установить текст в текстовое поле / текстовое поле с помощью инфраструктуры автоматизации и получить событие изменения

Заранее спасибо и извините за мой английский.

0 ответов

Другие вопросы по тегам