IRawElementProviderWindowlessSite::GetAdjacentFragment 方法(uiautomationcore.h)

检索与此控件站点拥有的无窗口Microsoft ActiveX 控件相邻的片段的片段指针。

语法

HRESULT GetAdjacentFragment(
  [in]          NavigateDirection           direction,
  [out, retval] IRawElementProviderFragment **ppParent
);

参数

[in] direction

类型:NavigateDirection

一个值,指示要检索的相邻片段(父级、下一个同级、以前的同级等)。

[out, retval] ppParent

类型:IRawElementProviderFragment**

接收相邻片段。

返回值

类型:HRESULT

如果此方法成功,它将返回S_OK。 否则,它将返回 HRESULT 错误代码。 如果方向 NavigateDirection_FirstChildNavigateDirection_LastChild,则返回值为E_INVALIDARG,此方法无效。 如果请求的方向中没有相邻的片段,该方法将返回S_OK并将 ppRetVal 设置为 NULL

言论

若要返回片段的父级,实现 IRawElementProviderFragment 接口的对象必须能够实现 Navigate 方法。 实现 Navigate 对于无窗口 ActiveX 控件来说很难,因为该控件可能无法确定其在父对象的可访问树中的位置。 GetAdjacentFragment 方法使无窗口 ActiveX 控件能够查询其站点中的相邻片段,然后将该片段返回到调用 Navigate的客户端。

提供程序通常调用此方法作为处理 IRawElementProviderFragment::Navigate 方法的一部分。

例子

以下C++代码示例演示如何实现 GetAdjacentFragment 方法。

IFACEMETHODIMP CProviderWindowlessSite::GetAdjacentFragment(
        enum NavigateDirection direction, IRawElementProviderFragment **ppFragment)   
{
    if (ppFragment == NULL)
    {
        return E_INVALIDARG;
    }
    
    *ppFragment = NULL;
    HRESULT hr = S_OK;

    switch (direction)
    {
        case NavigateDirection_Parent:
            {  
                IRawElementProviderSimple *pSimple = NULL;

                // Call an application-defined function to retrieve the
                // parent provider interface.
                hr = GetParentProvider(&pSimple);  
                if (SUCCEEDED(hr))  
                {  
                    // Get the parent's IRawElementProviderFragment interface.
                    hr = pSimple->QueryInterface(IID_PPV_ARGS(ppFragment));  
                    pSimple->Release();  
                } 
            }  
            break;  
  
        case NavigateDirection_FirstChild:
        case NavigateDirection_LastChild:
            hr = E_INVALIDARG;
            break;

        // Ignore NavigateDirection_NextSibling and NavigateDirection_PreviousSibling
        // because there are no adjacent fragments.
        default:  
            break;  
    }  
  
    return hr;  
}   

要求

要求 价值
最低支持的客户端 Windows 8 [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2012 [桌面应用 |UWP 应用]
目标平台 窗户
标头 uiautomationcore.h (包括 UIAutomation.h)

另请参阅

IRawElementProviderWindowlessSite