2016-09-22 18 views
9

Chciałbym wiedzieć, w .NET, jeżeli (zarządzanych) Microsoft UI Automation ramy zapewnia pewien sposób instancję AutomationElement typ daną wartość AutomationId okna, tłumiąc w ten sposób konieczność poszukiwania przez okno przez uchwyt okna lub inne rodzaje identyfikatorów.Czy można utworzyć instancję typu AutomationElement z wartością AutomationId?

Pseudo przykład napisany w VB.NET zrozumieć mój cel:

Dim automationId As Integer = 1504 
Dim element As AutomationElement = AutomationElement.FromAutomationId(automationId) 
+0

Najlepsze, co mogłem znaleźć, to [to] (https://msdn.microsoft.com/en-us/library/aa349646 (v = vs.110) .aspx). W przeciwnym razie powiedziałbym, skonstruuj własne klasy (jeśli to możliwe) i cieniowanie/przesłonię właściwość 'AutomationId'. Następnie, gdy wykonywany jest program ustawiający, przechowujesz "okno"/"sterowanie" w globalnej, udostępnionej liście/słowniku. –

+0

@Visual Vincent Thankyou, "problem", jaki widzę, polega na tym, że jest to metodologia wyszukiwania, a także potrzebuje AutomationElement do przeszukiwania swoich elementów, kosztownego algorytmu wyszukiwania. Chciałbym wiedzieć, czy istnieje bardziej "bezpośredni" sposób uniknięcia tego wszystkiego. – ElektroStudios

Odpowiedz

3

No, no. Każda właściwość automatyzacji jest właściwością elementu. Elementy automatyki niekoniecznie odpowiadają HWND (każdy HWND ma element automatyzacji, ale bardzo niewiele elementów automatyzacji ma HWND, szczególnie w nowoczesnych frameworkach UI), a zatem wymagany jest spacer po drzewie. Poza tym, przyjemne w automatyce UI jest to, że spacer po drzewie następuje po stronie dostawcy po stronie dostawcy, a nie w aplikacji, co zmniejsza liczbę wywołań w procesie krzyżowym.

Powiązane problemy