다음을 통해 공유


Server-Side UI 자동화 공급자를 노출하는 방법

이 항목에는 사용자 지정 컨트롤에 대한 서버 쪽 Microsoft UI 자동화 공급자를 노출하는 방법을 보여 주는 예제 코드가 포함되어 있습니다.

Microsoft UI 자동화 공급자 애플리케이션에 WM_GETOBJECT 메시지를 보내 공급자가 지원하는 액세스 가능한 개체에 대한 정보를 검색합니다. UI 자동화 클라이언트가IUIAutomation::ElementFromHandle, ElementFromPointGetFocusedElement를 호출하고 클라이언트가 등록한 이벤트를 처리할 때 WM_GETOBJECT 보냅니다.

공급자가 WM_GETOBJECT 메시지를 받으면 lParam 매개 변수가 UiaRootObjectId와 같은지 여부를 검사 합니다. 이 경우 공급자는 개체의 IRawElementProviderSimple 인터페이스를 반환해야 합니다. 공급자는 UiaReturnRawElementProvider 함수를 호출하여 인터페이스를 반환합니다.

다음 예제에서는 WM_GETOBJECT 응답하는 방법을 보여 줍니다.

    // Expose the custom button's server-side provider to UI Automation.
    case WM_GETOBJECT:
        {
            // If lParam matches UiaRootObjectId, return IRawElementProviderSimple.
            if (static_cast<long>(lParam) == static_cast<long>(UiaRootObjectId))
            {
                // Retrieve the pointer to the custom button object from the
                // window data.
                CustomButton* pControl = reinterpret_cast<CustomButton*>(
                    GetWindowLongPtr(hwnd, GWLP_USERDATA));

                // Call an application-defined method to get the
                // IRawElementProviderSimple pointer.
                IRawElementProviderSimple* pRootProvider = 
                    pControl->GetUIAutomationProvider(hwnd);

                // Return the IRawElementProviderSimple pointer to UI Automation.
                return UiaReturnRawElementProvider(hwnd, wParam, lParam, 
                    pRootProvider);
            }
            return 0;
        }

개념

Server-Side UI 자동화 공급자 구현

WM_GETOBJECT 메시지

UI 자동화 공급자에 대한 방법 항목