1

特定のタイプのアクションを取得するにはどうすればよいか疑問に思っていましたAutomationElementか? を使用してAutomationElementに関するすべての詳細を持っています

AutomationFocusChangedEventHandler handler = new AutomationFocusChangedEventHandler(OnFocusChange);
Automation.AddAutomationFocusChangedEventHandler(handler);

そして、フォーカスされた要素に関するすべての情報を取得できます。

しかし、たとえばボタンがクリックされたかどうか、編集入力が編集されたかどうか、またはウィンドウが閉じられたかどうかなどを知る必要があります。

この種の情報は AccEvent で提供され、プロパティ、フォーカス、オートメーションのイベントをそれぞれ詳細に区別することを知っています。

基本的に、要素に対して実行されたアクションを記録してから繰り返したいと思います。

C# を使用して取得するにはどうすればよいですか?

ところで。UIAutomation には COMwrapper クラスを使用します。

4

1 に答える 1

1

フォーカス変更イベントから要素を取得したら、ボタン クリック (呼び出し)、編集 (プロパティ)、およびクローズのハンドラーを追加できます。方法は次のとおりです。

private void OnFocusChange(object sender, AutomationFocusChangedEventArgs e)
{
    var element = sender as AutomationElement;
    if (element == null) return;
    Automation.AddAutomationPropertyChangedEventHandler(element, Treecope.Element, OnChange, AutomationElement.NameProperty, ...);

    if (element.GetSupportedPatterns().Any(p => p.Equals(InvokePattern.Pattern)))
        Automation.AddAutomationEventHandler(InvokePattern.InvokedEvent, element, TreeScope.Element, OnClicked);

    var window = element.Current.ControlType.Equals(ControlType.Window) ? element : GetElementWindow(element);
        Automation.AddAutomationEventHandler(WindowPattern.WindowClosedEvent, window, TreeScope.Element, OnClosed);
}

さて、サブスクライブするプロパティの問題は、要素が送信するイベントによって異なります。これは、inspect、UISpy、UIAVerify、AccEvent などのスパイ ツールで表示できます。

于 2015-09-11T05:16:38.700 に答える