클라이언트측 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 목록 뷰 컨트롤과 여러 뷰 패턴을 지원하지 않는 또 다른 알려진 응용 프로그램의 비슷한 컨트롤에 서로 다른 공급자를 사용할 수 있습니다.