c++windowswinapiwin32guimicrosoft-ui-automation

Convert IUIAutomationElement to IUIAutomationElement6, to invoke get_CurrentFullDescription method


I need to get fullDescription property of a UI element using get_CurrentFullDescription method of UIAutomation library of c++ windows.

Issue is I have element as IUIAutomationElement instead of IUIAutomationElement6, get_CurrentFullDescription can only be invoked on element with IUIAutomationElement6 type.

How can I convert IUIAutomationElement to IUIAutomationElement6?

I am using HandlePropertyChangedEvent method to listen on changes in UI, which returns:

HRESULT HandlePropertyChangedEvent(
  [in] IUIAutomationElement *sender,
  [in] PROPERTYID           propertyId,
  [in] VARIANT              newValue
);

https://learn.microsoft.com/en-us/windows/win32/api/uiautomationclient/nf-uiautomationclient-iuiautomationpropertychangedeventhandler-handlepropertychangedevent

Here, I need to access FullDescription property of sender element coming from HandlePropertyChangedEvent function.


Solution

  • @IInspectable mentioned QueryInterface hint in comments, based on that here is answer:

    CComPtr<IUIAutomationElement> pElement;
    // Code to initialize pElement goes here
    CComPtr<IUIAutomationElement6> pElement6;
    HRESULT hr = pElement->QueryInterface(&pElement6);
    if (SUCCEEDED(hr))
    {
        // Use the pElement6 object here
    }