다음을 통해 공유


TextPattern 및 포함 개체 개요

참고참고

이 문서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI Automation 클래스를 사용하려는 .NET Framework 개발자를 위해 작성되었습니다.UI Automation에 대한 최신 정보는 Windows Automation API: UI Automation을 참조하십시오.

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

UI Automation에서 포함 개체는 텍스트가 아닌 범위를 가진 모든 요소입니다. 이미지, 하이퍼링크, 표 또는 Microsoft Excel 스프레드시트나 Microsoft Windows Media 파일과 같은 문서 종류를 예로 들 수 있습니다. 이러한 개체는 요소가 하나의 응용 프로그램 안에서 만들어지고 서로 포함되거나 연결되는 표준 정의와는 다릅니다. 개체를 원본 응용 프로그램 안에서 편집할 수 있는지 여부는 UI Automation의 컨텍스트에서는 그리 중요하지 않습니다.

이 항목에는 다음 단원이 포함되어 있습니다.

  • 포함 개체 및 UI 자동화 트리
  • TextPattern 및 TextPatternRange를 사용하여 포함 개체 노출
  • 일반적인 시나리오
  • 관련 항목

포함 개체 및 UI 자동화 트리

포함 개체는 UI Automation 트리의 컨트롤 뷰에서 개별 요소로 취급됩니다. 이들은 UI Automation에서 다른 컨트롤과 같은 모델을 통해 액세스할 수 있도록 텍스트 컨테이너의 자식으로 노출됩니다.

 

표, 이미지 및 하이퍼링크 포함 개체가 있는 텍스트 컨테이너 예제

텍스트 컨테이너에서 이미지가 있는 포함된 표

 

앞의 텍스트 컨테이너 부분에 대한 콘텐츠 뷰 예제

이전 예제의 콘텐츠 보기

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

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

텍스트 컨테이너 및 포함된 개체(하이퍼링크 또는 표 셀 등)의 텍스트 내용 또는 내부 텍스트는 UI Automation 트리의 컨트롤 뷰와 콘텐츠 뷰 모두에서 단일 연속 텍스트 스트림으로 노출되며 개체 경계는 무시됩니다. UI 자동화 클라이언트에서 특정한 방식의 낭독, 해석 또는 분석을 위해 텍스트를 검색하는 경우 텍스트 범위가 특수한 경우(텍스트 내용이 있는 표 또는 기타 포함된 개체)에 해당하는지 검사해야 합니다. 이를 수행하려면 GetChildren을 호출하여 각 포함 개체에 대해 AutomationElement를 가져온 다음 RangeFromChild를 호출하여 각 요소의 텍스트 범위를 가져오면 됩니다. 모든 텍스트 콘텐츠가 검색될 때까지 반복합니다.

 

포함 개체 및 그 범위로 구성된 텍스트 스트림 예제

포함된 개체가 차지하는 텍스트 범위

텍스트 범위의 콘텐츠를 이동할 필요가 있는 경우 Move 메서드가 성공적으로 실행되기 위해 내부적으로 여러 단계가 실행됩니다.

  1. 텍스트 범위가 정규화됩니다. 즉, 텍스트 범위가 Start 끝점에서 디제너레이트 범위로 축소되어 End 끝점이 불필요해집니다. 이 단계는 텍스트 범위가 TextUnit 범위에 걸쳐있는 경우 모호성을 제거하기 위해 필요합니다. 예를 들어 "{The U}RL https://www.microsoft.com이 텍스트 안에 포함되어 있습니다."에서는 "{" 및 "}"가 텍스트 범위 끝점입니다.

  2. 그 결과, 범위가 DocumentRange에서 요청된 TextUnit 범위의 시작 부분으로 이동됩니다.

  3. 범위가 요청된 TextUnit 범위 수만큼 DocumentRange에서 앞 또는 뒤로 이동됩니다.

  4. 그러면 요청된 TextUnit 범위만큼 End 끝점을 이동하여 디제너레이트 범위 상태에서 범위가 확장됩니다.

 

Move() 및 ExpandToEnclosingUnit()에 따라 텍스트 범위가 조정되는 방식을 보여 주는 예제

Move & ExpandToEnclosingUnit으로 범위 조정

일반적인 시나리오

다음 단원에서는 포함 개체와 관련된 몇 가지 일반적인 시나리오의 예제를 소개합니다.

예제에 사용되는 범례

{ = Start

} = End

하이퍼링크

예제 1 - 포함 텍스트 하이퍼링크가 들어 있는 텍스트 범위

{URL 이 텍스트 안에 포함되어 있습니다}.  

호출된 메서드

결과

GetText

문자열 "URL https://www.microsoft.com이 텍스트 안에 포함되어 있습니다"를 반환합니다.

GetEnclosingElement

텍스트 범위를 감싸고 있는 가장 안쪽의 AutomationElement를 반환합니다. 이 경우 텍스트 공급자 자체를 나타내는 AutomationElement를 반환합니다.

GetChildren

하이퍼링크 컨트롤을 나타내는 AutomationElement를 반환합니다.

RangeFromChild. 여기서 AutomationElement는 이전 GetChildren 메서드에서 반환되는 개체입니다.

"http://www.microsoft.com"을 나타내는 범위를 반환합니다.

 

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

URL http://{}가 텍스트 안에 포함되어 있습니다.

 

호출된 메서드

결과

GetText

문자열 "www"를 반환합니다.

GetEnclosingElement

텍스트 범위를 감싸고 있는 가장 안쪽의 AutomationElement를 반환합니다. 이 경우 하이퍼링크 컨트롤을 반환합니다.

GetChildren

텍스트 범위가 전체 URL 문자열에 걸쳐 있는 것이 아니기 때문에 null을 반환합니다.

 

예제 3 - 텍스트 컨테이너의 콘텐츠에 부분적으로 걸쳐 있는 텍스트 범위. 텍스트 컨테이너에 텍스트 범위의 일부가 아닌 포함 텍스트 하이퍼링크가 있습니다.

{URL} 이 텍스트 안에 포함되어 있습니다.

 

호출된 메서드

결과

GetText

문자열 "URL"을 반환합니다.

GetEnclosingElement

텍스트 범위를 감싸고 있는 가장 안쪽의 AutomationElement를 반환합니다. 이 경우 텍스트 공급자 자체를 나타내는 AutomationElement를 반환합니다.

매개 변수가 (TextUnit.Word, 1)인 Move

하이퍼링크의 텍스트가 개별 단어로 구성되어 있으므로 텍스트 범위를 "http"로 이동합니다. 이 경우 하이퍼링크는 단일 개체로 처리되지 않습니다.

URL {http}가 텍스트 안에 포함되어 있습니다.

 

Image

예제 1 - 포함 이미지가 들어 있는 텍스트 범위

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

 

호출된 메서드

결과

GetText

문자열 "가 텍스트 안에 포함되어 있습니다"를 반환합니다. 이미지에 연결된 모든 대체(ALT) 텍스트는 텍스트 스트림에 포함되지 않습니다.

GetEnclosingElement

텍스트 범위를 감싸고 있는 가장 안쪽의 AutomationElement를 반환합니다. 이 경우 텍스트 공급자 자체를 나타내는 AutomationElement를 반환합니다.

GetChildren

이미지 컨트롤을 나타내는 AutomationElement를 반환합니다.

RangeFromChild. 여기서 AutomationElement는 이전 GetChildren 메서드에서 반환되는 개체입니다.

"포함된 이미지 예제"를 나타내는 디제너레이트 범위를 반환합니다.

 

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

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

 

호출된 메서드

결과

GetText

문자열 "이미지"를 반환합니다.

GetEnclosingElement

텍스트 범위를 감싸고 있는 가장 안쪽의 AutomationElement를 반환합니다. 이 경우 텍스트 공급자 자체를 나타내는 AutomationElement를 반환합니다.

매개 변수가 (TextUnit.Word, 1)인 Move

텍스트 범위를 "가 "로 이동합니다. 텍스트 기반 포함 개체만 텍스트 스트림의 일부로 간주되기 때문에 이 예제의 이미지는 이동 또는 반환 값(이 경우 1)에 영향을 주지 않습니다.

예제에 사용되는 표

이미지가 있는 셀

텍스트가 있는 셀

포함된 이미지 예제

X

포함된 이미지 예제 2

Y

포함된 이미지 예제 3

Z의 이미지

Z

 

예제 1 - 셀의 콘텐츠에서 텍스트 컨테이너를 가져옵니다.

 

호출된 메서드

결과

매개 변수가 (0,0)인 GetItem

표 셀의 콘텐츠를 나타내는 AutomationElement를 반환합니다. 이 경우 요소는 텍스트 컨트롤입니다.

RangeFromChild. 여기서 AutomationElement는 이전 GetItem 메서드에서 반환되는 개체입니다.

이미지 포함된 이미지 예제에 걸쳐 있는 범위를 반환합니다.

이전 RangeFromChild 메서드에서 반환되는 개체에 대한 GetEnclosingElement

표 셀을 나타내는 AutomationElement를 반환합니다. 이 경우 요소는 TableItemPattern을 지원하는 텍스트 컨트롤입니다.

이전 GetEnclosingElement 메서드에서 반환되는 개체에 대한 GetEnclosingElement

표를 나타내는 AutomationElement를 반환합니다.

이전 GetEnclosingElement 메서드에서 반환되는 개체에 대한 GetEnclosingElement

텍스트 공급자 자체를 나타내는 AutomationElement를 반환합니다.

 

예제 2 - 셀의 텍스트 콘텐츠를 가져옵니다.

 

호출된 메서드

결과

매개 변수가 (1,1)인 GetItem

표 셀의 콘텐츠를 나타내는 AutomationElement를 반환합니다. 이 경우 요소는 텍스트 컨트롤입니다.

RangeFromChild. 여기서 AutomationElement는 이전 GetItem 메서드에서 반환되는 개체입니다.

"Y"를 반환합니다.

참고 항목

작업

UI 자동화를 사용하여 포함 개체에 액세스

UI 자동화를 사용하여 표의 콘텐츠 노출

UI 자동화를 사용하여 텍스트 이동

TextPattern Search and Selection Sample

참조

TextPattern

TextPatternRange

ITextProvider

ITextRangeProvider