다음을 통해 공유


클라이언트측 UI 자동화 공급자 구현

참고참고

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

Win32, Windows Forms, Windows Presentation Foundation (WPF) 등의 Microsoft 운영 체제 내에서는 몇 가지 다른 user interface (UI) 프레임워크가 사용됩니다. Microsoft UI Automation는 UI 요소에 대한 정보를 클라이언트에 노출합니다. 하지만 UI Automation 자체는 이러한 프레임워크 내에 있는 다양한 형식의 컨트롤과 이러한 컨트롤에서 정보를 추출하는 데 필요한 방법을 인식하지 못합니다. 그래서 이러한 작업을 공급자라는 개체에 위임합니다. 공급자가 특정 컨트롤에서 정보를 추출하여 전달하면 UI Automation가 이를 일관된 방식으로 클라이언트에 제공합니다.

공급자는 서버 쪽이나 클라이언트 쪽에 있을 수 있습니다. 서버 쪽 공급자는 컨트롤 자체에 의해 구현됩니다. UI Automation를 염두에 두고 작성된 모든 타사 컨트롤과 마찬가지로 WPF 요소도 공급자를 구현할 수 있습니다.

하지만 Win32 및 Windows Forms의 컨트롤과 같은 이전 컨트롤은 UI Automation를 직접적으로 지원하지 않습니다. 이러한 컨트롤은 클라이언트 프로세스에 존재하며 컨트롤 간에 전달되는 창 메시지를 모니터링하는 등의 프로세스 간 통신을 사용하여 컨트롤에 대한 정보를 얻는 공급자에 의해 제공됩니다. 이 클라이언트 쪽 공급자를 프록시라고도 합니다.

Windows Vista는 표준 Win32 및 Windows Forms 컨트롤에 대한 공급자를 제공합니다. 뿐만 아니라 다른 서버 쪽 공급자나 프록시에 의해 제공되지는 않지만 Microsoft Active Accessibility 구현이 포함된 모든 컨트롤에 대해 UI Automation를 부분적으로 지원하는 대체(fallback) 공급자도 있습니다. 이러한 공급자는 모두 클라이언트 응용 프로그램에 자동으로 로드되어 사용할 수 있는 상태가 됩니다.

Win32 및 Windows Forms 컨트롤 지원에 대한 자세한 내용은 표준 컨트롤에 대한 UI 자동화 지원을 참조하십시오.

응용 프로그램에서 다른 클라이언트 쪽 공급자를 등록할 수도 있습니다.

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

  • 클라이언트 쪽 공급자 배포
  • 클라이언트 쪽 공급자 등록 및 구성
  • 관련 항목

클라이언트 쪽 공급자 배포

UI Automation는 관리 코드 어셈블리에서 클라이언트 쪽 공급자를 찾아야 합니다. 이 어셈블리의 네임스페이스 이름은 어셈블리의 이름과 동일해야 합니다. 예를 들어 ContosoProxies.dll이라는 어셈블리에는 ContosoProxies라는 네임스페이스가 포함됩니다. 네임스페이스 내에서 UIAutomationClientSideProviders 클래스를 만듭니다. 정적 ClientSideProviderDescriptionTable 필드 구현에서 공급자를 설명하는 ClientSideProviderDescription 구조체의 배열을 만듭니다.

클라이언트 쪽 공급자 등록 및 구성

dynamic-link library (DLL)의 클라이언트 쪽 공급자는 RegisterClientSideProviderAssembly를 호출하여 로드됩니다. 클라이언트 응용 프로그램에서는 추가 작업 없이 곧바로 공급자를 사용할 수 있습니다.

클라이언트 자체 코드에 구현된 공급자는 RegisterClientSideProviders를 사용하여 등록됩니다. 이 메서드는 각각 다음 속성을 지정하는 ClientSideProviderDescription 구조체의 배열을 인수로 사용합니다.

  • 공급자 개체를 만드는 콜백 함수

  • 공급자가 제공할 컨트롤의 클래스 이름

  • 공급자가 제공할 응용 프로그램의 이미지 이름(주로 실행 파일의 전체 이름)

  • 클래스 이름과 대상 응용 프로그램에서 찾은 창 클래스가 일치하는지 비교하는 방법을 제어하는 플래그

마지막 두 매개 변수는 선택적입니다. 응용 프로그램마다 다른 공급자를 사용하려는 경우 클라이언트가 대상 응용 프로그램의 이미지 이름을 지정할 수도 있습니다. 예를 들어 여러 뷰 패턴을 지원하는 알려진 응용 프로그램의 Win32 목록 뷰 컨트롤과 여러 뷰 패턴을 지원하지 않는 또 다른 알려진 응용 프로그램의 비슷한 컨트롤에 서로 다른 공급자를 사용할 수 있습니다.

참고 항목

작업

클라이언트측 UI 자동화 공급자 만들기

클라이언트 응용 프로그램에서 UI 자동화 공급자 구현