다음을 통해 공유


제어 패턴 호출

메서드에 대한 정보를 포함하여 IInvokeProvider를 구현하기 위한 지침 및 규칙을 설명합니다. Invoke 컨트롤 패턴은 활성화될 때 상태를 유지하지 않고 명확한 단일 작업을 시작하거나 수행하는 컨트롤을 지원하는 데 사용됩니다.

검사 상자 및 라디오 단추와 같은 상태를 유지 관리하는 컨트롤은 대신 IToggleProviderISelectionProvider를 각각 구현해야 합니다. 이 컨트롤 패턴을 구현하는 컨트롤의 예는 컨트롤 형식 및 지원되는 컨트롤 패턴을 참조하세요.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

구현 지침 및 규칙

Invoke 컨트롤 패턴을 구현할 때 다음 지침 및 규칙을 확인합니다.

  • 동일한 동작이 다른 컨트롤 패턴 공급자를 통해 노출되지 않는 경우 컨트롤은 IInvokeProvider 를 구현합니다. 예를 들어 컨트롤의 IUIAutomationInvokePattern::Invoke 메서드가 IUIAutomationExpandCollapsePattern::Expand 또는 Collapse 메서드와 동일한 작업을 수행하는 경우 컨트롤 은 IInvokeProvider를 구현하지 않아야 합니다.

  • 일반적으로 컨트롤은 미리 정의된 키보드 바로 가기 또는 몇 가지 키 입력의 조합을 클릭하거나, 두 번 클릭하거나, ENTER 키를 눌러 호출합니다.

  • invoked 이벤트(UIA_Invoke_InvokedEventId) 이벤트는 활성화된 컨트롤에서 발생합니다(연결된 작업을 수행하는 컨트롤에 대한 응답으로). 가능하면, 컨트롤이 작업을 완료하여 차단하지 않고 반환된 후에 이벤트가 발생해야 합니다. Invoked 이벤트(UIA_Invoke_InvokedEventId)는 다음 시나리오에서 Invoke 요청을 서비스하기 전에 발생해야 합니다.

    • 작업이 완료될 때까지 기다리는 것은 실제로 불가능합니다.
    • 작업에는 사용자 개입이 필요합니다.
    • 작업은 시간이 오래 걸리므로 상당한 시간 동안 호출 클라이언트가 차단됩니다.
  • 컨트롤을 호출하는 데 상당한 부작용이 있는 경우 해당 부작용은 HelpText 속성을 통해 노출되어야 합니다. 예를 들어 IUIAutomationInvokePattern::Invoke 가 선택 영역과 연결되어 있지 않더라도 Invoke 를 사용하면 다른 컨트롤이 선택될 수 있습니다.

  • 마우스로 가리키기(또는 마우스 위로) 효과는 일반적으로 Invoked 이벤트를 구성하지 않습니다. 그러나 가리키기 상태에 따라 동작을 수행하는 컨트롤(시각적 효과를 유발하는 것이 아니라)은 Invoke 컨트롤 패턴을 지원해야 합니다.

    참고

    이 구현은 컨트롤을 마우스 관련 부작용의 결과로만 호출할 수 있는 경우 접근성 문제로 간주됩니다.

  • 컨트롤을 호출하는 것은 항목을 선택하는 것과 다릅니다. 그러나 컨트롤에 따라, 컨트롤 호출로 인해 항목이 잘못된 방식으로 선택될 수 있습니다. 예를 들어, 내 문서 폴더에서 Microsoft Word 문서 목록 항목을 호출하면 항목이 선택되고 문서가 열리는 두 가지 작업이 수행됩니다.

  • 요소가 호출되는 즉시 Microsoft UI 자동화 트리에서 사라질 수 있습니다. 그 결과, 이벤트 콜백에서 제공하는 요소로부터 정보를 요청하는 작업에 실패할 수 있습니다. 이러한 문제의 해결 방법으로 캐시된 정보를 프리페치하는 것이 좋습니다.

  • 컨트롤은 여러 개의 컨트롤 패턴을 구현할 수 있습니다. 예를 들어 Microsoft Excel 도구 모음의 채우기 색 컨트롤은 Invoke 및 ExpandCollapse 컨트롤 패턴을 모두 구현합니다. ExpandCollapse 컨트롤 패턴은 메뉴를 표시하고 호출 컨트롤 패턴은 선택한 색으로 활성 선택을 채웁니다.

IInvokeProvider에 필요한 멤버

IInvokeProvider 인터페이스를 구현하려면 다음 메서드가 필요합니다.

필요한 멤버 멤버 형식 참고
호출 메서드 Invoke 는 비동기 호출이며 차단 없이 즉시 반환해야 합니다.
이 동작은 호출될 때 직접 또는 간접적으로 모달 대화 상자를 시작하는 컨트롤에 특히 중요합니다. 이벤트를 발생시킨 모든 UI 자동화 클라이언트는 모달 대화 상자가 닫힐 때까지 차단된 상태로 유지됩니다.

이 컨트롤 패턴에는 연결된 속성 또는 이벤트가 없습니다.

컨트롤 형식 및 해당 지원되는 컨트롤 패턴

UI 자동화 컨트롤 패턴 개요

UI 자동화 트리 개요

UIA_Invoke_InvokedEventId