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

참고 항목

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

Win32, Windows Forms, WPF(Windows Presentation Foundation)를 비롯한 Microsoft 운영 체제 내에서 다양한 UI(사용자 인터페이스) 프레임워크가 사용되고 있습니다. Microsoft UI 자동화는 UI 요소에 대한 정보를 클라이언트에 노출합니다. 그러나 UI 자동화 자체는 이러한 프레임워크에 있는 여러 형식의 컨트롤과 컨트롤에서 정보를 추출하는 데 필요한 기술은 인식하지 않습니다. 대신, 이 작업은 공급자라고 하는 개체가 담당합니다. 공급자는 특정 컨트롤에서 정보를 추출하고 이 정보를 UI 자동화에 전달한 다음, 일관된 방식으로 클라이언트에게 제공합니다.

공급자는 서버쪽 또는 클라이언트쪽에 존재할 수 있습니다. 서버쪽 공급자는 컨트롤 자체에서 구현됩니다. UI 자동화로 작성된 모든 타사 컨트롤에 유의하여 WPF 요소가 공급자를 구현합니다.

그러나 Win32 및 Windows Forms와 같은 이전 컨트롤은 UI 자동화를 직접 지원하지 않습니다. 이러한 컨트롤은 클라이언트 프로세스에 존재하며 크로스 프로세스 통신을 사용하여(예: 컨트롤에서 Windows 메시지 모니터링) 컨트롤에 대한 정보를 얻는 공급자가 대신 제공합니다. 이러한 클라이언트쪽 공급자를 프록시라고도 합니다.

Windows Vista는 표준 Win32 및 Windows Forms 컨트롤에 대한 공급자를 제공합니다. 또한 대체 공급자는 다른 서버 쪽 공급자 또는 프록시가 제공하지는 않지만 Microsoft Active Accessibility 구현이 있는 모든 컨트롤에 부분적 UI 자동화 지원을 제공합니다. 이러한 공급자는 모두 자동으로 로드되며 클라이언트 애플리케이션에 사용할 수 있습니다.

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

애플리케이션이 다른 클라이언트쪽 공급자를 등록할 수도 있습니다.

클라이언트쪽 공급자 배포

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

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

DLL(동적 연결 라이브러리)의 클라이언트 쪽 공급자는 RegisterClientSideProviderAssembly 호출을 통해 로드됩니다. 공급자를 사용하기 위해 클라이언트 애플리케이션에 추가적인 조치가 필요하지 않습니다.

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

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

  • 공급자가 제공하는 컨트롤의 클래스 이름.

  • 공급자가 제공하는 애플리케이션의 이미지 이름(일반적으로 실행 파일의 전체 이름).

  • 대상 애플리케이션에서 발견된 창 클래스에 대해 클래스 이름이 일치되는 방법을 제어하는 플래그.

마지막 두 매개 변수는 선택 사항입니다. 클라이언트가 여러 애플리케이션에 다양한 공급자를 사용하려는 경우 대상 애플리케이션의 이미지 이름을 지정할 수 있습니다. 예를 들어 클라이언트는 Multiple View 패턴을 지원하는 알려진 애플리케이션에서 Win32 목록 뷰 컨트롤에 특정 공급자를 사용하고, 이 패턴을 지원하지 않는 다른 알려진 애플리케이션에서 비슷한 컨트롤에 다른 공급자를 사용할 수 있습니다.

참고 항목