establezca texto en el campo de texto / cuadro de texto con el marco de automatización y obtenga el evento de cambio

Quiero establecer un texto en un campo de texto / elemento de cuadro de texto con MircosoftAutomatización de la interfaz de usuario marco, que significa en unaAutomationElement desde elControlType.Edit oControlType.Document.

En este momento estoy usando elTextPattern para obtener el texto de uno de estosAutomationElements:

TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();

Pero ahora quiero poner un nuevo texto en elAutomationElement. No puedo encontrar un método para esto en elTextPattern clase. Así que estoy tratando de usar elValuePattern pero no estoy seguro si esa es la forma correcta de hacerlo:

ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);

¿Hay alguna otra manera de establecer el valor del texto?

Otra pregunta es cómo puedo obtener un evento cuando el texto se cambió en unaEdit / Document ¿elemento? Traté de usar elTextChangedEvent pero no recibo ningún evento al cambiar el texto:

AutomationEventHandler ehTextChanged = new AutomationEventHandler(text_event);
Automation.AddAutomationEventHandler(TextPattern.TextChangedEvent, element, TreeScope.Element, ehTextChanged);

private void text_event(object sender, AutomationEventArgs e)
{
    Console.WriteLine("Text changed");
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta