2016-09-22 2 views
9

나는이 방법에게 창을 검색 할 필요가 억제는 (관리)하는 경우 마이크로 소프트 UI 자동화 프레임 워크는 윈도우의 AutomationId 값을 주어진 AutomationElement 유형을 인스턴스화하는 몇 가지 방법을 제공합니다 .NET에 알고 싶습니다 창 핸들 또는 다른 종류의 식별자로. 내 목적을 이해하기 위해 VB.NET으로 작성AutomationId 값이 주어진 AutomationElement 유형을 인스턴스화 할 수 있습니까?

의사 예 :

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

가장 좋은 것은 [this] (https://msdn.microsoft.com/en-us/library/aa349646(v=vs.110) .aspx)입니다. 그렇지 않으면 자신의 클래스를 구성하고 (가능하다면) 'AutomationId' 속성을 섀도우/오버라이드한다고 말할 수 있습니다. 그런 다음 해당 설정자가 실행될 때마다 전역, 공유 목록/사전에 "창"/ "제어"를 저장합니다. –

+0

@Visual Vincent 감사합니다. "해결책"은 검색 방법이며, 비싼 찾기 알고리즘 인 요소를 검색하려면 AutomationElement가 필요합니다. 나는 모든 것을 피하기 위해보다 "직접적인"방법이 존재하는지 알고 싶습니다. – ElektroStudios

답변

3

음, 아니. 모든 자동화 속성은 요소의 속성입니다. 자동화 요소는 반드시 HWND에 해당하는 것은 아닙니다 (모든 HWND에는 자동화 요소가 있지만, 특히 현대 UI 프레임 워크에서는 HWND가있는 자동화 요소가 거의 없습니다). 따라서 트리 워크가 필요합니다. 또한 UI 자동화에 대한 좋은 점은 응용 프로그램이 아닌 공급자 측에서 이 발생하여 교차 프로세스 호출 수가 감소한다는 것입니다.