다음을 통해 공유


TextPattern 및 포함된 개체 개요

비고

이 설명서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI 자동화 클래스를 사용하려는 .NET Framework 개발자를 위한 것입니다. UI 자동화에 대한 최신 정보는 Windows Automation API: UI 자동화참조하세요.

이 개요에서는 Microsoft UI Automation이 텍스트 문서 또는 컨테이너 내에서 포함된 개체 또는 자식 요소를 노출하는 방법을 설명합니다.

UI 자동화에서 포함된 개체는 텍스트가 아닌 경계가 있는 모든 요소입니다. 예를 들어 이미지, 하이퍼링크, 표 또는 문서 유형(예: Microsoft Excel 스프레드시트 또는 Microsoft Windows Media 파일)입니다. 이는 요소가 한 애플리케이션에서 만들어지고 다른 애플리케이션 내에 포함되거나 연결된 표준 정의와 다릅니다. 원래 애플리케이션 내에서 개체를 편집할 수 있는지 여부는 UI 자동화의 컨텍스트에서 관련이 없습니다.

포함된 개체 및 UI 자동화 트리

포함된 개체는 UI 자동화 트리의 컨트롤 뷰 내에서 개별 요소로 처리됩니다. 텍스트 컨테이너의 자식 요소로 노출되어 UI 자동화의 다른 컨트롤과 동일한 모델을 통해 액세스할 수 있습니다.

텍스트 컨테이너에 포함된 테이블, 이미지 및 하이퍼링크 개체 예시 UIA_TextPattern_Embedded_Objects_Overview_Example1 테이블, 이미지 및 하이퍼링크 포함 개체가 있는 텍스트 컨테이너의 예

이전 예제의 콘텐츠 보기 이전 텍스트 컨테이너의 일부에 대한 콘텐츠 뷰 예제

TextPattern 및 TextPatternRange를 사용하여 포함된 개체 노출

TextPattern와 함께 사용되는 컨트롤 패턴 클래스와 TextPatternRange 클래스는 포함된 개체의 쿼리 및 탐색을 쉽게 하는 메서드와 속성을 노출합니다.

텍스트 컨테이너 및 포함된 개체(예: 하이퍼링크 또는 테이블 셀)의 텍스트 내용(또는 내부 텍스트)은 UI 자동화 트리의 컨트롤 뷰와 콘텐츠 뷰에서 지속적인 단일 텍스트 스트림으로 노출됩니다. 개체 경계는 무시됩니다. UI 자동화 클라이언트가 어떤 방식으로든 암송, 해석 또는 분석 목적으로 텍스트를 검색하는 경우 텍스트 내용이 있는 테이블이나 기타 포함된 개체와 같은 특수한 경우 텍스트 범위를 확인해야 합니다. 이 작업은 포함된 각 개체에 대해 GetChildren를 호출하여 AutomationElement를 얻은 다음 각 요소에 대해 RangeFromChild를 호출하여 텍스트 범위를 가져옴으로써 수행할 수 있습니다. 이 과정은 모든 텍스트 내용이 검색될 때까지 반복적으로 수행됩니다.

포함된 개체에 의해 확장되는 텍스트 범위입니다. 포함된 개체 및 범위 범위가 있는 텍스트 스트림의 예

텍스트 범위의 콘텐츠를 탐색해야 할 때 Move 메서드가 성공적으로 실행되도록 하기 위해 백그라운드에서 여러 단계가 수행됩니다.

  1. 텍스트 범위가 정규화됩니다. 즉, 텍스트 범위가 Start 엔드포인트에서 단일화된 범위로 축소되어 End 엔드포인트가 불필요하게 됩니다. 이 단계는 텍스트 범위가 경계에 걸쳐 TextUnit 있는 경우(예 {The URL https://www.microsoft.com is embedded in text : "{" 및 "}"가 텍스트 범위 엔드포인트인 경우)에서 모호성을 제거하는 데 필요합니다.

  2. 결과 범위는 요청된 DocumentRange 경계의 시작 부분으로 TextUnit 뒤로 이동합니다.

  3. DocumentRange에서 요청된 수의 TextUnit 경계를 따라 범위를 앞으로 또는 뒤로 이동합니다.

  4. 요청된 End 경계에 따라 TextUnit 엔드포인트를 이동하여 퇴행성 범위 상태에서 범위를 확장합니다.

Move & ExpandToEnclosingUnit UIA_TextPattern_MoveAndExpand_Examples에 따른 범위 조정 Move() 및 ExpandToEnclosingUnit()에 대해 텍스트 범위를 조정하는 방법의 예

일반적인 시나리오

다음 섹션에서는 포함된 개체를 포함하는 가장 일반적인 시나리오의 예를 제공합니다.

표시된 예제의 범례:

{ = Start

} = End

예제 1 - 포함된 텍스트 하이퍼링크가 포함된 텍스트 범위

{The URL https://www.microsoft.com is embedded in text}.

호출되는 메서드 결과
GetText The URL https://www.microsoft.com is embedded in text 문자열을 반환합니다.
GetEnclosingElement 텍스트 범위를 묶는 가장 AutomationElement 안쪽을 반환합니다. 이 경우 AutomationElement 텍스트 공급자 자체를 나타내는 값입니다.
GetChildren AutomationElement 하이퍼링크 컨트롤을 나타내는 값을 반환합니다.
RangeFromChildAutomationElement 이전 GetChildren 메서드에서 반환된 개체입니다. 를 나타내는 범위를 반환합니다 https://www.microsoft.com.

예제 2 - 포함된 텍스트 하이퍼링크에 부분적으로 걸쳐 있는 텍스트 범위

URL https://{[www]} 이 텍스트에 포함됩니다.

호출되는 메서드 결과
GetText 문자열 "www"를 반환합니다.
GetEnclosingElement 텍스트 범위를 묶는 가장 AutomationElement 안쪽을 반환합니다. 이 경우 하이퍼링크 컨트롤입니다.
GetChildren 텍스트 범위가 전체 URL 문자열에 걸쳐 있지 않으므로 반환 null 합니다.

예제 3 - 텍스트 컨테이너의 내용에 부분적으로 적용되는 텍스트 범위입니다. 텍스트 컨테이너에는 텍스트 범위의 일부가 아닌 포함된 텍스트 하이퍼링크가 있습니다.

{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.

호출되는 메서드 결과
GetText 문자열 "The URL"을 반환합니다.
GetEnclosingElement 텍스트 범위를 묶는 가장 AutomationElement 안쪽을 반환합니다. 이 경우 AutomationElement 텍스트 공급자 자체를 나타내는 값입니다.
Move 매개 변수가 있는 경우(TextUnit.Word, 1). 하이퍼링크의 텍스트는 개별 단어로 구성되므로 텍스트 범위 범위를 "http"로 이동합니다. 이 경우 하이퍼링크는 단일 개체로 처리되지 않습니다.

URL {[http]}이(가) 텍스트에 포함되어 있습니다.

이미지

예제 1 - 포함된 이미지가 포함된 텍스트 범위

{이미지 포함 이미지 예제가 텍스트에 포함되어 있습니다.}

호출되는 메서드 결과
GetText "텍스트에 포함됨" 문자열을 반환합니다. 이미지와 연결된 모든 ALT 텍스트는 텍스트 스트림에 포함될 것으로 예상할 수 없습니다.
GetEnclosingElement 텍스트 범위를 묶는 가장 AutomationElement 안쪽을 반환합니다. 이 경우 AutomationElement 텍스트 공급자 자체를 나타내는 값입니다.
GetChildren AutomationElement 이미지 컨트롤을 나타내는 값을 반환합니다.
RangeFromChildAutomationElement 이전 GetChildren 메서드에서 반환된 개체입니다. "포함된 이미지 예제"를 나타내는 퇴행성 범위를 반환합니다.

예제 2 - 텍스트 컨테이너의 내용에 부분적으로 걸쳐 있는 텍스트 범위입니다. 텍스트 컨테이너에는 텍스트 범위의 일부가 아닌 포함된 이미지가 있습니다.

{이미지} 포함된 이미지 예제 텍스트에 포함됩니다.

호출되는 메서드 결과
GetText 문자열 "The image"를 반환합니다.
GetEnclosingElement 텍스트 범위를 묶는 가장 AutomationElement 안쪽을 반환합니다. 이 경우 AutomationElement 텍스트 공급자 자체를 나타내는 값입니다.
Move 매개 변수가 있는 경우(TextUnit.Word, 1). 텍스트 범위를 "is "로 이동합니다. 텍스트 기반 포함된 개체만 텍스트 스트림의 일부로 간주되므로 이 예제의 이미지는 Move 또는 반환 값(이 경우 1)에 영향을 주지 않습니다.

테이블 / 표

예제에 사용되는 테이블

이미지가 있는 셀 텍스트가 있는 셀
포함된 이미지 예제 X
포함된 이미지 예제 2 Y
포함된 이미지 예제 3

Z용 이미지
Z

예제 1 - 셀 내용에서 텍스트 컨테이너를 가져옵니다.

메서드 호출 결과
GetItem 매개 변수 사용(0,0) AutomationElement 표 셀의 내용을 나타내는 값을 반환합니다. 이 경우 요소는 텍스트 컨트롤입니다.
RangeFromChildAutomationElement 이전 GetItem 메서드에서 반환된 개체입니다. 이미지 포함 이미지 예제를 포함하는 범위를 반환합니다.
GetEnclosingElement이전 메서드에서 반환한 개체의 경우 RangeFromChild AutomationElement 표 셀을 나타내는 값을 반환합니다. 이 경우 요소는 TableItemPattern을 지원하는 텍스트 컨트롤입니다.
GetEnclosingElement이전 메서드에서 반환한 개체의 경우 GetEnclosingElement AutomationElement 테이블을 나타내는 값을 반환합니다.
GetEnclosingElement이전 메서드에서 반환한 개체의 경우 GetEnclosingElement AutomationElement 텍스트 공급자 자체를 나타내는 값을 반환합니다.

예제 2 - 셀의 텍스트 내용을 가져옵니다.

메서드 호출 결과
GetItem 매개 변수가 (1,1)인 경우 AutomationElement 표 셀의 내용을 나타내는 값을 반환합니다. 이 경우 요소는 텍스트 컨트롤입니다.
RangeFromChildAutomationElement 이전 GetItem 메서드에서 반환된 개체입니다. "Y"를 반환합니다.

참고하십시오