다음을 통해 공유


TextPattern 및 포함 개체 개요

참고 항목

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

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

UI 자동화에서 포함된 개체란 예를 들어 이미지, 하이퍼링크, 테이블 또는 Microsoft Excel 스프레드시트나 Microsoft Windows Media 파일 등의 문서 형식과 같이 텍스트가 아닌 범위를 가진 요소입니다. 이는 요소가 한 애플리케이션에서 만들어져 다른 애플리케이션 내에서 포함 또는 연결되는 표준 정의와 다릅니다. UI 자동화에서는 개체를 원래 애플리케이션 내에서 편집할 수 있는지 여부가 중요하지 않습니다.

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

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

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

이전 예의 콘텐츠 보기 이전 텍스트 컨테이너의 일부를 보여 주는 콘텐츠 뷰의 예

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. 범위가 요청된 TextUnit 경계 수만큼 DocumentRange 내에서 앞이나 뒤로 이동합니다.

  4. 그런 다음, 요청된 TextUnit 경계 하나만큼 End 엔드포인트를 이동하여 중복 제거 범위 상태이던 범위가 확장됩니다.

Move & ExpandToEnclosingUnit으로 범위 조정 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 를 반환합니다.
RangeFromChild 여기서 AutomationElement 는 이전 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 문자열 "The is embedded in text"를 반환합니다. 이미지에 연결된 대체 텍스트는 텍스트 스트림에 포함된다고 기대할 수 없습니다.
GetEnclosingElement 텍스트 범위를 포함하는 가장 안쪽의 AutomationElement 를 반환합니다. 이 예제에서는 텍스트 공급자 자체를 나타내는 AutomationElement 입니다.
GetChildren 이미지 컨트롤을 나타내는 AutomationElement 를 반환합니다.
RangeFromChild 여기서 AutomationElement 는 이전 GetChildren 메서드에서 반환되는 개체입니다. "포함된 이미지 예"를 나타내는 중복 제거 범위를 반환합니다.

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

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

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

테이블

예제에서 사용되는 테이블

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

Z의 이미지
Z

예제 1 - 셀의 내용에서 텍스트 컨테이너 가져오기

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

예제 2 - 셀의 텍스트 콘텐츠 가져오기

호출되는 메서드 결과
GetItem 매개 변수는 (1,1) 테이블 셀의 내용을 나타내는 AutomationElement 를 반환합니다. 이 예제에서 요소는 텍스트 컨트롤입니다.
RangeFromChild 여기서 AutomationElement 는 이전 GetItem 메서드에서 반환되는 개체입니다. "Y"를 반환합니다.

참고 항목