비고
이 설명서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI 자동화 클래스를 사용하려는 .NET Framework 개발자를 위한 것입니다. UI 자동화에 대한 최신 정보는 Windows Automation API: UI 자동화참조하세요.
Win32, Windows Forms 및 WPF(Windows Presentation Foundation)를 비롯한 여러 가지 UI(사용자 인터페이스) 프레임워크가 Microsoft 운영 체제 내에서 사용되고 있습니다. Microsoft UI 자동화는 UI 요소에 대한 정보를 클라이언트에 노출합니다. 그러나 UI 자동화 자체는 이러한 프레임워크에 존재하는 다양한 유형의 컨트롤과 해당 프레임워크에서 정보를 추출하는 데 필요한 기술을 인식하지 못합니다. 대신 이 작업을 공급자라는 개체에 둡니다. 공급자는 특정 컨트롤에서 정보를 추출하고 해당 정보를 UI 자동화에 전달하는 다음, 일관된 방식으로 클라이언트에 제공합니다.
공급자는 서버 쪽 또는 클라이언트 쪽에 있을 수 있습니다. 서버 쪽 공급자는 컨트롤 자체에 의해 구현됩니다. WPF 요소는 UI 자동화를 염두에 두고 작성된 타사 컨트롤과 마찬가지로 공급자를 구현합니다.
그러나 Win32 및 Windows Forms와 같은 이전 컨트롤은 UI 자동화를 직접 지원하지 않습니다. 이러한 컨트롤은 클라이언트 프로세스에 있는 공급자가 대신 제공하고 프로세스 간 통신을 사용하여 컨트롤에 대한 정보를 얻습니다. 예를 들어 컨트롤과 Windows 메시지를 모니터링합니다. 이러한 클라이언트 쪽 공급자를 프록시라고도 합니다.
Windows Vista는 표준 Win32 및 Windows Forms 컨트롤에 대한 공급자를 제공합니다. 또한 대체 공급자는 다른 서버 쪽 공급자 또는 프록시에서 제공되지 않지만 Microsoft Active Accessibility 구현이 있는 모든 컨트롤에 부분 UI 자동화 지원을 제공합니다. 이러한 모든 공급자는 자동으로 로드되고 클라이언트 애플리케이션에서 사용할 수 있습니다.
Win32 및 Windows Forms 컨트롤 지원에 대한 자세한 내용은 표준 컨트롤에 대한 UI 자동화 지원을 참조하세요.
애플리케이션은 다른 클라이언트 쪽 공급자를 등록할 수도 있습니다.
Client-Side 공급자 배포
UI 자동화는 관리 코드 어셈블리에서 클라이언트 쪽 공급자를 찾아야 합니다. 이 어셈블리의 네임스페이스는 어셈블리와 이름이 같아야 합니다. 예를 들어 ContosoProxies.dll 라는 어셈블리에는 ContosoProxies 네임스페이스가 포함됩니다. 네임스페이스 내에서 클래스를 만듭니다 UIAutomationClientSideProviders . 정적 ClientSideProviderDescriptionTable 필드의 구현에서 공급자를 설명하는 구조의 ClientSideProviderDescription 배열을 만듭니다.
Client-Side 공급자 등록 및 구성
DLL(동적 연결 라이브러리)의 클라이언트 쪽 공급자는 호출 RegisterClientSideProviderAssembly을 통해 로드됩니다. 공급자를 사용하기 위해 클라이언트 애플리케이션에서 추가 작업이 필요하지 않습니다.
클라이언트의 자체 코드에서 구현된 공급자는 .를 사용하여 RegisterClientSideProviders등록됩니다. 이 메서드는 각각 다음 속성을 지정하는 구조체 배열 ClientSideProviderDescription 을 인수로 사용합니다.
공급자 개체를 만드는 콜백 함수입니다.
공급자가 제공할 컨트롤의 클래스 이름입니다.
공급자가 제공할 애플리케이션의 이미지 이름(일반적으로 실행 파일의 전체 이름)입니다.
대상 애플리케이션에 있는 창 클래스와 클래스 이름을 일치시키는 방법을 제어하는 플래그입니다.
마지막 두 매개 변수는 선택 사항입니다. 클라이언트는 다른 애플리케이션에 대해 다른 공급자를 사용하려는 경우 대상 애플리케이션의 이미지 이름을 지정할 수 있습니다. 예를 들어 클라이언트는 여러 보기 패턴을 지원하는 알려진 애플리케이션에서 Win32 목록 보기 컨트롤에 대해 하나의 공급자를 사용하고, 다른 공급자는 그렇지 않은 다른 알려진 애플리케이션의 유사한 컨트롤에 사용할 수 있습니다.