/*** Autogenerated by WIDL 11.6 from include/uiautomationclient.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __uiautomationclient_h__
#define __uiautomationclient_h__

/* Forward declarations */

#ifndef __IUIAutomationCondition_FWD_DEFINED__
#define __IUIAutomationCondition_FWD_DEFINED__
typedef interface IUIAutomationCondition IUIAutomationCondition;
#ifdef __cplusplus
interface IUIAutomationCondition;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationBoolCondition_FWD_DEFINED__
#define __IUIAutomationBoolCondition_FWD_DEFINED__
typedef interface IUIAutomationBoolCondition IUIAutomationBoolCondition;
#ifdef __cplusplus
interface IUIAutomationBoolCondition;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationPropertyCondition_FWD_DEFINED__
#define __IUIAutomationPropertyCondition_FWD_DEFINED__
typedef interface IUIAutomationPropertyCondition IUIAutomationPropertyCondition;
#ifdef __cplusplus
interface IUIAutomationPropertyCondition;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationAndCondition_FWD_DEFINED__
#define __IUIAutomationAndCondition_FWD_DEFINED__
typedef interface IUIAutomationAndCondition IUIAutomationAndCondition;
#ifdef __cplusplus
interface IUIAutomationAndCondition;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationOrCondition_FWD_DEFINED__
#define __IUIAutomationOrCondition_FWD_DEFINED__
typedef interface IUIAutomationOrCondition IUIAutomationOrCondition;
#ifdef __cplusplus
interface IUIAutomationOrCondition;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationNotCondition_FWD_DEFINED__
#define __IUIAutomationNotCondition_FWD_DEFINED__
typedef interface IUIAutomationNotCondition IUIAutomationNotCondition;
#ifdef __cplusplus
interface IUIAutomationNotCondition;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationCacheRequest_FWD_DEFINED__
#define __IUIAutomationCacheRequest_FWD_DEFINED__
typedef interface IUIAutomationCacheRequest IUIAutomationCacheRequest;
#ifdef __cplusplus
interface IUIAutomationCacheRequest;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTreeWalker_FWD_DEFINED__
#define __IUIAutomationTreeWalker_FWD_DEFINED__
typedef interface IUIAutomationTreeWalker IUIAutomationTreeWalker;
#ifdef __cplusplus
interface IUIAutomationTreeWalker;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationEventHandler_FWD_DEFINED__
#define __IUIAutomationEventHandler_FWD_DEFINED__
typedef interface IUIAutomationEventHandler IUIAutomationEventHandler;
#ifdef __cplusplus
interface IUIAutomationEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationPropertyChangedEventHandler_FWD_DEFINED__
#define __IUIAutomationPropertyChangedEventHandler_FWD_DEFINED__
typedef interface IUIAutomationPropertyChangedEventHandler IUIAutomationPropertyChangedEventHandler;
#ifdef __cplusplus
interface IUIAutomationPropertyChangedEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationStructureChangedEventHandler_FWD_DEFINED__
#define __IUIAutomationStructureChangedEventHandler_FWD_DEFINED__
typedef interface IUIAutomationStructureChangedEventHandler IUIAutomationStructureChangedEventHandler;
#ifdef __cplusplus
interface IUIAutomationStructureChangedEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationFocusChangedEventHandler_FWD_DEFINED__
#define __IUIAutomationFocusChangedEventHandler_FWD_DEFINED__
typedef interface IUIAutomationFocusChangedEventHandler IUIAutomationFocusChangedEventHandler;
#ifdef __cplusplus
interface IUIAutomationFocusChangedEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTextEditTextChangedEventHandler_FWD_DEFINED__
#define __IUIAutomationTextEditTextChangedEventHandler_FWD_DEFINED__
typedef interface IUIAutomationTextEditTextChangedEventHandler IUIAutomationTextEditTextChangedEventHandler;
#ifdef __cplusplus
interface IUIAutomationTextEditTextChangedEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationChangesEventHandler_FWD_DEFINED__
#define __IUIAutomationChangesEventHandler_FWD_DEFINED__
typedef interface IUIAutomationChangesEventHandler IUIAutomationChangesEventHandler;
#ifdef __cplusplus
interface IUIAutomationChangesEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationNotificationEventHandler_FWD_DEFINED__
#define __IUIAutomationNotificationEventHandler_FWD_DEFINED__
typedef interface IUIAutomationNotificationEventHandler IUIAutomationNotificationEventHandler;
#ifdef __cplusplus
interface IUIAutomationNotificationEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationInvokePattern_FWD_DEFINED__
#define __IUIAutomationInvokePattern_FWD_DEFINED__
typedef interface IUIAutomationInvokePattern IUIAutomationInvokePattern;
#ifdef __cplusplus
interface IUIAutomationInvokePattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationDockPattern_FWD_DEFINED__
#define __IUIAutomationDockPattern_FWD_DEFINED__
typedef interface IUIAutomationDockPattern IUIAutomationDockPattern;
#ifdef __cplusplus
interface IUIAutomationDockPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationExpandCollapsePattern_FWD_DEFINED__
#define __IUIAutomationExpandCollapsePattern_FWD_DEFINED__
typedef interface IUIAutomationExpandCollapsePattern IUIAutomationExpandCollapsePattern;
#ifdef __cplusplus
interface IUIAutomationExpandCollapsePattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationGridPattern_FWD_DEFINED__
#define __IUIAutomationGridPattern_FWD_DEFINED__
typedef interface IUIAutomationGridPattern IUIAutomationGridPattern;
#ifdef __cplusplus
interface IUIAutomationGridPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationGridItemPattern_FWD_DEFINED__
#define __IUIAutomationGridItemPattern_FWD_DEFINED__
typedef interface IUIAutomationGridItemPattern IUIAutomationGridItemPattern;
#ifdef __cplusplus
interface IUIAutomationGridItemPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationMultipleViewPattern_FWD_DEFINED__
#define __IUIAutomationMultipleViewPattern_FWD_DEFINED__
typedef interface IUIAutomationMultipleViewPattern IUIAutomationMultipleViewPattern;
#ifdef __cplusplus
interface IUIAutomationMultipleViewPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationObjectModelPattern_FWD_DEFINED__
#define __IUIAutomationObjectModelPattern_FWD_DEFINED__
typedef interface IUIAutomationObjectModelPattern IUIAutomationObjectModelPattern;
#ifdef __cplusplus
interface IUIAutomationObjectModelPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationRangeValuePattern_FWD_DEFINED__
#define __IUIAutomationRangeValuePattern_FWD_DEFINED__
typedef interface IUIAutomationRangeValuePattern IUIAutomationRangeValuePattern;
#ifdef __cplusplus
interface IUIAutomationRangeValuePattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationScrollPattern_FWD_DEFINED__
#define __IUIAutomationScrollPattern_FWD_DEFINED__
typedef interface IUIAutomationScrollPattern IUIAutomationScrollPattern;
#ifdef __cplusplus
interface IUIAutomationScrollPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationScrollItemPattern_FWD_DEFINED__
#define __IUIAutomationScrollItemPattern_FWD_DEFINED__
typedef interface IUIAutomationScrollItemPattern IUIAutomationScrollItemPattern;
#ifdef __cplusplus
interface IUIAutomationScrollItemPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationSelectionPattern_FWD_DEFINED__
#define __IUIAutomationSelectionPattern_FWD_DEFINED__
typedef interface IUIAutomationSelectionPattern IUIAutomationSelectionPattern;
#ifdef __cplusplus
interface IUIAutomationSelectionPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationSelectionItemPattern_FWD_DEFINED__
#define __IUIAutomationSelectionItemPattern_FWD_DEFINED__
typedef interface IUIAutomationSelectionItemPattern IUIAutomationSelectionItemPattern;
#ifdef __cplusplus
interface IUIAutomationSelectionItemPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationSynchronizedInputPattern_FWD_DEFINED__
#define __IUIAutomationSynchronizedInputPattern_FWD_DEFINED__
typedef interface IUIAutomationSynchronizedInputPattern IUIAutomationSynchronizedInputPattern;
#ifdef __cplusplus
interface IUIAutomationSynchronizedInputPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTablePattern_FWD_DEFINED__
#define __IUIAutomationTablePattern_FWD_DEFINED__
typedef interface IUIAutomationTablePattern IUIAutomationTablePattern;
#ifdef __cplusplus
interface IUIAutomationTablePattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTableItemPattern_FWD_DEFINED__
#define __IUIAutomationTableItemPattern_FWD_DEFINED__
typedef interface IUIAutomationTableItemPattern IUIAutomationTableItemPattern;
#ifdef __cplusplus
interface IUIAutomationTableItemPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTogglePattern_FWD_DEFINED__
#define __IUIAutomationTogglePattern_FWD_DEFINED__
typedef interface IUIAutomationTogglePattern IUIAutomationTogglePattern;
#ifdef __cplusplus
interface IUIAutomationTogglePattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTransformPattern_FWD_DEFINED__
#define __IUIAutomationTransformPattern_FWD_DEFINED__
typedef interface IUIAutomationTransformPattern IUIAutomationTransformPattern;
#ifdef __cplusplus
interface IUIAutomationTransformPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationValuePattern_FWD_DEFINED__
#define __IUIAutomationValuePattern_FWD_DEFINED__
typedef interface IUIAutomationValuePattern IUIAutomationValuePattern;
#ifdef __cplusplus
interface IUIAutomationValuePattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationWindowPattern_FWD_DEFINED__
#define __IUIAutomationWindowPattern_FWD_DEFINED__
typedef interface IUIAutomationWindowPattern IUIAutomationWindowPattern;
#ifdef __cplusplus
interface IUIAutomationWindowPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTextRange_FWD_DEFINED__
#define __IUIAutomationTextRange_FWD_DEFINED__
typedef interface IUIAutomationTextRange IUIAutomationTextRange;
#ifdef __cplusplus
interface IUIAutomationTextRange;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTextRange2_FWD_DEFINED__
#define __IUIAutomationTextRange2_FWD_DEFINED__
typedef interface IUIAutomationTextRange2 IUIAutomationTextRange2;
#ifdef __cplusplus
interface IUIAutomationTextRange2;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTextRangeArray_FWD_DEFINED__
#define __IUIAutomationTextRangeArray_FWD_DEFINED__
typedef interface IUIAutomationTextRangeArray IUIAutomationTextRangeArray;
#ifdef __cplusplus
interface IUIAutomationTextRangeArray;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTextPattern_FWD_DEFINED__
#define __IUIAutomationTextPattern_FWD_DEFINED__
typedef interface IUIAutomationTextPattern IUIAutomationTextPattern;
#ifdef __cplusplus
interface IUIAutomationTextPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTextPattern2_FWD_DEFINED__
#define __IUIAutomationTextPattern2_FWD_DEFINED__
typedef interface IUIAutomationTextPattern2 IUIAutomationTextPattern2;
#ifdef __cplusplus
interface IUIAutomationTextPattern2;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTextEditPattern_FWD_DEFINED__
#define __IUIAutomationTextEditPattern_FWD_DEFINED__
typedef interface IUIAutomationTextEditPattern IUIAutomationTextEditPattern;
#ifdef __cplusplus
interface IUIAutomationTextEditPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationCustomNavigationPattern_FWD_DEFINED__
#define __IUIAutomationCustomNavigationPattern_FWD_DEFINED__
typedef interface IUIAutomationCustomNavigationPattern IUIAutomationCustomNavigationPattern;
#ifdef __cplusplus
interface IUIAutomationCustomNavigationPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationActiveTextPositionChangedEventHandler_FWD_DEFINED__
#define __IUIAutomationActiveTextPositionChangedEventHandler_FWD_DEFINED__
typedef interface IUIAutomationActiveTextPositionChangedEventHandler IUIAutomationActiveTextPositionChangedEventHandler;
#ifdef __cplusplus
interface IUIAutomationActiveTextPositionChangedEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationLegacyIAccessiblePattern_FWD_DEFINED__
#define __IUIAutomationLegacyIAccessiblePattern_FWD_DEFINED__
typedef interface IUIAutomationLegacyIAccessiblePattern IUIAutomationLegacyIAccessiblePattern;
#ifdef __cplusplus
interface IUIAutomationLegacyIAccessiblePattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationItemContainerPattern_FWD_DEFINED__
#define __IUIAutomationItemContainerPattern_FWD_DEFINED__
typedef interface IUIAutomationItemContainerPattern IUIAutomationItemContainerPattern;
#ifdef __cplusplus
interface IUIAutomationItemContainerPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationVirtualizedItemPattern_FWD_DEFINED__
#define __IUIAutomationVirtualizedItemPattern_FWD_DEFINED__
typedef interface IUIAutomationVirtualizedItemPattern IUIAutomationVirtualizedItemPattern;
#ifdef __cplusplus
interface IUIAutomationVirtualizedItemPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationAnnotationPattern_FWD_DEFINED__
#define __IUIAutomationAnnotationPattern_FWD_DEFINED__
typedef interface IUIAutomationAnnotationPattern IUIAutomationAnnotationPattern;
#ifdef __cplusplus
interface IUIAutomationAnnotationPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationStylesPattern_FWD_DEFINED__
#define __IUIAutomationStylesPattern_FWD_DEFINED__
typedef interface IUIAutomationStylesPattern IUIAutomationStylesPattern;
#ifdef __cplusplus
interface IUIAutomationStylesPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationSpreadsheetPattern_FWD_DEFINED__
#define __IUIAutomationSpreadsheetPattern_FWD_DEFINED__
typedef interface IUIAutomationSpreadsheetPattern IUIAutomationSpreadsheetPattern;
#ifdef __cplusplus
interface IUIAutomationSpreadsheetPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationSpreadsheetItemPattern_FWD_DEFINED__
#define __IUIAutomationSpreadsheetItemPattern_FWD_DEFINED__
typedef interface IUIAutomationSpreadsheetItemPattern IUIAutomationSpreadsheetItemPattern;
#ifdef __cplusplus
interface IUIAutomationSpreadsheetItemPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTransformPattern2_FWD_DEFINED__
#define __IUIAutomationTransformPattern2_FWD_DEFINED__
typedef interface IUIAutomationTransformPattern2 IUIAutomationTransformPattern2;
#ifdef __cplusplus
interface IUIAutomationTransformPattern2;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationTextChildPattern_FWD_DEFINED__
#define __IUIAutomationTextChildPattern_FWD_DEFINED__
typedef interface IUIAutomationTextChildPattern IUIAutomationTextChildPattern;
#ifdef __cplusplus
interface IUIAutomationTextChildPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationDragPattern_FWD_DEFINED__
#define __IUIAutomationDragPattern_FWD_DEFINED__
typedef interface IUIAutomationDragPattern IUIAutomationDragPattern;
#ifdef __cplusplus
interface IUIAutomationDragPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationDropTargetPattern_FWD_DEFINED__
#define __IUIAutomationDropTargetPattern_FWD_DEFINED__
typedef interface IUIAutomationDropTargetPattern IUIAutomationDropTargetPattern;
#ifdef __cplusplus
interface IUIAutomationDropTargetPattern;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement_FWD_DEFINED__
#define __IUIAutomationElement_FWD_DEFINED__
typedef interface IUIAutomationElement IUIAutomationElement;
#ifdef __cplusplus
interface IUIAutomationElement;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement2_FWD_DEFINED__
#define __IUIAutomationElement2_FWD_DEFINED__
typedef interface IUIAutomationElement2 IUIAutomationElement2;
#ifdef __cplusplus
interface IUIAutomationElement2;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement3_FWD_DEFINED__
#define __IUIAutomationElement3_FWD_DEFINED__
typedef interface IUIAutomationElement3 IUIAutomationElement3;
#ifdef __cplusplus
interface IUIAutomationElement3;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement4_FWD_DEFINED__
#define __IUIAutomationElement4_FWD_DEFINED__
typedef interface IUIAutomationElement4 IUIAutomationElement4;
#ifdef __cplusplus
interface IUIAutomationElement4;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement5_FWD_DEFINED__
#define __IUIAutomationElement5_FWD_DEFINED__
typedef interface IUIAutomationElement5 IUIAutomationElement5;
#ifdef __cplusplus
interface IUIAutomationElement5;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement6_FWD_DEFINED__
#define __IUIAutomationElement6_FWD_DEFINED__
typedef interface IUIAutomationElement6 IUIAutomationElement6;
#ifdef __cplusplus
interface IUIAutomationElement6;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement7_FWD_DEFINED__
#define __IUIAutomationElement7_FWD_DEFINED__
typedef interface IUIAutomationElement7 IUIAutomationElement7;
#ifdef __cplusplus
interface IUIAutomationElement7;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement8_FWD_DEFINED__
#define __IUIAutomationElement8_FWD_DEFINED__
typedef interface IUIAutomationElement8 IUIAutomationElement8;
#ifdef __cplusplus
interface IUIAutomationElement8;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElement9_FWD_DEFINED__
#define __IUIAutomationElement9_FWD_DEFINED__
typedef interface IUIAutomationElement9 IUIAutomationElement9;
#ifdef __cplusplus
interface IUIAutomationElement9;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElementArray_FWD_DEFINED__
#define __IUIAutomationElementArray_FWD_DEFINED__
typedef interface IUIAutomationElementArray IUIAutomationElementArray;
#ifdef __cplusplus
interface IUIAutomationElementArray;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationProxyFactory_FWD_DEFINED__
#define __IUIAutomationProxyFactory_FWD_DEFINED__
typedef interface IUIAutomationProxyFactory IUIAutomationProxyFactory;
#ifdef __cplusplus
interface IUIAutomationProxyFactory;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationProxyFactoryEntry_FWD_DEFINED__
#define __IUIAutomationProxyFactoryEntry_FWD_DEFINED__
typedef interface IUIAutomationProxyFactoryEntry IUIAutomationProxyFactoryEntry;
#ifdef __cplusplus
interface IUIAutomationProxyFactoryEntry;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationProxyFactoryMapping_FWD_DEFINED__
#define __IUIAutomationProxyFactoryMapping_FWD_DEFINED__
typedef interface IUIAutomationProxyFactoryMapping IUIAutomationProxyFactoryMapping;
#ifdef __cplusplus
interface IUIAutomationProxyFactoryMapping;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationEventHandlerGroup_FWD_DEFINED__
#define __IUIAutomationEventHandlerGroup_FWD_DEFINED__
typedef interface IUIAutomationEventHandlerGroup IUIAutomationEventHandlerGroup;
#ifdef __cplusplus
interface IUIAutomationEventHandlerGroup;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomation_FWD_DEFINED__
#define __IUIAutomation_FWD_DEFINED__
typedef interface IUIAutomation IUIAutomation;
#ifdef __cplusplus
interface IUIAutomation;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomation2_FWD_DEFINED__
#define __IUIAutomation2_FWD_DEFINED__
typedef interface IUIAutomation2 IUIAutomation2;
#ifdef __cplusplus
interface IUIAutomation2;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomation3_FWD_DEFINED__
#define __IUIAutomation3_FWD_DEFINED__
typedef interface IUIAutomation3 IUIAutomation3;
#ifdef __cplusplus
interface IUIAutomation3;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomation4_FWD_DEFINED__
#define __IUIAutomation4_FWD_DEFINED__
typedef interface IUIAutomation4 IUIAutomation4;
#ifdef __cplusplus
interface IUIAutomation4;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomation5_FWD_DEFINED__
#define __IUIAutomation5_FWD_DEFINED__
typedef interface IUIAutomation5 IUIAutomation5;
#ifdef __cplusplus
interface IUIAutomation5;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomation6_FWD_DEFINED__
#define __IUIAutomation6_FWD_DEFINED__
typedef interface IUIAutomation6 IUIAutomation6;
#ifdef __cplusplus
interface IUIAutomation6;
#endif /* __cplusplus */
#endif

#ifndef __CUIAutomation_FWD_DEFINED__
#define __CUIAutomation_FWD_DEFINED__
#ifdef __cplusplus
typedef class CUIAutomation CUIAutomation;
#else
typedef struct CUIAutomation CUIAutomation;
#endif /* defined __cplusplus */
#endif /* defined __CUIAutomation_FWD_DEFINED__ */

#ifndef __CUIAutomation8_FWD_DEFINED__
#define __CUIAutomation8_FWD_DEFINED__
#ifdef __cplusplus
typedef class CUIAutomation8 CUIAutomation8;
#else
typedef struct CUIAutomation8 CUIAutomation8;
#endif /* defined __cplusplus */
#endif /* defined __CUIAutomation8_FWD_DEFINED__ */

/* Headers for imported files */

#include <uiautomationcore.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _INC_UIAUTOMATIONCOREAPI
enum TreeScope {
    TreeScope_Element = 0x1,
    TreeScope_Children = 0x2,
    TreeScope_Descendants = 0x4,
    TreeScope_Parent = 0x8,
    TreeScope_Ancestors = 0x10,
    TreeScope_Subtree = (TreeScope_Element | TreeScope_Children) | TreeScope_Descendants
};
enum PropertyConditionFlags {
    PropertyConditionFlags_None = 0x0,
    PropertyConditionFlags_IgnoreCase = 0x1
};
enum AutomationElementMode {
    AutomationElementMode_None = 0x0,
    AutomationElementMode_Full = 0x1
};
enum TreeTraversalOptions {
    TreeTraversalOptions_Default = 0x0,
    TreeTraversalOptions_PostOrder = 0x1,
    TreeTraversalOptions_LastToFirstOrder = 0x2
};
enum ConnectionRecoveryBehaviorOptions {
    ConnectionRecoveryBehaviorOptions_Disabled = 0x0,
    ConnectionRecoveryBehaviorOptions_Enabled = 0x1
};
enum CoalesceEventsOptions {
    CoalesceEventsOptions_Disabled = 0x0,
    CoalesceEventsOptions_Enabled = 0x1
};
#endif
struct ExtendedProperty {
    BSTR PropertyName;
    BSTR PropertyValue;
};
typedef void *UIA_HWND;
#ifndef __UIAutomationClient_LIBRARY_DEFINED__
#define __UIAutomationClient_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_UIAutomationClient, 0x944de083, 0x8fb8, 0x45cf, 0xbc,0xb7, 0xc4,0x77,0xac,0xb2,0xf8,0x97);

#ifndef __UIA_PatternIds_MODULE_DEFINED__
#define __UIA_PatternIds_MODULE_DEFINED__
#define UIA_InvokePatternId (10000)

#define UIA_SelectionPatternId (10001)

#define UIA_ValuePatternId (10002)

#define UIA_RangeValuePatternId (10003)

#define UIA_ScrollPatternId (10004)

#define UIA_ExpandCollapsePatternId (10005)

#define UIA_GridPatternId (10006)

#define UIA_GridItemPatternId (10007)

#define UIA_MultipleViewPatternId (10008)

#define UIA_WindowPatternId (10009)

#define UIA_SelectionItemPatternId (10010)

#define UIA_DockPatternId (10011)

#define UIA_TablePatternId (10012)

#define UIA_TableItemPatternId (10013)

#define UIA_TextPatternId (10014)

#define UIA_TogglePatternId (10015)

#define UIA_TransformPatternId (10016)

#define UIA_ScrollItemPatternId (10017)

#define UIA_LegacyIAccessiblePatternId (10018)

#define UIA_ItemContainerPatternId (10019)

#define UIA_VirtualizedItemPatternId (10020)

#define UIA_SynchronizedInputPatternId (10021)

#define UIA_ObjectModelPatternId (10022)

#define UIA_AnnotationPatternId (10023)

#define UIA_TextPattern2Id (10024)

#define UIA_StylesPatternId (10025)

#define UIA_SpreadsheetPatternId (10026)

#define UIA_SpreadsheetItemPatternId (10027)

#define UIA_TransformPattern2Id (10028)

#define UIA_TextChildPatternId (10029)

#define UIA_DragPatternId (10030)

#define UIA_DropTargetPatternId (10031)

#define UIA_TextEditPatternId (10032)

#define UIA_CustomNavigationPatternId (10033)

#endif /* __UIA_PatternIds_MODULE_DEFINED__ */
#ifndef __UIA_EventIds_MODULE_DEFINED__
#define __UIA_EventIds_MODULE_DEFINED__
#define UIA_ToolTipOpenedEventId (20000)

#define UIA_ToolTipClosedEventId (20001)

#define UIA_StructureChangedEventId (20002)

#define UIA_MenuOpenedEventId (20003)

#define UIA_AutomationPropertyChangedEventId (20004)

#define UIA_AutomationFocusChangedEventId (20005)

#define UIA_AsyncContentLoadedEventId (20006)

#define UIA_MenuClosedEventId (20007)

#define UIA_LayoutInvalidatedEventId (20008)

#define UIA_Invoke_InvokedEventId (20009)

#define UIA_SelectionItem_ElementAddedToSelectionEventId (20010)

#define UIA_SelectionItem_ElementRemovedFromSelectionEventId (20011)

#define UIA_SelectionItem_ElementSelectedEventId (20012)

#define UIA_Selection_InvalidatedEventId (20013)

#define UIA_Text_TextSelectionChangedEventId (20014)

#define UIA_Text_TextChangedEventId (20015)

#define UIA_Window_WindowOpenedEventId (20016)

#define UIA_Window_WindowClosedEventId (20017)

#define UIA_MenuModeStartEventId (20018)

#define UIA_MenuModeEndEventId (20019)

#define UIA_InputReachedTargetEventId (20020)

#define UIA_InputReachedOtherElementEventId (20021)

#define UIA_InputDiscardedEventId (20022)

#define UIA_SystemAlertEventId (20023)

#define UIA_LiveRegionChangedEventId (20024)

#define UIA_HostedFragmentRootsInvalidatedEventId (20025)

#define UIA_Drag_DragStartEventId (20026)

#define UIA_Drag_DragCancelEventId (20027)

#define UIA_Drag_DragCompleteEventId (20028)

#define UIA_DropTarget_DragEnterEventId (20029)

#define UIA_DropTarget_DragLeaveEventId (20030)

#define UIA_DropTarget_DroppedEventId (20031)

#define UIA_TextEdit_TextChangedEventId (20032)

#define UIA_TextEdit_ConversionTargetChangedEventId (20033)

#define UIA_ChangesEventId (20034)

#define UIA_NotificationEventId (20035)

#endif /* __UIA_EventIds_MODULE_DEFINED__ */
#ifndef __UIA_PropertyIds_MODULE_DEFINED__
#define __UIA_PropertyIds_MODULE_DEFINED__
#define UIA_RuntimeIdPropertyId (30000)

#define UIA_BoundingRectanglePropertyId (30001)

#define UIA_ProcessIdPropertyId (30002)

#define UIA_ControlTypePropertyId (30003)

#define UIA_LocalizedControlTypePropertyId (30004)

#define UIA_NamePropertyId (30005)

#define UIA_AcceleratorKeyPropertyId (30006)

#define UIA_AccessKeyPropertyId (30007)

#define UIA_HasKeyboardFocusPropertyId (30008)

#define UIA_IsKeyboardFocusablePropertyId (30009)

#define UIA_IsEnabledPropertyId (30010)

#define UIA_AutomationIdPropertyId (30011)

#define UIA_ClassNamePropertyId (30012)

#define UIA_HelpTextPropertyId (30013)

#define UIA_ClickablePointPropertyId (30014)

#define UIA_CulturePropertyId (30015)

#define UIA_IsControlElementPropertyId (30016)

#define UIA_IsContentElementPropertyId (30017)

#define UIA_LabeledByPropertyId (30018)

#define UIA_IsPasswordPropertyId (30019)

#define UIA_NativeWindowHandlePropertyId (30020)

#define UIA_ItemTypePropertyId (30021)

#define UIA_IsOffscreenPropertyId (30022)

#define UIA_OrientationPropertyId (30023)

#define UIA_FrameworkIdPropertyId (30024)

#define UIA_IsRequiredForFormPropertyId (30025)

#define UIA_ItemStatusPropertyId (30026)

#define UIA_IsDockPatternAvailablePropertyId (30027)

#define UIA_IsExpandCollapsePatternAvailablePropertyId (30028)

#define UIA_IsGridItemPatternAvailablePropertyId (30029)

#define UIA_IsGridPatternAvailablePropertyId (30030)

#define UIA_IsInvokePatternAvailablePropertyId (30031)

#define UIA_IsMultipleViewPatternAvailablePropertyId (30032)

#define UIA_IsRangeValuePatternAvailablePropertyId (30033)

#define UIA_IsScrollPatternAvailablePropertyId (30034)

#define UIA_IsScrollItemPatternAvailablePropertyId (30035)

#define UIA_IsSelectionItemPatternAvailablePropertyId (30036)

#define UIA_IsSelectionPatternAvailablePropertyId (30037)

#define UIA_IsTablePatternAvailablePropertyId (30038)

#define UIA_IsTableItemPatternAvailablePropertyId (30039)

#define UIA_IsTextPatternAvailablePropertyId (30040)

#define UIA_IsTogglePatternAvailablePropertyId (30041)

#define UIA_IsTransformPatternAvailablePropertyId (30042)

#define UIA_IsValuePatternAvailablePropertyId (30043)

#define UIA_IsWindowPatternAvailablePropertyId (30044)

#define UIA_ValueValuePropertyId (30045)

#define UIA_ValueIsReadOnlyPropertyId (30046)

#define UIA_RangeValueValuePropertyId (30047)

#define UIA_RangeValueIsReadOnlyPropertyId (30048)

#define UIA_RangeValueMinimumPropertyId (30049)

#define UIA_RangeValueMaximumPropertyId (30050)

#define UIA_RangeValueLargeChangePropertyId (30051)

#define UIA_RangeValueSmallChangePropertyId (30052)

#define UIA_ScrollHorizontalScrollPercentPropertyId (30053)

#define UIA_ScrollHorizontalViewSizePropertyId (30054)

#define UIA_ScrollVerticalScrollPercentPropertyId (30055)

#define UIA_ScrollVerticalViewSizePropertyId (30056)

#define UIA_ScrollHorizontallyScrollablePropertyId (30057)

#define UIA_ScrollVerticallyScrollablePropertyId (30058)

#define UIA_SelectionSelectionPropertyId (30059)

#define UIA_SelectionCanSelectMultiplePropertyId (30060)

#define UIA_SelectionIsSelectionRequiredPropertyId (30061)

#define UIA_GridRowCountPropertyId (30062)

#define UIA_GridColumnCountPropertyId (30063)

#define UIA_GridItemRowPropertyId (30064)

#define UIA_GridItemColumnPropertyId (30065)

#define UIA_GridItemRowSpanPropertyId (30066)

#define UIA_GridItemColumnSpanPropertyId (30067)

#define UIA_GridItemContainingGridPropertyId (30068)

#define UIA_DockDockPositionPropertyId (30069)

#define UIA_ExpandCollapseExpandCollapseStatePropertyId (30070)

#define UIA_MultipleViewCurrentViewPropertyId (30071)

#define UIA_MultipleViewSupportedViewsPropertyId (30072)

#define UIA_WindowCanMaximizePropertyId (30073)

#define UIA_WindowCanMinimizePropertyId (30074)

#define UIA_WindowWindowVisualStatePropertyId (30075)

#define UIA_WindowWindowInteractionStatePropertyId (30076)

#define UIA_WindowIsModalPropertyId (30077)

#define UIA_WindowIsTopmostPropertyId (30078)

#define UIA_SelectionItemIsSelectedPropertyId (30079)

#define UIA_SelectionItemSelectionContainerPropertyId (30080)

#define UIA_TableRowHeadersPropertyId (30081)

#define UIA_TableColumnHeadersPropertyId (30082)

#define UIA_TableRowOrColumnMajorPropertyId (30083)

#define UIA_TableItemRowHeaderItemsPropertyId (30084)

#define UIA_TableItemColumnHeaderItemsPropertyId (30085)

#define UIA_ToggleToggleStatePropertyId (30086)

#define UIA_TransformCanMovePropertyId (30087)

#define UIA_TransformCanResizePropertyId (30088)

#define UIA_TransformCanRotatePropertyId (30089)

#define UIA_IsLegacyIAccessiblePatternAvailablePropertyId (30090)

#define UIA_LegacyIAccessibleChildIdPropertyId (30091)

#define UIA_LegacyIAccessibleNamePropertyId (30092)

#define UIA_LegacyIAccessibleValuePropertyId (30093)

#define UIA_LegacyIAccessibleDescriptionPropertyId (30094)

#define UIA_LegacyIAccessibleRolePropertyId (30095)

#define UIA_LegacyIAccessibleStatePropertyId (30096)

#define UIA_LegacyIAccessibleHelpPropertyId (30097)

#define UIA_LegacyIAccessibleKeyboardShortcutPropertyId (30098)

#define UIA_LegacyIAccessibleSelectionPropertyId (30099)

#define UIA_LegacyIAccessibleDefaultActionPropertyId (30100)

#define UIA_AriaRolePropertyId (30101)

#define UIA_AriaPropertiesPropertyId (30102)

#define UIA_IsDataValidForFormPropertyId (30103)

#define UIA_ControllerForPropertyId (30104)

#define UIA_DescribedByPropertyId (30105)

#define UIA_FlowsToPropertyId (30106)

#define UIA_ProviderDescriptionPropertyId (30107)

#define UIA_IsItemContainerPatternAvailablePropertyId (30108)

#define UIA_IsVirtualizedItemPatternAvailablePropertyId (30109)

#define UIA_IsSynchronizedInputPatternAvailablePropertyId (30110)

#define UIA_OptimizeForVisualContentPropertyId (30111)

#define UIA_IsObjectModelPatternAvailablePropertyId (30112)

#define UIA_AnnotationAnnotationTypeIdPropertyId (30113)

#define UIA_AnnotationAnnotationTypeNamePropertyId (30114)

#define UIA_AnnotationAuthorPropertyId (30115)

#define UIA_AnnotationDateTimePropertyId (30116)

#define UIA_AnnotationTargetPropertyId (30117)

#define UIA_IsAnnotationPatternAvailablePropertyId (30118)

#define UIA_IsTextPattern2AvailablePropertyId (30119)

#define UIA_StylesStyleIdPropertyId (30120)

#define UIA_StylesStyleNamePropertyId (30121)

#define UIA_StylesFillColorPropertyId (30122)

#define UIA_StylesFillPatternStylePropertyId (30123)

#define UIA_StylesShapePropertyId (30124)

#define UIA_StylesFillPatternColorPropertyId (30125)

#define UIA_StylesExtendedPropertiesPropertyId (30126)

#define UIA_IsStylesPatternAvailablePropertyId (30127)

#define UIA_IsSpreadsheetPatternAvailablePropertyId (30128)

#define UIA_SpreadsheetItemFormulaPropertyId (30129)

#define UIA_SpreadsheetItemAnnotationObjectsPropertyId (30130)

#define UIA_SpreadsheetItemAnnotationTypesPropertyId (30131)

#define UIA_IsSpreadsheetItemPatternAvailablePropertyId (30132)

#define UIA_Transform2CanZoomPropertyId (30133)

#define UIA_IsTransformPattern2AvailablePropertyId (30134)

#define UIA_LiveSettingPropertyId (30135)

#define UIA_IsTextChildPatternAvailablePropertyId (30136)

#define UIA_IsDragPatternAvailablePropertyId (30137)

#define UIA_DragIsGrabbedPropertyId (30138)

#define UIA_DragDropEffectPropertyId (30139)

#define UIA_DragDropEffectsPropertyId (30140)

#define UIA_IsDropTargetPatternAvailablePropertyId (30141)

#define UIA_DropTargetDropTargetEffectPropertyId (30142)

#define UIA_DropTargetDropTargetEffectsPropertyId (30143)

#define UIA_DragGrabbedItemsPropertyId (30144)

#define UIA_Transform2ZoomLevelPropertyId (30145)

#define UIA_Transform2ZoomMinimumPropertyId (30146)

#define UIA_Transform2ZoomMaximumPropertyId (30147)

#define UIA_FlowsFromPropertyId (30148)

#define UIA_IsTextEditPatternAvailablePropertyId (30149)

#define UIA_IsPeripheralPropertyId (30150)

#define UIA_IsCustomNavigationPatternAvailablePropertyId (30151)

#define UIA_PositionInSetPropertyId (30152)

#define UIA_SizeOfSetPropertyId (30153)

#define UIA_LevelPropertyId (30154)

#define UIA_AnnotationTypesPropertyId (30155)

#define UIA_AnnotationObjectsPropertyId (30156)

#define UIA_LandmarkTypePropertyId (30157)

#define UIA_LocalizedLandmarkTypePropertyId (30158)

#define UIA_FullDescriptionPropertyId (30159)

#define UIA_FillColorPropertyId (30160)

#define UIA_OutlineColorPropertyId (30161)

#define UIA_FillTypePropertyId (30162)

#define UIA_VisualEffectsPropertyId (30163)

#define UIA_OutlineThicknessPropertyId (30164)

#define UIA_CenterPointPropertyId (30165)

#define UIA_RotationPropertyId (30166)

#define UIA_SizePropertyId (30167)

#define UIA_IsSelectionPattern2AvailablePropertyId (30168)

#define UIA_Selection2FirstSelectedItemPropertyId (30169)

#define UIA_Selection2LastSelectedItemPropertyId (30170)

#define UIA_Selection2CurrentSelectedItemPropertyId (30171)

#define UIA_Selection2ItemCountPropertyId (30172)

#define UIA_HeadingLevelPropertyId (30173)

#define UIA_IsDialogPropertyId (30174)

#endif /* __UIA_PropertyIds_MODULE_DEFINED__ */
#ifndef __UIA_TextAttributeIds_MODULE_DEFINED__
#define __UIA_TextAttributeIds_MODULE_DEFINED__
#define UIA_AnimationStyleAttributeId (40000)

#define UIA_BackgroundColorAttributeId (40001)

#define UIA_BulletStyleAttributeId (40002)

#define UIA_CapStyleAttributeId (40003)

#define UIA_CultureAttributeId (40004)

#define UIA_FontNameAttributeId (40005)

#define UIA_FontSizeAttributeId (40006)

#define UIA_FontWeightAttributeId (40007)

#define UIA_ForegroundColorAttributeId (40008)

#define UIA_HorizontalTextAlignmentAttributeId (40009)

#define UIA_IndentationFirstLineAttributeId (40010)

#define UIA_IndentationLeadingAttributeId (40011)

#define UIA_IndentationTrailingAttributeId (40012)

#define UIA_IsHiddenAttributeId (40013)

#define UIA_IsItalicAttributeId (40014)

#define UIA_IsReadOnlyAttributeId (40015)

#define UIA_IsSubscriptAttributeId (40016)

#define UIA_IsSuperscriptAttributeId (40017)

#define UIA_MarginBottomAttributeId (40018)

#define UIA_MarginLeadingAttributeId (40019)

#define UIA_MarginTopAttributeId (40020)

#define UIA_MarginTrailingAttributeId (40021)

#define UIA_OutlineStylesAttributeId (40022)

#define UIA_OverlineColorAttributeId (40023)

#define UIA_OverlineStyleAttributeId (40024)

#define UIA_StrikethroughColorAttributeId (40025)

#define UIA_StrikethroughStyleAttributeId (40026)

#define UIA_TabsAttributeId (40027)

#define UIA_TextFlowDirectionsAttributeId (40028)

#define UIA_UnderlineColorAttributeId (40029)

#define UIA_UnderlineStyleAttributeId (40030)

#define UIA_AnnotationTypesAttributeId (40031)

#define UIA_AnnotationObjectsAttributeId (40032)

#define UIA_StyleNameAttributeId (40033)

#define UIA_StyleIdAttributeId (40034)

#define UIA_LinkAttributeId (40035)

#define UIA_IsActiveAttributeId (40036)

#define UIA_SelectionActiveEndAttributeId (40037)

#define UIA_CaretPositionAttributeId (40038)

#define UIA_CaretBidiModeAttributeId (40039)

#define UIA_LineSpacingAttributeId (40040)

#define UIA_BeforeParagraphSpacingAttributeId (40041)

#define UIA_AfterParagraphSpacingAttributeId (40042)

#define UIA_SayAsInterpretAsAttributeId (40043)

#endif /* __UIA_TextAttributeIds_MODULE_DEFINED__ */
#ifndef __UIA_ControlTypeIds_MODULE_DEFINED__
#define __UIA_ControlTypeIds_MODULE_DEFINED__
#define UIA_ButtonControlTypeId (50000)

#define UIA_CalendarControlTypeId (50001)

#define UIA_CheckBoxControlTypeId (50002)

#define UIA_ComboBoxControlTypeId (50003)

#define UIA_EditControlTypeId (50004)

#define UIA_HyperlinkControlTypeId (50005)

#define UIA_ImageControlTypeId (50006)

#define UIA_ListItemControlTypeId (50007)

#define UIA_ListControlTypeId (50008)

#define UIA_MenuControlTypeId (50009)

#define UIA_MenuBarControlTypeId (50010)

#define UIA_MenuItemControlTypeId (50011)

#define UIA_ProgressBarControlTypeId (50012)

#define UIA_RadioButtonControlTypeId (50013)

#define UIA_ScrollBarControlTypeId (50014)

#define UIA_SliderControlTypeId (50015)

#define UIA_SpinnerControlTypeId (50016)

#define UIA_StatusBarControlTypeId (50017)

#define UIA_TabControlTypeId (50018)

#define UIA_TabItemControlTypeId (50019)

#define UIA_TextControlTypeId (50020)

#define UIA_ToolBarControlTypeId (50021)

#define UIA_ToolTipControlTypeId (50022)

#define UIA_TreeControlTypeId (50023)

#define UIA_TreeItemControlTypeId (50024)

#define UIA_CustomControlTypeId (50025)

#define UIA_GroupControlTypeId (50026)

#define UIA_ThumbControlTypeId (50027)

#define UIA_DataGridControlTypeId (50028)

#define UIA_DataItemControlTypeId (50029)

#define UIA_DocumentControlTypeId (50030)

#define UIA_SplitButtonControlTypeId (50031)

#define UIA_WindowControlTypeId (50032)

#define UIA_PaneControlTypeId (50033)

#define UIA_HeaderControlTypeId (50034)

#define UIA_HeaderItemControlTypeId (50035)

#define UIA_TableControlTypeId (50036)

#define UIA_TitleBarControlTypeId (50037)

#define UIA_SeparatorControlTypeId (50038)

#define UIA_SemanticZoomControlTypeId (50039)

#define UIA_AppBarControlTypeId (50040)

#endif /* __UIA_ControlTypeIds_MODULE_DEFINED__ */
#ifndef __UIA_AnnotationTypes_MODULE_DEFINED__
#define __UIA_AnnotationTypes_MODULE_DEFINED__
#define AnnotationType_Unknown (60000)

#define AnnotationType_SpellingError (60001)

#define AnnotationType_GrammarError (60002)

#define AnnotationType_Comment (60003)

#define AnnotationType_FormulaError (60004)

#define AnnotationType_TrackChanges (60005)

#define AnnotationType_Header (60006)

#define AnnotationType_Footer (60007)

#define AnnotationType_Highlighted (60008)

#define AnnotationType_Endnote (60009)

#define AnnotationType_Footnote (60010)

#define AnnotationType_InsertionChange (60011)

#define AnnotationType_DeletionChange (60012)

#define AnnotationType_MoveChange (60013)

#define AnnotationType_FormatChange (60014)

#define AnnotationType_UnsyncedChange (60015)

#define AnnotationType_EditingLockedChange (60016)

#define AnnotationType_ExternalChange (60017)

#define AnnotationType_ConflictingChange (60018)

#define AnnotationType_Author (60019)

#define AnnotationType_AdvancedProofingIssue (60020)

#define AnnotationType_DataValidationError (60021)

#define AnnotationType_CircularReferenceError (60022)

#define AnnotationType_Mathematics (60023)

#define AnnotationType_Sensitive (60024)

#endif /* __UIA_AnnotationTypes_MODULE_DEFINED__ */
#ifndef __UIA_StyleIds_MODULE_DEFINED__
#define __UIA_StyleIds_MODULE_DEFINED__
#define StyleId_Custom (70000)

#define StyleId_Heading1 (70001)

#define StyleId_Heading2 (70002)

#define StyleId_Heading3 (70003)

#define StyleId_Heading4 (70004)

#define StyleId_Heading5 (70005)

#define StyleId_Heading6 (70006)

#define StyleId_Heading7 (70007)

#define StyleId_Heading8 (70008)

#define StyleId_Heading9 (70009)

#define StyleId_Title (70010)

#define StyleId_Subtitle (70011)

#define StyleId_Normal (70012)

#define StyleId_Emphasis (70013)

#define StyleId_Quote (70014)

#define StyleId_BulletedList (70015)

#define StyleId_NumberedList (70016)

#endif /* __UIA_StyleIds_MODULE_DEFINED__ */
#ifndef __UIA_LandmarkTypeIds_MODULE_DEFINED__
#define __UIA_LandmarkTypeIds_MODULE_DEFINED__
#define UIA_CustomLandmarkTypeId (80000)

#define UIA_FormLandmarkTypeId (80001)

#define UIA_MainLandmarkTypeId (80002)

#define UIA_NavigationLandmarkTypeId (80003)

#define UIA_SearchLandmarkTypeId (80004)

#endif /* __UIA_LandmarkTypeIds_MODULE_DEFINED__ */
#ifndef __IUIAutomationElement_FWD_DEFINED__
#define __IUIAutomationElement_FWD_DEFINED__
typedef interface IUIAutomationElement IUIAutomationElement;
#ifdef __cplusplus
interface IUIAutomationElement;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationElementArray_FWD_DEFINED__
#define __IUIAutomationElementArray_FWD_DEFINED__
typedef interface IUIAutomationElementArray IUIAutomationElementArray;
#ifdef __cplusplus
interface IUIAutomationElementArray;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IUIAutomationCondition interface
 */
#ifndef __IUIAutomationCondition_INTERFACE_DEFINED__
#define __IUIAutomationCondition_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationCondition, 0x352ffba8, 0x0973, 0x437c, 0xa6,0x1f, 0xf6,0x4c,0xaf,0xd8,0x1d,0xf9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("352ffba8-0973-437c-a61f-f64cafd81df9")
IUIAutomationCondition : public IUnknown
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationCondition, 0x352ffba8, 0x0973, 0x437c, 0xa6,0x1f, 0xf6,0x4c,0xaf,0xd8,0x1d,0xf9)
#endif
#else
typedef struct IUIAutomationConditionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationCondition *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationCondition *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationCondition *This);

    END_INTERFACE
} IUIAutomationConditionVtbl;

interface IUIAutomationCondition {
    CONST_VTBL IUIAutomationConditionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationCondition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationCondition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationCondition_Release(This) (This)->lpVtbl->Release(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationCondition_QueryInterface(IUIAutomationCondition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationCondition_AddRef(IUIAutomationCondition* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationCondition_Release(IUIAutomationCondition* This) {
    return This->lpVtbl->Release(This);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationCondition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationBoolCondition interface
 */
#ifndef __IUIAutomationBoolCondition_INTERFACE_DEFINED__
#define __IUIAutomationBoolCondition_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationBoolCondition, 0x1b4e1f2e, 0x75eb, 0x4d0b, 0x89,0x52, 0x5a,0x69,0x98,0x8e,0x23,0x07);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1b4e1f2e-75eb-4d0b-8952-5a69988e2307")
IUIAutomationBoolCondition : public IUIAutomationCondition
{
    virtual HRESULT STDMETHODCALLTYPE get_BooleanValue(
        WINBOOL *boolVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationBoolCondition, 0x1b4e1f2e, 0x75eb, 0x4d0b, 0x89,0x52, 0x5a,0x69,0x98,0x8e,0x23,0x07)
#endif
#else
typedef struct IUIAutomationBoolConditionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationBoolCondition *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationBoolCondition *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationBoolCondition *This);

    /*** IUIAutomationBoolCondition methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BooleanValue)(
        IUIAutomationBoolCondition *This,
        WINBOOL *boolVal);

    END_INTERFACE
} IUIAutomationBoolConditionVtbl;

interface IUIAutomationBoolCondition {
    CONST_VTBL IUIAutomationBoolConditionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationBoolCondition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationBoolCondition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationBoolCondition_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationBoolCondition methods ***/
#define IUIAutomationBoolCondition_get_BooleanValue(This,boolVal) (This)->lpVtbl->get_BooleanValue(This,boolVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationBoolCondition_QueryInterface(IUIAutomationBoolCondition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationBoolCondition_AddRef(IUIAutomationBoolCondition* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationBoolCondition_Release(IUIAutomationBoolCondition* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationBoolCondition methods ***/
static inline HRESULT IUIAutomationBoolCondition_get_BooleanValue(IUIAutomationBoolCondition* This,WINBOOL *boolVal) {
    return This->lpVtbl->get_BooleanValue(This,boolVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationBoolCondition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationPropertyCondition interface
 */
#ifndef __IUIAutomationPropertyCondition_INTERFACE_DEFINED__
#define __IUIAutomationPropertyCondition_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationPropertyCondition, 0x99ebf2cb, 0x5578, 0x4267, 0x9a,0xd4, 0xaf,0xd6,0xea,0x77,0xe9,0x4b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("99ebf2cb-5578-4267-9ad4-afd6ea77e94b")
IUIAutomationPropertyCondition : public IUIAutomationCondition
{
    virtual HRESULT STDMETHODCALLTYPE get_PropertyId(
        PROPERTYID *propertyId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PropertyValue(
        VARIANT *propertyValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PropertyConditionFlags(
        enum PropertyConditionFlags *flags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationPropertyCondition, 0x99ebf2cb, 0x5578, 0x4267, 0x9a,0xd4, 0xaf,0xd6,0xea,0x77,0xe9,0x4b)
#endif
#else
typedef struct IUIAutomationPropertyConditionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationPropertyCondition *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationPropertyCondition *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationPropertyCondition *This);

    /*** IUIAutomationPropertyCondition methods ***/
    HRESULT (STDMETHODCALLTYPE *get_PropertyId)(
        IUIAutomationPropertyCondition *This,
        PROPERTYID *propertyId);

    HRESULT (STDMETHODCALLTYPE *get_PropertyValue)(
        IUIAutomationPropertyCondition *This,
        VARIANT *propertyValue);

    HRESULT (STDMETHODCALLTYPE *get_PropertyConditionFlags)(
        IUIAutomationPropertyCondition *This,
        enum PropertyConditionFlags *flags);

    END_INTERFACE
} IUIAutomationPropertyConditionVtbl;

interface IUIAutomationPropertyCondition {
    CONST_VTBL IUIAutomationPropertyConditionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationPropertyCondition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationPropertyCondition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationPropertyCondition_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationPropertyCondition methods ***/
#define IUIAutomationPropertyCondition_get_PropertyId(This,propertyId) (This)->lpVtbl->get_PropertyId(This,propertyId)
#define IUIAutomationPropertyCondition_get_PropertyValue(This,propertyValue) (This)->lpVtbl->get_PropertyValue(This,propertyValue)
#define IUIAutomationPropertyCondition_get_PropertyConditionFlags(This,flags) (This)->lpVtbl->get_PropertyConditionFlags(This,flags)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationPropertyCondition_QueryInterface(IUIAutomationPropertyCondition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationPropertyCondition_AddRef(IUIAutomationPropertyCondition* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationPropertyCondition_Release(IUIAutomationPropertyCondition* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationPropertyCondition methods ***/
static inline HRESULT IUIAutomationPropertyCondition_get_PropertyId(IUIAutomationPropertyCondition* This,PROPERTYID *propertyId) {
    return This->lpVtbl->get_PropertyId(This,propertyId);
}
static inline HRESULT IUIAutomationPropertyCondition_get_PropertyValue(IUIAutomationPropertyCondition* This,VARIANT *propertyValue) {
    return This->lpVtbl->get_PropertyValue(This,propertyValue);
}
static inline HRESULT IUIAutomationPropertyCondition_get_PropertyConditionFlags(IUIAutomationPropertyCondition* This,enum PropertyConditionFlags *flags) {
    return This->lpVtbl->get_PropertyConditionFlags(This,flags);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationPropertyCondition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationAndCondition interface
 */
#ifndef __IUIAutomationAndCondition_INTERFACE_DEFINED__
#define __IUIAutomationAndCondition_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationAndCondition, 0xa7d0af36, 0xb912, 0x45fe, 0x98,0x55, 0x09,0x1d,0xdc,0x17,0x4a,0xec);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a7d0af36-b912-45fe-9855-091ddc174aec")
IUIAutomationAndCondition : public IUIAutomationCondition
{
    virtual HRESULT STDMETHODCALLTYPE get_ChildCount(
        int *childCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetChildrenAsNativeArray(
        IUIAutomationCondition ***childArray,
        int *childArrayCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetChildren(
        SAFEARRAY **childArray) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationAndCondition, 0xa7d0af36, 0xb912, 0x45fe, 0x98,0x55, 0x09,0x1d,0xdc,0x17,0x4a,0xec)
#endif
#else
typedef struct IUIAutomationAndConditionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationAndCondition *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationAndCondition *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationAndCondition *This);

    /*** IUIAutomationAndCondition methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ChildCount)(
        IUIAutomationAndCondition *This,
        int *childCount);

    HRESULT (STDMETHODCALLTYPE *GetChildrenAsNativeArray)(
        IUIAutomationAndCondition *This,
        IUIAutomationCondition ***childArray,
        int *childArrayCount);

    HRESULT (STDMETHODCALLTYPE *GetChildren)(
        IUIAutomationAndCondition *This,
        SAFEARRAY **childArray);

    END_INTERFACE
} IUIAutomationAndConditionVtbl;

interface IUIAutomationAndCondition {
    CONST_VTBL IUIAutomationAndConditionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationAndCondition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationAndCondition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationAndCondition_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationAndCondition methods ***/
#define IUIAutomationAndCondition_get_ChildCount(This,childCount) (This)->lpVtbl->get_ChildCount(This,childCount)
#define IUIAutomationAndCondition_GetChildrenAsNativeArray(This,childArray,childArrayCount) (This)->lpVtbl->GetChildrenAsNativeArray(This,childArray,childArrayCount)
#define IUIAutomationAndCondition_GetChildren(This,childArray) (This)->lpVtbl->GetChildren(This,childArray)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationAndCondition_QueryInterface(IUIAutomationAndCondition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationAndCondition_AddRef(IUIAutomationAndCondition* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationAndCondition_Release(IUIAutomationAndCondition* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationAndCondition methods ***/
static inline HRESULT IUIAutomationAndCondition_get_ChildCount(IUIAutomationAndCondition* This,int *childCount) {
    return This->lpVtbl->get_ChildCount(This,childCount);
}
static inline HRESULT IUIAutomationAndCondition_GetChildrenAsNativeArray(IUIAutomationAndCondition* This,IUIAutomationCondition ***childArray,int *childArrayCount) {
    return This->lpVtbl->GetChildrenAsNativeArray(This,childArray,childArrayCount);
}
static inline HRESULT IUIAutomationAndCondition_GetChildren(IUIAutomationAndCondition* This,SAFEARRAY **childArray) {
    return This->lpVtbl->GetChildren(This,childArray);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationAndCondition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationOrCondition interface
 */
#ifndef __IUIAutomationOrCondition_INTERFACE_DEFINED__
#define __IUIAutomationOrCondition_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationOrCondition, 0x8753f032, 0x3db1, 0x47b5, 0xa1,0xfc, 0x6e,0x34,0xa2,0x66,0xc7,0x12);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8753f032-3db1-47b5-a1fc-6e34a266c712")
IUIAutomationOrCondition : public IUIAutomationCondition
{
    virtual HRESULT STDMETHODCALLTYPE get_ChildCount(
        int *childCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetChildrenAsNativeArray(
        IUIAutomationCondition ***childArray,
        int *childArrayCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetChildren(
        SAFEARRAY **childArray) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationOrCondition, 0x8753f032, 0x3db1, 0x47b5, 0xa1,0xfc, 0x6e,0x34,0xa2,0x66,0xc7,0x12)
#endif
#else
typedef struct IUIAutomationOrConditionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationOrCondition *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationOrCondition *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationOrCondition *This);

    /*** IUIAutomationOrCondition methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ChildCount)(
        IUIAutomationOrCondition *This,
        int *childCount);

    HRESULT (STDMETHODCALLTYPE *GetChildrenAsNativeArray)(
        IUIAutomationOrCondition *This,
        IUIAutomationCondition ***childArray,
        int *childArrayCount);

    HRESULT (STDMETHODCALLTYPE *GetChildren)(
        IUIAutomationOrCondition *This,
        SAFEARRAY **childArray);

    END_INTERFACE
} IUIAutomationOrConditionVtbl;

interface IUIAutomationOrCondition {
    CONST_VTBL IUIAutomationOrConditionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationOrCondition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationOrCondition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationOrCondition_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationOrCondition methods ***/
#define IUIAutomationOrCondition_get_ChildCount(This,childCount) (This)->lpVtbl->get_ChildCount(This,childCount)
#define IUIAutomationOrCondition_GetChildrenAsNativeArray(This,childArray,childArrayCount) (This)->lpVtbl->GetChildrenAsNativeArray(This,childArray,childArrayCount)
#define IUIAutomationOrCondition_GetChildren(This,childArray) (This)->lpVtbl->GetChildren(This,childArray)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationOrCondition_QueryInterface(IUIAutomationOrCondition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationOrCondition_AddRef(IUIAutomationOrCondition* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationOrCondition_Release(IUIAutomationOrCondition* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationOrCondition methods ***/
static inline HRESULT IUIAutomationOrCondition_get_ChildCount(IUIAutomationOrCondition* This,int *childCount) {
    return This->lpVtbl->get_ChildCount(This,childCount);
}
static inline HRESULT IUIAutomationOrCondition_GetChildrenAsNativeArray(IUIAutomationOrCondition* This,IUIAutomationCondition ***childArray,int *childArrayCount) {
    return This->lpVtbl->GetChildrenAsNativeArray(This,childArray,childArrayCount);
}
static inline HRESULT IUIAutomationOrCondition_GetChildren(IUIAutomationOrCondition* This,SAFEARRAY **childArray) {
    return This->lpVtbl->GetChildren(This,childArray);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationOrCondition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationNotCondition interface
 */
#ifndef __IUIAutomationNotCondition_INTERFACE_DEFINED__
#define __IUIAutomationNotCondition_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationNotCondition, 0xf528b657, 0x847b, 0x498c, 0x88,0x96, 0xd5,0x2b,0x56,0x54,0x07,0xa1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f528b657-847b-498c-8896-d52b565407a1")
IUIAutomationNotCondition : public IUIAutomationCondition
{
    virtual HRESULT STDMETHODCALLTYPE GetChild(
        IUIAutomationCondition **condition) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationNotCondition, 0xf528b657, 0x847b, 0x498c, 0x88,0x96, 0xd5,0x2b,0x56,0x54,0x07,0xa1)
#endif
#else
typedef struct IUIAutomationNotConditionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationNotCondition *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationNotCondition *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationNotCondition *This);

    /*** IUIAutomationNotCondition methods ***/
    HRESULT (STDMETHODCALLTYPE *GetChild)(
        IUIAutomationNotCondition *This,
        IUIAutomationCondition **condition);

    END_INTERFACE
} IUIAutomationNotConditionVtbl;

interface IUIAutomationNotCondition {
    CONST_VTBL IUIAutomationNotConditionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationNotCondition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationNotCondition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationNotCondition_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationNotCondition methods ***/
#define IUIAutomationNotCondition_GetChild(This,condition) (This)->lpVtbl->GetChild(This,condition)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationNotCondition_QueryInterface(IUIAutomationNotCondition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationNotCondition_AddRef(IUIAutomationNotCondition* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationNotCondition_Release(IUIAutomationNotCondition* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationNotCondition methods ***/
static inline HRESULT IUIAutomationNotCondition_GetChild(IUIAutomationNotCondition* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->GetChild(This,condition);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationNotCondition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationCacheRequest interface
 */
#ifndef __IUIAutomationCacheRequest_INTERFACE_DEFINED__
#define __IUIAutomationCacheRequest_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationCacheRequest, 0xb32a92b5, 0xbc25, 0x4078, 0x9c,0x08, 0xd7,0xee,0x95,0xc4,0x8e,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b32a92b5-bc25-4078-9c08-d7ee95c48e03")
IUIAutomationCacheRequest : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddProperty(
        PROPERTYID propertyId) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPattern(
        PATTERNID patternId) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IUIAutomationCacheRequest **clonedRequest) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TreeScope(
        enum TreeScope *scope) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TreeScope(
        enum TreeScope scope) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TreeFilter(
        IUIAutomationCondition **filter) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TreeFilter(
        IUIAutomationCondition *filter) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AutomationElementMode(
        enum AutomationElementMode *mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AutomationElementMode(
        enum AutomationElementMode mode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationCacheRequest, 0xb32a92b5, 0xbc25, 0x4078, 0x9c,0x08, 0xd7,0xee,0x95,0xc4,0x8e,0x03)
#endif
#else
typedef struct IUIAutomationCacheRequestVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationCacheRequest *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationCacheRequest *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationCacheRequest *This);

    /*** IUIAutomationCacheRequest methods ***/
    HRESULT (STDMETHODCALLTYPE *AddProperty)(
        IUIAutomationCacheRequest *This,
        PROPERTYID propertyId);

    HRESULT (STDMETHODCALLTYPE *AddPattern)(
        IUIAutomationCacheRequest *This,
        PATTERNID patternId);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IUIAutomationCacheRequest *This,
        IUIAutomationCacheRequest **clonedRequest);

    HRESULT (STDMETHODCALLTYPE *get_TreeScope)(
        IUIAutomationCacheRequest *This,
        enum TreeScope *scope);

    HRESULT (STDMETHODCALLTYPE *put_TreeScope)(
        IUIAutomationCacheRequest *This,
        enum TreeScope scope);

    HRESULT (STDMETHODCALLTYPE *get_TreeFilter)(
        IUIAutomationCacheRequest *This,
        IUIAutomationCondition **filter);

    HRESULT (STDMETHODCALLTYPE *put_TreeFilter)(
        IUIAutomationCacheRequest *This,
        IUIAutomationCondition *filter);

    HRESULT (STDMETHODCALLTYPE *get_AutomationElementMode)(
        IUIAutomationCacheRequest *This,
        enum AutomationElementMode *mode);

    HRESULT (STDMETHODCALLTYPE *put_AutomationElementMode)(
        IUIAutomationCacheRequest *This,
        enum AutomationElementMode mode);

    END_INTERFACE
} IUIAutomationCacheRequestVtbl;

interface IUIAutomationCacheRequest {
    CONST_VTBL IUIAutomationCacheRequestVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationCacheRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationCacheRequest_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationCacheRequest_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationCacheRequest methods ***/
#define IUIAutomationCacheRequest_AddProperty(This,propertyId) (This)->lpVtbl->AddProperty(This,propertyId)
#define IUIAutomationCacheRequest_AddPattern(This,patternId) (This)->lpVtbl->AddPattern(This,patternId)
#define IUIAutomationCacheRequest_Clone(This,clonedRequest) (This)->lpVtbl->Clone(This,clonedRequest)
#define IUIAutomationCacheRequest_get_TreeScope(This,scope) (This)->lpVtbl->get_TreeScope(This,scope)
#define IUIAutomationCacheRequest_put_TreeScope(This,scope) (This)->lpVtbl->put_TreeScope(This,scope)
#define IUIAutomationCacheRequest_get_TreeFilter(This,filter) (This)->lpVtbl->get_TreeFilter(This,filter)
#define IUIAutomationCacheRequest_put_TreeFilter(This,filter) (This)->lpVtbl->put_TreeFilter(This,filter)
#define IUIAutomationCacheRequest_get_AutomationElementMode(This,mode) (This)->lpVtbl->get_AutomationElementMode(This,mode)
#define IUIAutomationCacheRequest_put_AutomationElementMode(This,mode) (This)->lpVtbl->put_AutomationElementMode(This,mode)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationCacheRequest_QueryInterface(IUIAutomationCacheRequest* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationCacheRequest_AddRef(IUIAutomationCacheRequest* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationCacheRequest_Release(IUIAutomationCacheRequest* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationCacheRequest methods ***/
static inline HRESULT IUIAutomationCacheRequest_AddProperty(IUIAutomationCacheRequest* This,PROPERTYID propertyId) {
    return This->lpVtbl->AddProperty(This,propertyId);
}
static inline HRESULT IUIAutomationCacheRequest_AddPattern(IUIAutomationCacheRequest* This,PATTERNID patternId) {
    return This->lpVtbl->AddPattern(This,patternId);
}
static inline HRESULT IUIAutomationCacheRequest_Clone(IUIAutomationCacheRequest* This,IUIAutomationCacheRequest **clonedRequest) {
    return This->lpVtbl->Clone(This,clonedRequest);
}
static inline HRESULT IUIAutomationCacheRequest_get_TreeScope(IUIAutomationCacheRequest* This,enum TreeScope *scope) {
    return This->lpVtbl->get_TreeScope(This,scope);
}
static inline HRESULT IUIAutomationCacheRequest_put_TreeScope(IUIAutomationCacheRequest* This,enum TreeScope scope) {
    return This->lpVtbl->put_TreeScope(This,scope);
}
static inline HRESULT IUIAutomationCacheRequest_get_TreeFilter(IUIAutomationCacheRequest* This,IUIAutomationCondition **filter) {
    return This->lpVtbl->get_TreeFilter(This,filter);
}
static inline HRESULT IUIAutomationCacheRequest_put_TreeFilter(IUIAutomationCacheRequest* This,IUIAutomationCondition *filter) {
    return This->lpVtbl->put_TreeFilter(This,filter);
}
static inline HRESULT IUIAutomationCacheRequest_get_AutomationElementMode(IUIAutomationCacheRequest* This,enum AutomationElementMode *mode) {
    return This->lpVtbl->get_AutomationElementMode(This,mode);
}
static inline HRESULT IUIAutomationCacheRequest_put_AutomationElementMode(IUIAutomationCacheRequest* This,enum AutomationElementMode mode) {
    return This->lpVtbl->put_AutomationElementMode(This,mode);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationCacheRequest_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTreeWalker interface
 */
#ifndef __IUIAutomationTreeWalker_INTERFACE_DEFINED__
#define __IUIAutomationTreeWalker_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTreeWalker, 0x4042c624, 0x389c, 0x4afc, 0xa6,0x30, 0x9d,0xf8,0x54,0xa5,0x41,0xfc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4042c624-389c-4afc-a630-9df854a541fc")
IUIAutomationTreeWalker : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetParentElement(
        IUIAutomationElement *element,
        IUIAutomationElement **parent) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFirstChildElement(
        IUIAutomationElement *element,
        IUIAutomationElement **first) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLastChildElement(
        IUIAutomationElement *element,
        IUIAutomationElement **last) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextSiblingElement(
        IUIAutomationElement *element,
        IUIAutomationElement **next) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreviousSiblingElement(
        IUIAutomationElement *element,
        IUIAutomationElement **previous) = 0;

    virtual HRESULT STDMETHODCALLTYPE NormalizeElement(
        IUIAutomationElement *element,
        IUIAutomationElement **normalized) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetParentElementBuildCache(
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **parent) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFirstChildElementBuildCache(
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **first) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLastChildElementBuildCache(
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **last) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextSiblingElementBuildCache(
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **next) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreviousSiblingElementBuildCache(
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **previous) = 0;

    virtual HRESULT STDMETHODCALLTYPE NormalizeElementBuildCache(
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **normalized) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Condition(
        IUIAutomationCondition **condition) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTreeWalker, 0x4042c624, 0x389c, 0x4afc, 0xa6,0x30, 0x9d,0xf8,0x54,0xa5,0x41,0xfc)
#endif
#else
typedef struct IUIAutomationTreeWalkerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTreeWalker *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTreeWalker *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTreeWalker *This);

    /*** IUIAutomationTreeWalker methods ***/
    HRESULT (STDMETHODCALLTYPE *GetParentElement)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetFirstChildElement)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationElement **first);

    HRESULT (STDMETHODCALLTYPE *GetLastChildElement)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationElement **last);

    HRESULT (STDMETHODCALLTYPE *GetNextSiblingElement)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationElement **next);

    HRESULT (STDMETHODCALLTYPE *GetPreviousSiblingElement)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationElement **previous);

    HRESULT (STDMETHODCALLTYPE *NormalizeElement)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationElement **normalized);

    HRESULT (STDMETHODCALLTYPE *GetParentElementBuildCache)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetFirstChildElementBuildCache)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **first);

    HRESULT (STDMETHODCALLTYPE *GetLastChildElementBuildCache)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **last);

    HRESULT (STDMETHODCALLTYPE *GetNextSiblingElementBuildCache)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **next);

    HRESULT (STDMETHODCALLTYPE *GetPreviousSiblingElementBuildCache)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **previous);

    HRESULT (STDMETHODCALLTYPE *NormalizeElementBuildCache)(
        IUIAutomationTreeWalker *This,
        IUIAutomationElement *element,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **normalized);

    HRESULT (STDMETHODCALLTYPE *get_Condition)(
        IUIAutomationTreeWalker *This,
        IUIAutomationCondition **condition);

    END_INTERFACE
} IUIAutomationTreeWalkerVtbl;

interface IUIAutomationTreeWalker {
    CONST_VTBL IUIAutomationTreeWalkerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTreeWalker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTreeWalker_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTreeWalker_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTreeWalker methods ***/
#define IUIAutomationTreeWalker_GetParentElement(This,element,parent) (This)->lpVtbl->GetParentElement(This,element,parent)
#define IUIAutomationTreeWalker_GetFirstChildElement(This,element,first) (This)->lpVtbl->GetFirstChildElement(This,element,first)
#define IUIAutomationTreeWalker_GetLastChildElement(This,element,last) (This)->lpVtbl->GetLastChildElement(This,element,last)
#define IUIAutomationTreeWalker_GetNextSiblingElement(This,element,next) (This)->lpVtbl->GetNextSiblingElement(This,element,next)
#define IUIAutomationTreeWalker_GetPreviousSiblingElement(This,element,previous) (This)->lpVtbl->GetPreviousSiblingElement(This,element,previous)
#define IUIAutomationTreeWalker_NormalizeElement(This,element,normalized) (This)->lpVtbl->NormalizeElement(This,element,normalized)
#define IUIAutomationTreeWalker_GetParentElementBuildCache(This,element,cacheRequest,parent) (This)->lpVtbl->GetParentElementBuildCache(This,element,cacheRequest,parent)
#define IUIAutomationTreeWalker_GetFirstChildElementBuildCache(This,element,cacheRequest,first) (This)->lpVtbl->GetFirstChildElementBuildCache(This,element,cacheRequest,first)
#define IUIAutomationTreeWalker_GetLastChildElementBuildCache(This,element,cacheRequest,last) (This)->lpVtbl->GetLastChildElementBuildCache(This,element,cacheRequest,last)
#define IUIAutomationTreeWalker_GetNextSiblingElementBuildCache(This,element,cacheRequest,next) (This)->lpVtbl->GetNextSiblingElementBuildCache(This,element,cacheRequest,next)
#define IUIAutomationTreeWalker_GetPreviousSiblingElementBuildCache(This,element,cacheRequest,previous) (This)->lpVtbl->GetPreviousSiblingElementBuildCache(This,element,cacheRequest,previous)
#define IUIAutomationTreeWalker_NormalizeElementBuildCache(This,element,cacheRequest,normalized) (This)->lpVtbl->NormalizeElementBuildCache(This,element,cacheRequest,normalized)
#define IUIAutomationTreeWalker_get_Condition(This,condition) (This)->lpVtbl->get_Condition(This,condition)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTreeWalker_QueryInterface(IUIAutomationTreeWalker* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTreeWalker_AddRef(IUIAutomationTreeWalker* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTreeWalker_Release(IUIAutomationTreeWalker* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTreeWalker methods ***/
static inline HRESULT IUIAutomationTreeWalker_GetParentElement(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationElement **parent) {
    return This->lpVtbl->GetParentElement(This,element,parent);
}
static inline HRESULT IUIAutomationTreeWalker_GetFirstChildElement(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationElement **first) {
    return This->lpVtbl->GetFirstChildElement(This,element,first);
}
static inline HRESULT IUIAutomationTreeWalker_GetLastChildElement(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationElement **last) {
    return This->lpVtbl->GetLastChildElement(This,element,last);
}
static inline HRESULT IUIAutomationTreeWalker_GetNextSiblingElement(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationElement **next) {
    return This->lpVtbl->GetNextSiblingElement(This,element,next);
}
static inline HRESULT IUIAutomationTreeWalker_GetPreviousSiblingElement(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationElement **previous) {
    return This->lpVtbl->GetPreviousSiblingElement(This,element,previous);
}
static inline HRESULT IUIAutomationTreeWalker_NormalizeElement(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationElement **normalized) {
    return This->lpVtbl->NormalizeElement(This,element,normalized);
}
static inline HRESULT IUIAutomationTreeWalker_GetParentElementBuildCache(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **parent) {
    return This->lpVtbl->GetParentElementBuildCache(This,element,cacheRequest,parent);
}
static inline HRESULT IUIAutomationTreeWalker_GetFirstChildElementBuildCache(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **first) {
    return This->lpVtbl->GetFirstChildElementBuildCache(This,element,cacheRequest,first);
}
static inline HRESULT IUIAutomationTreeWalker_GetLastChildElementBuildCache(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **last) {
    return This->lpVtbl->GetLastChildElementBuildCache(This,element,cacheRequest,last);
}
static inline HRESULT IUIAutomationTreeWalker_GetNextSiblingElementBuildCache(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **next) {
    return This->lpVtbl->GetNextSiblingElementBuildCache(This,element,cacheRequest,next);
}
static inline HRESULT IUIAutomationTreeWalker_GetPreviousSiblingElementBuildCache(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **previous) {
    return This->lpVtbl->GetPreviousSiblingElementBuildCache(This,element,cacheRequest,previous);
}
static inline HRESULT IUIAutomationTreeWalker_NormalizeElementBuildCache(IUIAutomationTreeWalker* This,IUIAutomationElement *element,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **normalized) {
    return This->lpVtbl->NormalizeElementBuildCache(This,element,cacheRequest,normalized);
}
static inline HRESULT IUIAutomationTreeWalker_get_Condition(IUIAutomationTreeWalker* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_Condition(This,condition);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTreeWalker_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationEventHandler interface
 */
#ifndef __IUIAutomationEventHandler_INTERFACE_DEFINED__
#define __IUIAutomationEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationEventHandler, 0x146c3c17, 0xf12e, 0x4e22, 0x8c,0x27, 0xf8,0x94,0xb9,0xb7,0x9c,0x69);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("146c3c17-f12e-4e22-8c27-f894b9b79c69")
IUIAutomationEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleAutomationEvent(
        IUIAutomationElement *sender,
        EVENTID eventId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationEventHandler, 0x146c3c17, 0xf12e, 0x4e22, 0x8c,0x27, 0xf8,0x94,0xb9,0xb7,0x9c,0x69)
#endif
#else
typedef struct IUIAutomationEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationEventHandler *This);

    /*** IUIAutomationEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleAutomationEvent)(
        IUIAutomationEventHandler *This,
        IUIAutomationElement *sender,
        EVENTID eventId);

    END_INTERFACE
} IUIAutomationEventHandlerVtbl;

interface IUIAutomationEventHandler {
    CONST_VTBL IUIAutomationEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationEventHandler methods ***/
#define IUIAutomationEventHandler_HandleAutomationEvent(This,sender,eventId) (This)->lpVtbl->HandleAutomationEvent(This,sender,eventId)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationEventHandler_QueryInterface(IUIAutomationEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationEventHandler_AddRef(IUIAutomationEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationEventHandler_Release(IUIAutomationEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationEventHandler methods ***/
static inline HRESULT IUIAutomationEventHandler_HandleAutomationEvent(IUIAutomationEventHandler* This,IUIAutomationElement *sender,EVENTID eventId) {
    return This->lpVtbl->HandleAutomationEvent(This,sender,eventId);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationPropertyChangedEventHandler interface
 */
#ifndef __IUIAutomationPropertyChangedEventHandler_INTERFACE_DEFINED__
#define __IUIAutomationPropertyChangedEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationPropertyChangedEventHandler, 0x40cd37d4, 0xc756, 0x4b0c, 0x8c,0x6f, 0xbd,0xdf,0xee,0xb1,0x3b,0x50);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("40cd37d4-c756-4b0c-8c6f-bddfeeb13b50")
IUIAutomationPropertyChangedEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandlePropertyChangedEvent(
        IUIAutomationElement *sender,
        PROPERTYID propertyId,
        VARIANT newValue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationPropertyChangedEventHandler, 0x40cd37d4, 0xc756, 0x4b0c, 0x8c,0x6f, 0xbd,0xdf,0xee,0xb1,0x3b,0x50)
#endif
#else
typedef struct IUIAutomationPropertyChangedEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationPropertyChangedEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationPropertyChangedEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationPropertyChangedEventHandler *This);

    /*** IUIAutomationPropertyChangedEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *HandlePropertyChangedEvent)(
        IUIAutomationPropertyChangedEventHandler *This,
        IUIAutomationElement *sender,
        PROPERTYID propertyId,
        VARIANT newValue);

    END_INTERFACE
} IUIAutomationPropertyChangedEventHandlerVtbl;

interface IUIAutomationPropertyChangedEventHandler {
    CONST_VTBL IUIAutomationPropertyChangedEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationPropertyChangedEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationPropertyChangedEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationPropertyChangedEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationPropertyChangedEventHandler methods ***/
#define IUIAutomationPropertyChangedEventHandler_HandlePropertyChangedEvent(This,sender,propertyId,newValue) (This)->lpVtbl->HandlePropertyChangedEvent(This,sender,propertyId,newValue)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationPropertyChangedEventHandler_QueryInterface(IUIAutomationPropertyChangedEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationPropertyChangedEventHandler_AddRef(IUIAutomationPropertyChangedEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationPropertyChangedEventHandler_Release(IUIAutomationPropertyChangedEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationPropertyChangedEventHandler methods ***/
static inline HRESULT IUIAutomationPropertyChangedEventHandler_HandlePropertyChangedEvent(IUIAutomationPropertyChangedEventHandler* This,IUIAutomationElement *sender,PROPERTYID propertyId,VARIANT newValue) {
    return This->lpVtbl->HandlePropertyChangedEvent(This,sender,propertyId,newValue);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationPropertyChangedEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationStructureChangedEventHandler interface
 */
#ifndef __IUIAutomationStructureChangedEventHandler_INTERFACE_DEFINED__
#define __IUIAutomationStructureChangedEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationStructureChangedEventHandler, 0xe81d1b4e, 0x11c5, 0x42f8, 0x97,0x54, 0xe7,0x03,0x6c,0x79,0xf0,0x54);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e81d1b4e-11c5-42f8-9754-e7036c79f054")
IUIAutomationStructureChangedEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleStructureChangedEvent(
        IUIAutomationElement *sender,
        enum StructureChangeType changeType,
        SAFEARRAY *runtimeId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationStructureChangedEventHandler, 0xe81d1b4e, 0x11c5, 0x42f8, 0x97,0x54, 0xe7,0x03,0x6c,0x79,0xf0,0x54)
#endif
#else
typedef struct IUIAutomationStructureChangedEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationStructureChangedEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationStructureChangedEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationStructureChangedEventHandler *This);

    /*** IUIAutomationStructureChangedEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleStructureChangedEvent)(
        IUIAutomationStructureChangedEventHandler *This,
        IUIAutomationElement *sender,
        enum StructureChangeType changeType,
        SAFEARRAY *runtimeId);

    END_INTERFACE
} IUIAutomationStructureChangedEventHandlerVtbl;

interface IUIAutomationStructureChangedEventHandler {
    CONST_VTBL IUIAutomationStructureChangedEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationStructureChangedEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationStructureChangedEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationStructureChangedEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationStructureChangedEventHandler methods ***/
#define IUIAutomationStructureChangedEventHandler_HandleStructureChangedEvent(This,sender,changeType,runtimeId) (This)->lpVtbl->HandleStructureChangedEvent(This,sender,changeType,runtimeId)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationStructureChangedEventHandler_QueryInterface(IUIAutomationStructureChangedEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationStructureChangedEventHandler_AddRef(IUIAutomationStructureChangedEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationStructureChangedEventHandler_Release(IUIAutomationStructureChangedEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationStructureChangedEventHandler methods ***/
static inline HRESULT IUIAutomationStructureChangedEventHandler_HandleStructureChangedEvent(IUIAutomationStructureChangedEventHandler* This,IUIAutomationElement *sender,enum StructureChangeType changeType,SAFEARRAY *runtimeId) {
    return This->lpVtbl->HandleStructureChangedEvent(This,sender,changeType,runtimeId);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationStructureChangedEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationFocusChangedEventHandler interface
 */
#ifndef __IUIAutomationFocusChangedEventHandler_INTERFACE_DEFINED__
#define __IUIAutomationFocusChangedEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationFocusChangedEventHandler, 0xc270f6b5, 0x5c69, 0x4290, 0x97,0x45, 0x7a,0x7f,0x97,0x16,0x94,0x68);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c270f6b5-5c69-4290-9745-7a7f97169468")
IUIAutomationFocusChangedEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleFocusChangedEvent(
        IUIAutomationElement *sender) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationFocusChangedEventHandler, 0xc270f6b5, 0x5c69, 0x4290, 0x97,0x45, 0x7a,0x7f,0x97,0x16,0x94,0x68)
#endif
#else
typedef struct IUIAutomationFocusChangedEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationFocusChangedEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationFocusChangedEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationFocusChangedEventHandler *This);

    /*** IUIAutomationFocusChangedEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleFocusChangedEvent)(
        IUIAutomationFocusChangedEventHandler *This,
        IUIAutomationElement *sender);

    END_INTERFACE
} IUIAutomationFocusChangedEventHandlerVtbl;

interface IUIAutomationFocusChangedEventHandler {
    CONST_VTBL IUIAutomationFocusChangedEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationFocusChangedEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationFocusChangedEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationFocusChangedEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationFocusChangedEventHandler methods ***/
#define IUIAutomationFocusChangedEventHandler_HandleFocusChangedEvent(This,sender) (This)->lpVtbl->HandleFocusChangedEvent(This,sender)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationFocusChangedEventHandler_QueryInterface(IUIAutomationFocusChangedEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationFocusChangedEventHandler_AddRef(IUIAutomationFocusChangedEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationFocusChangedEventHandler_Release(IUIAutomationFocusChangedEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationFocusChangedEventHandler methods ***/
static inline HRESULT IUIAutomationFocusChangedEventHandler_HandleFocusChangedEvent(IUIAutomationFocusChangedEventHandler* This,IUIAutomationElement *sender) {
    return This->lpVtbl->HandleFocusChangedEvent(This,sender);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationFocusChangedEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTextEditTextChangedEventHandler interface
 */
#ifndef __IUIAutomationTextEditTextChangedEventHandler_INTERFACE_DEFINED__
#define __IUIAutomationTextEditTextChangedEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTextEditTextChangedEventHandler, 0x92faa680, 0xe704, 0x4156, 0x93,0x1a, 0xe3,0x2d,0x5b,0xb3,0x8f,0x3f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("92faa680-e704-4156-931a-e32d5bb38f3f")
IUIAutomationTextEditTextChangedEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleTextEditTextChangedEvent(
        IUIAutomationElement *sender,
        enum TextEditChangeType textEditChangeType,
        SAFEARRAY *eventStrings) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTextEditTextChangedEventHandler, 0x92faa680, 0xe704, 0x4156, 0x93,0x1a, 0xe3,0x2d,0x5b,0xb3,0x8f,0x3f)
#endif
#else
typedef struct IUIAutomationTextEditTextChangedEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTextEditTextChangedEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTextEditTextChangedEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTextEditTextChangedEventHandler *This);

    /*** IUIAutomationTextEditTextChangedEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleTextEditTextChangedEvent)(
        IUIAutomationTextEditTextChangedEventHandler *This,
        IUIAutomationElement *sender,
        enum TextEditChangeType textEditChangeType,
        SAFEARRAY *eventStrings);

    END_INTERFACE
} IUIAutomationTextEditTextChangedEventHandlerVtbl;

interface IUIAutomationTextEditTextChangedEventHandler {
    CONST_VTBL IUIAutomationTextEditTextChangedEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTextEditTextChangedEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTextEditTextChangedEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTextEditTextChangedEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTextEditTextChangedEventHandler methods ***/
#define IUIAutomationTextEditTextChangedEventHandler_HandleTextEditTextChangedEvent(This,sender,textEditChangeType,eventStrings) (This)->lpVtbl->HandleTextEditTextChangedEvent(This,sender,textEditChangeType,eventStrings)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTextEditTextChangedEventHandler_QueryInterface(IUIAutomationTextEditTextChangedEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTextEditTextChangedEventHandler_AddRef(IUIAutomationTextEditTextChangedEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTextEditTextChangedEventHandler_Release(IUIAutomationTextEditTextChangedEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTextEditTextChangedEventHandler methods ***/
static inline HRESULT IUIAutomationTextEditTextChangedEventHandler_HandleTextEditTextChangedEvent(IUIAutomationTextEditTextChangedEventHandler* This,IUIAutomationElement *sender,enum TextEditChangeType textEditChangeType,SAFEARRAY *eventStrings) {
    return This->lpVtbl->HandleTextEditTextChangedEvent(This,sender,textEditChangeType,eventStrings);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTextEditTextChangedEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationChangesEventHandler interface
 */
#ifndef __IUIAutomationChangesEventHandler_INTERFACE_DEFINED__
#define __IUIAutomationChangesEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationChangesEventHandler, 0x58edca55, 0x2c3e, 0x4980, 0xb1,0xb9, 0x56,0xc1,0x7f,0x27,0xa2,0xa0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("58edca55-2c3e-4980-b1b9-56c17f27a2a0")
IUIAutomationChangesEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleChangesEvent(
        IUIAutomationElement *sender,
        struct UiaChangeInfo *uiaChanges,
        int changesCount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationChangesEventHandler, 0x58edca55, 0x2c3e, 0x4980, 0xb1,0xb9, 0x56,0xc1,0x7f,0x27,0xa2,0xa0)
#endif
#else
typedef struct IUIAutomationChangesEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationChangesEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationChangesEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationChangesEventHandler *This);

    /*** IUIAutomationChangesEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleChangesEvent)(
        IUIAutomationChangesEventHandler *This,
        IUIAutomationElement *sender,
        struct UiaChangeInfo *uiaChanges,
        int changesCount);

    END_INTERFACE
} IUIAutomationChangesEventHandlerVtbl;

interface IUIAutomationChangesEventHandler {
    CONST_VTBL IUIAutomationChangesEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationChangesEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationChangesEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationChangesEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationChangesEventHandler methods ***/
#define IUIAutomationChangesEventHandler_HandleChangesEvent(This,sender,uiaChanges,changesCount) (This)->lpVtbl->HandleChangesEvent(This,sender,uiaChanges,changesCount)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationChangesEventHandler_QueryInterface(IUIAutomationChangesEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationChangesEventHandler_AddRef(IUIAutomationChangesEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationChangesEventHandler_Release(IUIAutomationChangesEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationChangesEventHandler methods ***/
static inline HRESULT IUIAutomationChangesEventHandler_HandleChangesEvent(IUIAutomationChangesEventHandler* This,IUIAutomationElement *sender,struct UiaChangeInfo *uiaChanges,int changesCount) {
    return This->lpVtbl->HandleChangesEvent(This,sender,uiaChanges,changesCount);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationChangesEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationNotificationEventHandler interface
 */
#ifndef __IUIAutomationNotificationEventHandler_INTERFACE_DEFINED__
#define __IUIAutomationNotificationEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationNotificationEventHandler, 0xc7cb2637, 0xe6c2, 0x4d0c, 0x85,0xde, 0x49,0x48,0xc0,0x21,0x75,0xc7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c7cb2637-e6c2-4d0c-85de-4948c02175c7")
IUIAutomationNotificationEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleNotificationEvent(
        IUIAutomationElement *sender,
        enum NotificationKind notificationKind,
        enum NotificationProcessing notificationProcessing,
        BSTR displayString,
        BSTR activityId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationNotificationEventHandler, 0xc7cb2637, 0xe6c2, 0x4d0c, 0x85,0xde, 0x49,0x48,0xc0,0x21,0x75,0xc7)
#endif
#else
typedef struct IUIAutomationNotificationEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationNotificationEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationNotificationEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationNotificationEventHandler *This);

    /*** IUIAutomationNotificationEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleNotificationEvent)(
        IUIAutomationNotificationEventHandler *This,
        IUIAutomationElement *sender,
        enum NotificationKind notificationKind,
        enum NotificationProcessing notificationProcessing,
        BSTR displayString,
        BSTR activityId);

    END_INTERFACE
} IUIAutomationNotificationEventHandlerVtbl;

interface IUIAutomationNotificationEventHandler {
    CONST_VTBL IUIAutomationNotificationEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationNotificationEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationNotificationEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationNotificationEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationNotificationEventHandler methods ***/
#define IUIAutomationNotificationEventHandler_HandleNotificationEvent(This,sender,notificationKind,notificationProcessing,displayString,activityId) (This)->lpVtbl->HandleNotificationEvent(This,sender,notificationKind,notificationProcessing,displayString,activityId)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationNotificationEventHandler_QueryInterface(IUIAutomationNotificationEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationNotificationEventHandler_AddRef(IUIAutomationNotificationEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationNotificationEventHandler_Release(IUIAutomationNotificationEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationNotificationEventHandler methods ***/
static inline HRESULT IUIAutomationNotificationEventHandler_HandleNotificationEvent(IUIAutomationNotificationEventHandler* This,IUIAutomationElement *sender,enum NotificationKind notificationKind,enum NotificationProcessing notificationProcessing,BSTR displayString,BSTR activityId) {
    return This->lpVtbl->HandleNotificationEvent(This,sender,notificationKind,notificationProcessing,displayString,activityId);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationNotificationEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationInvokePattern interface
 */
#ifndef __IUIAutomationInvokePattern_INTERFACE_DEFINED__
#define __IUIAutomationInvokePattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationInvokePattern, 0xfb377fbe, 0x8ea6, 0x46d5, 0x9c,0x73, 0x64,0x99,0x64,0x2d,0x30,0x59);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fb377fbe-8ea6-46d5-9c73-6499642d3059")
IUIAutomationInvokePattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Invoke(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationInvokePattern, 0xfb377fbe, 0x8ea6, 0x46d5, 0x9c,0x73, 0x64,0x99,0x64,0x2d,0x30,0x59)
#endif
#else
typedef struct IUIAutomationInvokePatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationInvokePattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationInvokePattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationInvokePattern *This);

    /*** IUIAutomationInvokePattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IUIAutomationInvokePattern *This);

    END_INTERFACE
} IUIAutomationInvokePatternVtbl;

interface IUIAutomationInvokePattern {
    CONST_VTBL IUIAutomationInvokePatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationInvokePattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationInvokePattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationInvokePattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationInvokePattern methods ***/
#define IUIAutomationInvokePattern_Invoke(This) (This)->lpVtbl->Invoke(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationInvokePattern_QueryInterface(IUIAutomationInvokePattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationInvokePattern_AddRef(IUIAutomationInvokePattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationInvokePattern_Release(IUIAutomationInvokePattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationInvokePattern methods ***/
static inline HRESULT IUIAutomationInvokePattern_Invoke(IUIAutomationInvokePattern* This) {
    return This->lpVtbl->Invoke(This);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationInvokePattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationDockPattern interface
 */
#ifndef __IUIAutomationDockPattern_INTERFACE_DEFINED__
#define __IUIAutomationDockPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationDockPattern, 0xfde5ef97, 0x1464, 0x48f6, 0x90,0xbf, 0x43,0xd0,0x94,0x8e,0x86,0xec);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fde5ef97-1464-48f6-90bf-43d0948e86ec")
IUIAutomationDockPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetDockPosition(
        enum DockPosition dockPos) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDockPosition(
        enum DockPosition *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDockPosition(
        enum DockPosition *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationDockPattern, 0xfde5ef97, 0x1464, 0x48f6, 0x90,0xbf, 0x43,0xd0,0x94,0x8e,0x86,0xec)
#endif
#else
typedef struct IUIAutomationDockPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationDockPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationDockPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationDockPattern *This);

    /*** IUIAutomationDockPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *SetDockPosition)(
        IUIAutomationDockPattern *This,
        enum DockPosition dockPos);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDockPosition)(
        IUIAutomationDockPattern *This,
        enum DockPosition *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDockPosition)(
        IUIAutomationDockPattern *This,
        enum DockPosition *retVal);

    END_INTERFACE
} IUIAutomationDockPatternVtbl;

interface IUIAutomationDockPattern {
    CONST_VTBL IUIAutomationDockPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationDockPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationDockPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationDockPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationDockPattern methods ***/
#define IUIAutomationDockPattern_SetDockPosition(This,dockPos) (This)->lpVtbl->SetDockPosition(This,dockPos)
#define IUIAutomationDockPattern_get_CurrentDockPosition(This,retVal) (This)->lpVtbl->get_CurrentDockPosition(This,retVal)
#define IUIAutomationDockPattern_get_CachedDockPosition(This,retVal) (This)->lpVtbl->get_CachedDockPosition(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationDockPattern_QueryInterface(IUIAutomationDockPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationDockPattern_AddRef(IUIAutomationDockPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationDockPattern_Release(IUIAutomationDockPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationDockPattern methods ***/
static inline HRESULT IUIAutomationDockPattern_SetDockPosition(IUIAutomationDockPattern* This,enum DockPosition dockPos) {
    return This->lpVtbl->SetDockPosition(This,dockPos);
}
static inline HRESULT IUIAutomationDockPattern_get_CurrentDockPosition(IUIAutomationDockPattern* This,enum DockPosition *retVal) {
    return This->lpVtbl->get_CurrentDockPosition(This,retVal);
}
static inline HRESULT IUIAutomationDockPattern_get_CachedDockPosition(IUIAutomationDockPattern* This,enum DockPosition *retVal) {
    return This->lpVtbl->get_CachedDockPosition(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationDockPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationExpandCollapsePattern interface
 */
#ifndef __IUIAutomationExpandCollapsePattern_INTERFACE_DEFINED__
#define __IUIAutomationExpandCollapsePattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationExpandCollapsePattern, 0x619be086, 0x1f4e, 0x4ee4, 0xba,0xfa, 0x21,0x01,0x28,0x73,0x87,0x30);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("619be086-1f4e-4ee4-bafa-210128738730")
IUIAutomationExpandCollapsePattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Expand(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Collapse(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentExpandCollapseState(
        enum ExpandCollapseState *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedExpandCollapseState(
        enum ExpandCollapseState *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationExpandCollapsePattern, 0x619be086, 0x1f4e, 0x4ee4, 0xba,0xfa, 0x21,0x01,0x28,0x73,0x87,0x30)
#endif
#else
typedef struct IUIAutomationExpandCollapsePatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationExpandCollapsePattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationExpandCollapsePattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationExpandCollapsePattern *This);

    /*** IUIAutomationExpandCollapsePattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Expand)(
        IUIAutomationExpandCollapsePattern *This);

    HRESULT (STDMETHODCALLTYPE *Collapse)(
        IUIAutomationExpandCollapsePattern *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentExpandCollapseState)(
        IUIAutomationExpandCollapsePattern *This,
        enum ExpandCollapseState *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedExpandCollapseState)(
        IUIAutomationExpandCollapsePattern *This,
        enum ExpandCollapseState *retVal);

    END_INTERFACE
} IUIAutomationExpandCollapsePatternVtbl;

interface IUIAutomationExpandCollapsePattern {
    CONST_VTBL IUIAutomationExpandCollapsePatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationExpandCollapsePattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationExpandCollapsePattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationExpandCollapsePattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationExpandCollapsePattern methods ***/
#define IUIAutomationExpandCollapsePattern_Expand(This) (This)->lpVtbl->Expand(This)
#define IUIAutomationExpandCollapsePattern_Collapse(This) (This)->lpVtbl->Collapse(This)
#define IUIAutomationExpandCollapsePattern_get_CurrentExpandCollapseState(This,retVal) (This)->lpVtbl->get_CurrentExpandCollapseState(This,retVal)
#define IUIAutomationExpandCollapsePattern_get_CachedExpandCollapseState(This,retVal) (This)->lpVtbl->get_CachedExpandCollapseState(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationExpandCollapsePattern_QueryInterface(IUIAutomationExpandCollapsePattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationExpandCollapsePattern_AddRef(IUIAutomationExpandCollapsePattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationExpandCollapsePattern_Release(IUIAutomationExpandCollapsePattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationExpandCollapsePattern methods ***/
static inline HRESULT IUIAutomationExpandCollapsePattern_Expand(IUIAutomationExpandCollapsePattern* This) {
    return This->lpVtbl->Expand(This);
}
static inline HRESULT IUIAutomationExpandCollapsePattern_Collapse(IUIAutomationExpandCollapsePattern* This) {
    return This->lpVtbl->Collapse(This);
}
static inline HRESULT IUIAutomationExpandCollapsePattern_get_CurrentExpandCollapseState(IUIAutomationExpandCollapsePattern* This,enum ExpandCollapseState *retVal) {
    return This->lpVtbl->get_CurrentExpandCollapseState(This,retVal);
}
static inline HRESULT IUIAutomationExpandCollapsePattern_get_CachedExpandCollapseState(IUIAutomationExpandCollapsePattern* This,enum ExpandCollapseState *retVal) {
    return This->lpVtbl->get_CachedExpandCollapseState(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationExpandCollapsePattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationGridPattern interface
 */
#ifndef __IUIAutomationGridPattern_INTERFACE_DEFINED__
#define __IUIAutomationGridPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationGridPattern, 0x414c3cdc, 0x856b, 0x4f5b, 0x85,0x38, 0x31,0x31,0xc6,0x30,0x25,0x50);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("414c3cdc-856b-4f5b-8538-3131c6302550")
IUIAutomationGridPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetItem(
        int row,
        int column,
        IUIAutomationElement **element) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentRowCount(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentColumnCount(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedRowCount(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedColumnCount(
        int *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationGridPattern, 0x414c3cdc, 0x856b, 0x4f5b, 0x85,0x38, 0x31,0x31,0xc6,0x30,0x25,0x50)
#endif
#else
typedef struct IUIAutomationGridPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationGridPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationGridPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationGridPattern *This);

    /*** IUIAutomationGridPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IUIAutomationGridPattern *This,
        int row,
        int column,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *get_CurrentRowCount)(
        IUIAutomationGridPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentColumnCount)(
        IUIAutomationGridPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedRowCount)(
        IUIAutomationGridPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedColumnCount)(
        IUIAutomationGridPattern *This,
        int *retVal);

    END_INTERFACE
} IUIAutomationGridPatternVtbl;

interface IUIAutomationGridPattern {
    CONST_VTBL IUIAutomationGridPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationGridPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationGridPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationGridPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationGridPattern methods ***/
#define IUIAutomationGridPattern_GetItem(This,row,column,element) (This)->lpVtbl->GetItem(This,row,column,element)
#define IUIAutomationGridPattern_get_CurrentRowCount(This,retVal) (This)->lpVtbl->get_CurrentRowCount(This,retVal)
#define IUIAutomationGridPattern_get_CurrentColumnCount(This,retVal) (This)->lpVtbl->get_CurrentColumnCount(This,retVal)
#define IUIAutomationGridPattern_get_CachedRowCount(This,retVal) (This)->lpVtbl->get_CachedRowCount(This,retVal)
#define IUIAutomationGridPattern_get_CachedColumnCount(This,retVal) (This)->lpVtbl->get_CachedColumnCount(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationGridPattern_QueryInterface(IUIAutomationGridPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationGridPattern_AddRef(IUIAutomationGridPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationGridPattern_Release(IUIAutomationGridPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationGridPattern methods ***/
static inline HRESULT IUIAutomationGridPattern_GetItem(IUIAutomationGridPattern* This,int row,int column,IUIAutomationElement **element) {
    return This->lpVtbl->GetItem(This,row,column,element);
}
static inline HRESULT IUIAutomationGridPattern_get_CurrentRowCount(IUIAutomationGridPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentRowCount(This,retVal);
}
static inline HRESULT IUIAutomationGridPattern_get_CurrentColumnCount(IUIAutomationGridPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentColumnCount(This,retVal);
}
static inline HRESULT IUIAutomationGridPattern_get_CachedRowCount(IUIAutomationGridPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedRowCount(This,retVal);
}
static inline HRESULT IUIAutomationGridPattern_get_CachedColumnCount(IUIAutomationGridPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedColumnCount(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationGridPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationGridItemPattern interface
 */
#ifndef __IUIAutomationGridItemPattern_INTERFACE_DEFINED__
#define __IUIAutomationGridItemPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationGridItemPattern, 0x78f8ef57, 0x66c3, 0x4e09, 0xbd,0x7c, 0xe7,0x9b,0x20,0x04,0x89,0x4d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("78f8ef57-66c3-4e09-bd7c-e79b2004894d")
IUIAutomationGridItemPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentContainingGrid(
        IUIAutomationElement **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentRow(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentColumn(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentRowSpan(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentColumnSpan(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedContainingGrid(
        IUIAutomationElement **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedRow(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedColumn(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedRowSpan(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedColumnSpan(
        int *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationGridItemPattern, 0x78f8ef57, 0x66c3, 0x4e09, 0xbd,0x7c, 0xe7,0x9b,0x20,0x04,0x89,0x4d)
#endif
#else
typedef struct IUIAutomationGridItemPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationGridItemPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationGridItemPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationGridItemPattern *This);

    /*** IUIAutomationGridItemPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentContainingGrid)(
        IUIAutomationGridItemPattern *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentRow)(
        IUIAutomationGridItemPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentColumn)(
        IUIAutomationGridItemPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentRowSpan)(
        IUIAutomationGridItemPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentColumnSpan)(
        IUIAutomationGridItemPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedContainingGrid)(
        IUIAutomationGridItemPattern *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedRow)(
        IUIAutomationGridItemPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedColumn)(
        IUIAutomationGridItemPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedRowSpan)(
        IUIAutomationGridItemPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedColumnSpan)(
        IUIAutomationGridItemPattern *This,
        int *retVal);

    END_INTERFACE
} IUIAutomationGridItemPatternVtbl;

interface IUIAutomationGridItemPattern {
    CONST_VTBL IUIAutomationGridItemPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationGridItemPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationGridItemPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationGridItemPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationGridItemPattern methods ***/
#define IUIAutomationGridItemPattern_get_CurrentContainingGrid(This,retVal) (This)->lpVtbl->get_CurrentContainingGrid(This,retVal)
#define IUIAutomationGridItemPattern_get_CurrentRow(This,retVal) (This)->lpVtbl->get_CurrentRow(This,retVal)
#define IUIAutomationGridItemPattern_get_CurrentColumn(This,retVal) (This)->lpVtbl->get_CurrentColumn(This,retVal)
#define IUIAutomationGridItemPattern_get_CurrentRowSpan(This,retVal) (This)->lpVtbl->get_CurrentRowSpan(This,retVal)
#define IUIAutomationGridItemPattern_get_CurrentColumnSpan(This,retVal) (This)->lpVtbl->get_CurrentColumnSpan(This,retVal)
#define IUIAutomationGridItemPattern_get_CachedContainingGrid(This,retVal) (This)->lpVtbl->get_CachedContainingGrid(This,retVal)
#define IUIAutomationGridItemPattern_get_CachedRow(This,retVal) (This)->lpVtbl->get_CachedRow(This,retVal)
#define IUIAutomationGridItemPattern_get_CachedColumn(This,retVal) (This)->lpVtbl->get_CachedColumn(This,retVal)
#define IUIAutomationGridItemPattern_get_CachedRowSpan(This,retVal) (This)->lpVtbl->get_CachedRowSpan(This,retVal)
#define IUIAutomationGridItemPattern_get_CachedColumnSpan(This,retVal) (This)->lpVtbl->get_CachedColumnSpan(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationGridItemPattern_QueryInterface(IUIAutomationGridItemPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationGridItemPattern_AddRef(IUIAutomationGridItemPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationGridItemPattern_Release(IUIAutomationGridItemPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationGridItemPattern methods ***/
static inline HRESULT IUIAutomationGridItemPattern_get_CurrentContainingGrid(IUIAutomationGridItemPattern* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentContainingGrid(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CurrentRow(IUIAutomationGridItemPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentRow(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CurrentColumn(IUIAutomationGridItemPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentColumn(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CurrentRowSpan(IUIAutomationGridItemPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentRowSpan(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CurrentColumnSpan(IUIAutomationGridItemPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentColumnSpan(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CachedContainingGrid(IUIAutomationGridItemPattern* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedContainingGrid(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CachedRow(IUIAutomationGridItemPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedRow(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CachedColumn(IUIAutomationGridItemPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedColumn(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CachedRowSpan(IUIAutomationGridItemPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedRowSpan(This,retVal);
}
static inline HRESULT IUIAutomationGridItemPattern_get_CachedColumnSpan(IUIAutomationGridItemPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedColumnSpan(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationGridItemPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationMultipleViewPattern interface
 */
#ifndef __IUIAutomationMultipleViewPattern_INTERFACE_DEFINED__
#define __IUIAutomationMultipleViewPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationMultipleViewPattern, 0x8d253c91, 0x1dc5, 0x4bb5, 0xb1,0x8f, 0xad,0xe1,0x6f,0xa4,0x95,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8d253c91-1dc5-4bb5-b18f-ade16fa495e8")
IUIAutomationMultipleViewPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetViewName(
        int view,
        BSTR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCurrentView(
        int view) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCurrentView(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentSupportedViews(
        SAFEARRAY **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCurrentView(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedSupportedViews(
        SAFEARRAY **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationMultipleViewPattern, 0x8d253c91, 0x1dc5, 0x4bb5, 0xb1,0x8f, 0xad,0xe1,0x6f,0xa4,0x95,0xe8)
#endif
#else
typedef struct IUIAutomationMultipleViewPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationMultipleViewPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationMultipleViewPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationMultipleViewPattern *This);

    /*** IUIAutomationMultipleViewPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *GetViewName)(
        IUIAutomationMultipleViewPattern *This,
        int view,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *SetCurrentView)(
        IUIAutomationMultipleViewPattern *This,
        int view);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCurrentView)(
        IUIAutomationMultipleViewPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentSupportedViews)(
        IUIAutomationMultipleViewPattern *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCurrentView)(
        IUIAutomationMultipleViewPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedSupportedViews)(
        IUIAutomationMultipleViewPattern *This,
        SAFEARRAY **retVal);

    END_INTERFACE
} IUIAutomationMultipleViewPatternVtbl;

interface IUIAutomationMultipleViewPattern {
    CONST_VTBL IUIAutomationMultipleViewPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationMultipleViewPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationMultipleViewPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationMultipleViewPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationMultipleViewPattern methods ***/
#define IUIAutomationMultipleViewPattern_GetViewName(This,view,name) (This)->lpVtbl->GetViewName(This,view,name)
#define IUIAutomationMultipleViewPattern_SetCurrentView(This,view) (This)->lpVtbl->SetCurrentView(This,view)
#define IUIAutomationMultipleViewPattern_get_CurrentCurrentView(This,retVal) (This)->lpVtbl->get_CurrentCurrentView(This,retVal)
#define IUIAutomationMultipleViewPattern_GetCurrentSupportedViews(This,retVal) (This)->lpVtbl->GetCurrentSupportedViews(This,retVal)
#define IUIAutomationMultipleViewPattern_get_CachedCurrentView(This,retVal) (This)->lpVtbl->get_CachedCurrentView(This,retVal)
#define IUIAutomationMultipleViewPattern_GetCachedSupportedViews(This,retVal) (This)->lpVtbl->GetCachedSupportedViews(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationMultipleViewPattern_QueryInterface(IUIAutomationMultipleViewPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationMultipleViewPattern_AddRef(IUIAutomationMultipleViewPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationMultipleViewPattern_Release(IUIAutomationMultipleViewPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationMultipleViewPattern methods ***/
static inline HRESULT IUIAutomationMultipleViewPattern_GetViewName(IUIAutomationMultipleViewPattern* This,int view,BSTR *name) {
    return This->lpVtbl->GetViewName(This,view,name);
}
static inline HRESULT IUIAutomationMultipleViewPattern_SetCurrentView(IUIAutomationMultipleViewPattern* This,int view) {
    return This->lpVtbl->SetCurrentView(This,view);
}
static inline HRESULT IUIAutomationMultipleViewPattern_get_CurrentCurrentView(IUIAutomationMultipleViewPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentCurrentView(This,retVal);
}
static inline HRESULT IUIAutomationMultipleViewPattern_GetCurrentSupportedViews(IUIAutomationMultipleViewPattern* This,SAFEARRAY **retVal) {
    return This->lpVtbl->GetCurrentSupportedViews(This,retVal);
}
static inline HRESULT IUIAutomationMultipleViewPattern_get_CachedCurrentView(IUIAutomationMultipleViewPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedCurrentView(This,retVal);
}
static inline HRESULT IUIAutomationMultipleViewPattern_GetCachedSupportedViews(IUIAutomationMultipleViewPattern* This,SAFEARRAY **retVal) {
    return This->lpVtbl->GetCachedSupportedViews(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationMultipleViewPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationObjectModelPattern interface
 */
#ifndef __IUIAutomationObjectModelPattern_INTERFACE_DEFINED__
#define __IUIAutomationObjectModelPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationObjectModelPattern, 0x71c284b3, 0xc14d, 0x4d14, 0x98,0x1e, 0x19,0x75,0x1b,0x0d,0x75,0x6d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71c284b3-c14d-4d14-981e-19751b0d756d")
IUIAutomationObjectModelPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetUnderlyingObjectModel(
        IUnknown **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationObjectModelPattern, 0x71c284b3, 0xc14d, 0x4d14, 0x98,0x1e, 0x19,0x75,0x1b,0x0d,0x75,0x6d)
#endif
#else
typedef struct IUIAutomationObjectModelPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationObjectModelPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationObjectModelPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationObjectModelPattern *This);

    /*** IUIAutomationObjectModelPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *GetUnderlyingObjectModel)(
        IUIAutomationObjectModelPattern *This,
        IUnknown **retVal);

    END_INTERFACE
} IUIAutomationObjectModelPatternVtbl;

interface IUIAutomationObjectModelPattern {
    CONST_VTBL IUIAutomationObjectModelPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationObjectModelPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationObjectModelPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationObjectModelPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationObjectModelPattern methods ***/
#define IUIAutomationObjectModelPattern_GetUnderlyingObjectModel(This,retVal) (This)->lpVtbl->GetUnderlyingObjectModel(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationObjectModelPattern_QueryInterface(IUIAutomationObjectModelPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationObjectModelPattern_AddRef(IUIAutomationObjectModelPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationObjectModelPattern_Release(IUIAutomationObjectModelPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationObjectModelPattern methods ***/
static inline HRESULT IUIAutomationObjectModelPattern_GetUnderlyingObjectModel(IUIAutomationObjectModelPattern* This,IUnknown **retVal) {
    return This->lpVtbl->GetUnderlyingObjectModel(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationObjectModelPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationRangeValuePattern interface
 */
#ifndef __IUIAutomationRangeValuePattern_INTERFACE_DEFINED__
#define __IUIAutomationRangeValuePattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationRangeValuePattern, 0x59213f4f, 0x7346, 0x49e5, 0xb1,0x20, 0x80,0x55,0x59,0x87,0xa1,0x48);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("59213f4f-7346-49e5-b120-80555987a148")
IUIAutomationRangeValuePattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetValue(
        double val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentValue(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsReadOnly(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentMaximum(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentMinimum(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentLargeChange(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentSmallChange(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedValue(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsReadOnly(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedMaximum(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedMinimum(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedLargeChange(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedSmallChange(
        double *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationRangeValuePattern, 0x59213f4f, 0x7346, 0x49e5, 0xb1,0x20, 0x80,0x55,0x59,0x87,0xa1,0x48)
#endif
#else
typedef struct IUIAutomationRangeValuePatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationRangeValuePattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationRangeValuePattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationRangeValuePattern *This);

    /*** IUIAutomationRangeValuePattern methods ***/
    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IUIAutomationRangeValuePattern *This,
        double val);

    HRESULT (STDMETHODCALLTYPE *get_CurrentValue)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsReadOnly)(
        IUIAutomationRangeValuePattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentMaximum)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentMinimum)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLargeChange)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSmallChange)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedValue)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsReadOnly)(
        IUIAutomationRangeValuePattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedMaximum)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedMinimum)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLargeChange)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedSmallChange)(
        IUIAutomationRangeValuePattern *This,
        double *retVal);

    END_INTERFACE
} IUIAutomationRangeValuePatternVtbl;

interface IUIAutomationRangeValuePattern {
    CONST_VTBL IUIAutomationRangeValuePatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationRangeValuePattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationRangeValuePattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationRangeValuePattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationRangeValuePattern methods ***/
#define IUIAutomationRangeValuePattern_SetValue(This,val) (This)->lpVtbl->SetValue(This,val)
#define IUIAutomationRangeValuePattern_get_CurrentValue(This,retVal) (This)->lpVtbl->get_CurrentValue(This,retVal)
#define IUIAutomationRangeValuePattern_get_CurrentIsReadOnly(This,retVal) (This)->lpVtbl->get_CurrentIsReadOnly(This,retVal)
#define IUIAutomationRangeValuePattern_get_CurrentMaximum(This,retVal) (This)->lpVtbl->get_CurrentMaximum(This,retVal)
#define IUIAutomationRangeValuePattern_get_CurrentMinimum(This,retVal) (This)->lpVtbl->get_CurrentMinimum(This,retVal)
#define IUIAutomationRangeValuePattern_get_CurrentLargeChange(This,retVal) (This)->lpVtbl->get_CurrentLargeChange(This,retVal)
#define IUIAutomationRangeValuePattern_get_CurrentSmallChange(This,retVal) (This)->lpVtbl->get_CurrentSmallChange(This,retVal)
#define IUIAutomationRangeValuePattern_get_CachedValue(This,retVal) (This)->lpVtbl->get_CachedValue(This,retVal)
#define IUIAutomationRangeValuePattern_get_CachedIsReadOnly(This,retVal) (This)->lpVtbl->get_CachedIsReadOnly(This,retVal)
#define IUIAutomationRangeValuePattern_get_CachedMaximum(This,retVal) (This)->lpVtbl->get_CachedMaximum(This,retVal)
#define IUIAutomationRangeValuePattern_get_CachedMinimum(This,retVal) (This)->lpVtbl->get_CachedMinimum(This,retVal)
#define IUIAutomationRangeValuePattern_get_CachedLargeChange(This,retVal) (This)->lpVtbl->get_CachedLargeChange(This,retVal)
#define IUIAutomationRangeValuePattern_get_CachedSmallChange(This,retVal) (This)->lpVtbl->get_CachedSmallChange(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationRangeValuePattern_QueryInterface(IUIAutomationRangeValuePattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationRangeValuePattern_AddRef(IUIAutomationRangeValuePattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationRangeValuePattern_Release(IUIAutomationRangeValuePattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationRangeValuePattern methods ***/
static inline HRESULT IUIAutomationRangeValuePattern_SetValue(IUIAutomationRangeValuePattern* This,double val) {
    return This->lpVtbl->SetValue(This,val);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CurrentValue(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentValue(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CurrentIsReadOnly(IUIAutomationRangeValuePattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsReadOnly(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CurrentMaximum(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentMaximum(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CurrentMinimum(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentMinimum(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CurrentLargeChange(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentLargeChange(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CurrentSmallChange(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentSmallChange(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CachedValue(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CachedValue(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CachedIsReadOnly(IUIAutomationRangeValuePattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsReadOnly(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CachedMaximum(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CachedMaximum(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CachedMinimum(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CachedMinimum(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CachedLargeChange(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CachedLargeChange(This,retVal);
}
static inline HRESULT IUIAutomationRangeValuePattern_get_CachedSmallChange(IUIAutomationRangeValuePattern* This,double *retVal) {
    return This->lpVtbl->get_CachedSmallChange(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationRangeValuePattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationScrollPattern interface
 */
#ifndef __IUIAutomationScrollPattern_INTERFACE_DEFINED__
#define __IUIAutomationScrollPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationScrollPattern, 0x88f4d42a, 0xe881, 0x459d, 0xa7,0x7c, 0x73,0xbb,0xbb,0x7e,0x02,0xdc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("88f4d42a-e881-459d-a77c-73bbbb7e02dc")
IUIAutomationScrollPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Scroll(
        enum ScrollAmount horizontalAmount,
        enum ScrollAmount verticalAmount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScrollPercent(
        double horizontalPercent,
        double verticalPercent) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentHorizontalScrollPercent(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentVerticalScrollPercent(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentHorizontalViewSize(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentVerticalViewSize(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentHorizontallyScrollable(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentVerticallyScrollable(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedHorizontalScrollPercent(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedVerticalScrollPercent(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedHorizontalViewSize(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedVerticalViewSize(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedHorizontallyScrollable(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedVerticallyScrollable(
        WINBOOL *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationScrollPattern, 0x88f4d42a, 0xe881, 0x459d, 0xa7,0x7c, 0x73,0xbb,0xbb,0x7e,0x02,0xdc)
#endif
#else
typedef struct IUIAutomationScrollPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationScrollPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationScrollPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationScrollPattern *This);

    /*** IUIAutomationScrollPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Scroll)(
        IUIAutomationScrollPattern *This,
        enum ScrollAmount horizontalAmount,
        enum ScrollAmount verticalAmount);

    HRESULT (STDMETHODCALLTYPE *SetScrollPercent)(
        IUIAutomationScrollPattern *This,
        double horizontalPercent,
        double verticalPercent);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHorizontalScrollPercent)(
        IUIAutomationScrollPattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentVerticalScrollPercent)(
        IUIAutomationScrollPattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHorizontalViewSize)(
        IUIAutomationScrollPattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentVerticalViewSize)(
        IUIAutomationScrollPattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHorizontallyScrollable)(
        IUIAutomationScrollPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentVerticallyScrollable)(
        IUIAutomationScrollPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHorizontalScrollPercent)(
        IUIAutomationScrollPattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedVerticalScrollPercent)(
        IUIAutomationScrollPattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHorizontalViewSize)(
        IUIAutomationScrollPattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedVerticalViewSize)(
        IUIAutomationScrollPattern *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHorizontallyScrollable)(
        IUIAutomationScrollPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedVerticallyScrollable)(
        IUIAutomationScrollPattern *This,
        WINBOOL *retVal);

    END_INTERFACE
} IUIAutomationScrollPatternVtbl;

interface IUIAutomationScrollPattern {
    CONST_VTBL IUIAutomationScrollPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationScrollPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationScrollPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationScrollPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationScrollPattern methods ***/
#define IUIAutomationScrollPattern_Scroll(This,horizontalAmount,verticalAmount) (This)->lpVtbl->Scroll(This,horizontalAmount,verticalAmount)
#define IUIAutomationScrollPattern_SetScrollPercent(This,horizontalPercent,verticalPercent) (This)->lpVtbl->SetScrollPercent(This,horizontalPercent,verticalPercent)
#define IUIAutomationScrollPattern_get_CurrentHorizontalScrollPercent(This,retVal) (This)->lpVtbl->get_CurrentHorizontalScrollPercent(This,retVal)
#define IUIAutomationScrollPattern_get_CurrentVerticalScrollPercent(This,retVal) (This)->lpVtbl->get_CurrentVerticalScrollPercent(This,retVal)
#define IUIAutomationScrollPattern_get_CurrentHorizontalViewSize(This,retVal) (This)->lpVtbl->get_CurrentHorizontalViewSize(This,retVal)
#define IUIAutomationScrollPattern_get_CurrentVerticalViewSize(This,retVal) (This)->lpVtbl->get_CurrentVerticalViewSize(This,retVal)
#define IUIAutomationScrollPattern_get_CurrentHorizontallyScrollable(This,retVal) (This)->lpVtbl->get_CurrentHorizontallyScrollable(This,retVal)
#define IUIAutomationScrollPattern_get_CurrentVerticallyScrollable(This,retVal) (This)->lpVtbl->get_CurrentVerticallyScrollable(This,retVal)
#define IUIAutomationScrollPattern_get_CachedHorizontalScrollPercent(This,retVal) (This)->lpVtbl->get_CachedHorizontalScrollPercent(This,retVal)
#define IUIAutomationScrollPattern_get_CachedVerticalScrollPercent(This,retVal) (This)->lpVtbl->get_CachedVerticalScrollPercent(This,retVal)
#define IUIAutomationScrollPattern_get_CachedHorizontalViewSize(This,retVal) (This)->lpVtbl->get_CachedHorizontalViewSize(This,retVal)
#define IUIAutomationScrollPattern_get_CachedVerticalViewSize(This,retVal) (This)->lpVtbl->get_CachedVerticalViewSize(This,retVal)
#define IUIAutomationScrollPattern_get_CachedHorizontallyScrollable(This,retVal) (This)->lpVtbl->get_CachedHorizontallyScrollable(This,retVal)
#define IUIAutomationScrollPattern_get_CachedVerticallyScrollable(This,retVal) (This)->lpVtbl->get_CachedVerticallyScrollable(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationScrollPattern_QueryInterface(IUIAutomationScrollPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationScrollPattern_AddRef(IUIAutomationScrollPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationScrollPattern_Release(IUIAutomationScrollPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationScrollPattern methods ***/
static inline HRESULT IUIAutomationScrollPattern_Scroll(IUIAutomationScrollPattern* This,enum ScrollAmount horizontalAmount,enum ScrollAmount verticalAmount) {
    return This->lpVtbl->Scroll(This,horizontalAmount,verticalAmount);
}
static inline HRESULT IUIAutomationScrollPattern_SetScrollPercent(IUIAutomationScrollPattern* This,double horizontalPercent,double verticalPercent) {
    return This->lpVtbl->SetScrollPercent(This,horizontalPercent,verticalPercent);
}
static inline HRESULT IUIAutomationScrollPattern_get_CurrentHorizontalScrollPercent(IUIAutomationScrollPattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentHorizontalScrollPercent(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CurrentVerticalScrollPercent(IUIAutomationScrollPattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentVerticalScrollPercent(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CurrentHorizontalViewSize(IUIAutomationScrollPattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentHorizontalViewSize(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CurrentVerticalViewSize(IUIAutomationScrollPattern* This,double *retVal) {
    return This->lpVtbl->get_CurrentVerticalViewSize(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CurrentHorizontallyScrollable(IUIAutomationScrollPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHorizontallyScrollable(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CurrentVerticallyScrollable(IUIAutomationScrollPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentVerticallyScrollable(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CachedHorizontalScrollPercent(IUIAutomationScrollPattern* This,double *retVal) {
    return This->lpVtbl->get_CachedHorizontalScrollPercent(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CachedVerticalScrollPercent(IUIAutomationScrollPattern* This,double *retVal) {
    return This->lpVtbl->get_CachedVerticalScrollPercent(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CachedHorizontalViewSize(IUIAutomationScrollPattern* This,double *retVal) {
    return This->lpVtbl->get_CachedHorizontalViewSize(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CachedVerticalViewSize(IUIAutomationScrollPattern* This,double *retVal) {
    return This->lpVtbl->get_CachedVerticalViewSize(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CachedHorizontallyScrollable(IUIAutomationScrollPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHorizontallyScrollable(This,retVal);
}
static inline HRESULT IUIAutomationScrollPattern_get_CachedVerticallyScrollable(IUIAutomationScrollPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedVerticallyScrollable(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationScrollPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationScrollItemPattern interface
 */
#ifndef __IUIAutomationScrollItemPattern_INTERFACE_DEFINED__
#define __IUIAutomationScrollItemPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationScrollItemPattern, 0xb488300f, 0xd015, 0x4f19, 0x9c,0x29, 0xbb,0x59,0x5e,0x36,0x45,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b488300f-d015-4f19-9c29-bb595e3645ef")
IUIAutomationScrollItemPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ScrollIntoView(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationScrollItemPattern, 0xb488300f, 0xd015, 0x4f19, 0x9c,0x29, 0xbb,0x59,0x5e,0x36,0x45,0xef)
#endif
#else
typedef struct IUIAutomationScrollItemPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationScrollItemPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationScrollItemPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationScrollItemPattern *This);

    /*** IUIAutomationScrollItemPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *ScrollIntoView)(
        IUIAutomationScrollItemPattern *This);

    END_INTERFACE
} IUIAutomationScrollItemPatternVtbl;

interface IUIAutomationScrollItemPattern {
    CONST_VTBL IUIAutomationScrollItemPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationScrollItemPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationScrollItemPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationScrollItemPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationScrollItemPattern methods ***/
#define IUIAutomationScrollItemPattern_ScrollIntoView(This) (This)->lpVtbl->ScrollIntoView(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationScrollItemPattern_QueryInterface(IUIAutomationScrollItemPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationScrollItemPattern_AddRef(IUIAutomationScrollItemPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationScrollItemPattern_Release(IUIAutomationScrollItemPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationScrollItemPattern methods ***/
static inline HRESULT IUIAutomationScrollItemPattern_ScrollIntoView(IUIAutomationScrollItemPattern* This) {
    return This->lpVtbl->ScrollIntoView(This);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationScrollItemPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationSelectionPattern interface
 */
#ifndef __IUIAutomationSelectionPattern_INTERFACE_DEFINED__
#define __IUIAutomationSelectionPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationSelectionPattern, 0x5ed5202e, 0xb2ac, 0x47a6, 0xb6,0x38, 0x4b,0x0b,0xf1,0x40,0xd7,0x8e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5ed5202e-b2ac-47a6-b638-4b0bf140d78e")
IUIAutomationSelectionPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCurrentSelection(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCanSelectMultiple(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsSelectionRequired(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedSelection(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCanSelectMultiple(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsSelectionRequired(
        WINBOOL *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationSelectionPattern, 0x5ed5202e, 0xb2ac, 0x47a6, 0xb6,0x38, 0x4b,0x0b,0xf1,0x40,0xd7,0x8e)
#endif
#else
typedef struct IUIAutomationSelectionPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationSelectionPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationSelectionPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationSelectionPattern *This);

    /*** IUIAutomationSelectionPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
        IUIAutomationSelectionPattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanSelectMultiple)(
        IUIAutomationSelectionPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsSelectionRequired)(
        IUIAutomationSelectionPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedSelection)(
        IUIAutomationSelectionPattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanSelectMultiple)(
        IUIAutomationSelectionPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsSelectionRequired)(
        IUIAutomationSelectionPattern *This,
        WINBOOL *retVal);

    END_INTERFACE
} IUIAutomationSelectionPatternVtbl;

interface IUIAutomationSelectionPattern {
    CONST_VTBL IUIAutomationSelectionPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationSelectionPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationSelectionPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationSelectionPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationSelectionPattern methods ***/
#define IUIAutomationSelectionPattern_GetCurrentSelection(This,retVal) (This)->lpVtbl->GetCurrentSelection(This,retVal)
#define IUIAutomationSelectionPattern_get_CurrentCanSelectMultiple(This,retVal) (This)->lpVtbl->get_CurrentCanSelectMultiple(This,retVal)
#define IUIAutomationSelectionPattern_get_CurrentIsSelectionRequired(This,retVal) (This)->lpVtbl->get_CurrentIsSelectionRequired(This,retVal)
#define IUIAutomationSelectionPattern_GetCachedSelection(This,retVal) (This)->lpVtbl->GetCachedSelection(This,retVal)
#define IUIAutomationSelectionPattern_get_CachedCanSelectMultiple(This,retVal) (This)->lpVtbl->get_CachedCanSelectMultiple(This,retVal)
#define IUIAutomationSelectionPattern_get_CachedIsSelectionRequired(This,retVal) (This)->lpVtbl->get_CachedIsSelectionRequired(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationSelectionPattern_QueryInterface(IUIAutomationSelectionPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationSelectionPattern_AddRef(IUIAutomationSelectionPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationSelectionPattern_Release(IUIAutomationSelectionPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationSelectionPattern methods ***/
static inline HRESULT IUIAutomationSelectionPattern_GetCurrentSelection(IUIAutomationSelectionPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCurrentSelection(This,retVal);
}
static inline HRESULT IUIAutomationSelectionPattern_get_CurrentCanSelectMultiple(IUIAutomationSelectionPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanSelectMultiple(This,retVal);
}
static inline HRESULT IUIAutomationSelectionPattern_get_CurrentIsSelectionRequired(IUIAutomationSelectionPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsSelectionRequired(This,retVal);
}
static inline HRESULT IUIAutomationSelectionPattern_GetCachedSelection(IUIAutomationSelectionPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCachedSelection(This,retVal);
}
static inline HRESULT IUIAutomationSelectionPattern_get_CachedCanSelectMultiple(IUIAutomationSelectionPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanSelectMultiple(This,retVal);
}
static inline HRESULT IUIAutomationSelectionPattern_get_CachedIsSelectionRequired(IUIAutomationSelectionPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsSelectionRequired(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationSelectionPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationSelectionItemPattern interface
 */
#ifndef __IUIAutomationSelectionItemPattern_INTERFACE_DEFINED__
#define __IUIAutomationSelectionItemPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationSelectionItemPattern, 0xa8efa66a, 0x0fda, 0x421a, 0x91,0x94, 0x38,0x02,0x1f,0x35,0x78,0xea);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a8efa66a-0fda-421a-9194-38021f3578ea")
IUIAutomationSelectionItemPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Select(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddToSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveFromSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsSelected(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentSelectionContainer(
        IUIAutomationElement **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsSelected(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedSelectionContainer(
        IUIAutomationElement **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationSelectionItemPattern, 0xa8efa66a, 0x0fda, 0x421a, 0x91,0x94, 0x38,0x02,0x1f,0x35,0x78,0xea)
#endif
#else
typedef struct IUIAutomationSelectionItemPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationSelectionItemPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationSelectionItemPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationSelectionItemPattern *This);

    /*** IUIAutomationSelectionItemPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Select)(
        IUIAutomationSelectionItemPattern *This);

    HRESULT (STDMETHODCALLTYPE *AddToSelection)(
        IUIAutomationSelectionItemPattern *This);

    HRESULT (STDMETHODCALLTYPE *RemoveFromSelection)(
        IUIAutomationSelectionItemPattern *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsSelected)(
        IUIAutomationSelectionItemPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSelectionContainer)(
        IUIAutomationSelectionItemPattern *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsSelected)(
        IUIAutomationSelectionItemPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedSelectionContainer)(
        IUIAutomationSelectionItemPattern *This,
        IUIAutomationElement **retVal);

    END_INTERFACE
} IUIAutomationSelectionItemPatternVtbl;

interface IUIAutomationSelectionItemPattern {
    CONST_VTBL IUIAutomationSelectionItemPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationSelectionItemPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationSelectionItemPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationSelectionItemPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationSelectionItemPattern methods ***/
#define IUIAutomationSelectionItemPattern_Select(This) (This)->lpVtbl->Select(This)
#define IUIAutomationSelectionItemPattern_AddToSelection(This) (This)->lpVtbl->AddToSelection(This)
#define IUIAutomationSelectionItemPattern_RemoveFromSelection(This) (This)->lpVtbl->RemoveFromSelection(This)
#define IUIAutomationSelectionItemPattern_get_CurrentIsSelected(This,retVal) (This)->lpVtbl->get_CurrentIsSelected(This,retVal)
#define IUIAutomationSelectionItemPattern_get_CurrentSelectionContainer(This,retVal) (This)->lpVtbl->get_CurrentSelectionContainer(This,retVal)
#define IUIAutomationSelectionItemPattern_get_CachedIsSelected(This,retVal) (This)->lpVtbl->get_CachedIsSelected(This,retVal)
#define IUIAutomationSelectionItemPattern_get_CachedSelectionContainer(This,retVal) (This)->lpVtbl->get_CachedSelectionContainer(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationSelectionItemPattern_QueryInterface(IUIAutomationSelectionItemPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationSelectionItemPattern_AddRef(IUIAutomationSelectionItemPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationSelectionItemPattern_Release(IUIAutomationSelectionItemPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationSelectionItemPattern methods ***/
static inline HRESULT IUIAutomationSelectionItemPattern_Select(IUIAutomationSelectionItemPattern* This) {
    return This->lpVtbl->Select(This);
}
static inline HRESULT IUIAutomationSelectionItemPattern_AddToSelection(IUIAutomationSelectionItemPattern* This) {
    return This->lpVtbl->AddToSelection(This);
}
static inline HRESULT IUIAutomationSelectionItemPattern_RemoveFromSelection(IUIAutomationSelectionItemPattern* This) {
    return This->lpVtbl->RemoveFromSelection(This);
}
static inline HRESULT IUIAutomationSelectionItemPattern_get_CurrentIsSelected(IUIAutomationSelectionItemPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsSelected(This,retVal);
}
static inline HRESULT IUIAutomationSelectionItemPattern_get_CurrentSelectionContainer(IUIAutomationSelectionItemPattern* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentSelectionContainer(This,retVal);
}
static inline HRESULT IUIAutomationSelectionItemPattern_get_CachedIsSelected(IUIAutomationSelectionItemPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsSelected(This,retVal);
}
static inline HRESULT IUIAutomationSelectionItemPattern_get_CachedSelectionContainer(IUIAutomationSelectionItemPattern* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedSelectionContainer(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationSelectionItemPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationSynchronizedInputPattern interface
 */
#ifndef __IUIAutomationSynchronizedInputPattern_INTERFACE_DEFINED__
#define __IUIAutomationSynchronizedInputPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationSynchronizedInputPattern, 0x2233be0b, 0xafb7, 0x448b, 0x9f,0xda, 0x3b,0x37,0x8a,0xa5,0xea,0xe1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2233be0b-afb7-448b-9fda-3b378aa5eae1")
IUIAutomationSynchronizedInputPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE StartListening(
        enum SynchronizedInputType inputType) = 0;

    virtual HRESULT STDMETHODCALLTYPE Cancel(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationSynchronizedInputPattern, 0x2233be0b, 0xafb7, 0x448b, 0x9f,0xda, 0x3b,0x37,0x8a,0xa5,0xea,0xe1)
#endif
#else
typedef struct IUIAutomationSynchronizedInputPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationSynchronizedInputPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationSynchronizedInputPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationSynchronizedInputPattern *This);

    /*** IUIAutomationSynchronizedInputPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *StartListening)(
        IUIAutomationSynchronizedInputPattern *This,
        enum SynchronizedInputType inputType);

    HRESULT (STDMETHODCALLTYPE *Cancel)(
        IUIAutomationSynchronizedInputPattern *This);

    END_INTERFACE
} IUIAutomationSynchronizedInputPatternVtbl;

interface IUIAutomationSynchronizedInputPattern {
    CONST_VTBL IUIAutomationSynchronizedInputPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationSynchronizedInputPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationSynchronizedInputPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationSynchronizedInputPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationSynchronizedInputPattern methods ***/
#define IUIAutomationSynchronizedInputPattern_StartListening(This,inputType) (This)->lpVtbl->StartListening(This,inputType)
#define IUIAutomationSynchronizedInputPattern_Cancel(This) (This)->lpVtbl->Cancel(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationSynchronizedInputPattern_QueryInterface(IUIAutomationSynchronizedInputPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationSynchronizedInputPattern_AddRef(IUIAutomationSynchronizedInputPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationSynchronizedInputPattern_Release(IUIAutomationSynchronizedInputPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationSynchronizedInputPattern methods ***/
static inline HRESULT IUIAutomationSynchronizedInputPattern_StartListening(IUIAutomationSynchronizedInputPattern* This,enum SynchronizedInputType inputType) {
    return This->lpVtbl->StartListening(This,inputType);
}
static inline HRESULT IUIAutomationSynchronizedInputPattern_Cancel(IUIAutomationSynchronizedInputPattern* This) {
    return This->lpVtbl->Cancel(This);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationSynchronizedInputPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTablePattern interface
 */
#ifndef __IUIAutomationTablePattern_INTERFACE_DEFINED__
#define __IUIAutomationTablePattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTablePattern, 0x620e691c, 0xea96, 0x4710, 0xa8,0x50, 0x75,0x4b,0x24,0xce,0x24,0x17);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("620e691c-ea96-4710-a850-754b24ce2417")
IUIAutomationTablePattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCurrentRowHeaders(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentColumnHeaders(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentRowOrColumnMajor(
        enum RowOrColumnMajor *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedRowHeaders(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedColumnHeaders(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedRowOrColumnMajor(
        enum RowOrColumnMajor *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTablePattern, 0x620e691c, 0xea96, 0x4710, 0xa8,0x50, 0x75,0x4b,0x24,0xce,0x24,0x17)
#endif
#else
typedef struct IUIAutomationTablePatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTablePattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTablePattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTablePattern *This);

    /*** IUIAutomationTablePattern methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCurrentRowHeaders)(
        IUIAutomationTablePattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentColumnHeaders)(
        IUIAutomationTablePattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentRowOrColumnMajor)(
        IUIAutomationTablePattern *This,
        enum RowOrColumnMajor *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedRowHeaders)(
        IUIAutomationTablePattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedColumnHeaders)(
        IUIAutomationTablePattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedRowOrColumnMajor)(
        IUIAutomationTablePattern *This,
        enum RowOrColumnMajor *retVal);

    END_INTERFACE
} IUIAutomationTablePatternVtbl;

interface IUIAutomationTablePattern {
    CONST_VTBL IUIAutomationTablePatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTablePattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTablePattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTablePattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTablePattern methods ***/
#define IUIAutomationTablePattern_GetCurrentRowHeaders(This,retVal) (This)->lpVtbl->GetCurrentRowHeaders(This,retVal)
#define IUIAutomationTablePattern_GetCurrentColumnHeaders(This,retVal) (This)->lpVtbl->GetCurrentColumnHeaders(This,retVal)
#define IUIAutomationTablePattern_get_CurrentRowOrColumnMajor(This,retVal) (This)->lpVtbl->get_CurrentRowOrColumnMajor(This,retVal)
#define IUIAutomationTablePattern_GetCachedRowHeaders(This,retVal) (This)->lpVtbl->GetCachedRowHeaders(This,retVal)
#define IUIAutomationTablePattern_GetCachedColumnHeaders(This,retVal) (This)->lpVtbl->GetCachedColumnHeaders(This,retVal)
#define IUIAutomationTablePattern_get_CachedRowOrColumnMajor(This,retVal) (This)->lpVtbl->get_CachedRowOrColumnMajor(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTablePattern_QueryInterface(IUIAutomationTablePattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTablePattern_AddRef(IUIAutomationTablePattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTablePattern_Release(IUIAutomationTablePattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTablePattern methods ***/
static inline HRESULT IUIAutomationTablePattern_GetCurrentRowHeaders(IUIAutomationTablePattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCurrentRowHeaders(This,retVal);
}
static inline HRESULT IUIAutomationTablePattern_GetCurrentColumnHeaders(IUIAutomationTablePattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCurrentColumnHeaders(This,retVal);
}
static inline HRESULT IUIAutomationTablePattern_get_CurrentRowOrColumnMajor(IUIAutomationTablePattern* This,enum RowOrColumnMajor *retVal) {
    return This->lpVtbl->get_CurrentRowOrColumnMajor(This,retVal);
}
static inline HRESULT IUIAutomationTablePattern_GetCachedRowHeaders(IUIAutomationTablePattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCachedRowHeaders(This,retVal);
}
static inline HRESULT IUIAutomationTablePattern_GetCachedColumnHeaders(IUIAutomationTablePattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCachedColumnHeaders(This,retVal);
}
static inline HRESULT IUIAutomationTablePattern_get_CachedRowOrColumnMajor(IUIAutomationTablePattern* This,enum RowOrColumnMajor *retVal) {
    return This->lpVtbl->get_CachedRowOrColumnMajor(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTablePattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTableItemPattern interface
 */
#ifndef __IUIAutomationTableItemPattern_INTERFACE_DEFINED__
#define __IUIAutomationTableItemPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTableItemPattern, 0x0b964eb3, 0xef2e, 0x4464, 0x9c,0x79, 0x61,0xd6,0x17,0x37,0xa2,0x7e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0b964eb3-ef2e-4464-9c79-61d61737a27e")
IUIAutomationTableItemPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCurrentRowHeaderItems(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentColumnHeaderItems(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedRowHeaderItems(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedColumnHeaderItems(
        IUIAutomationElementArray **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTableItemPattern, 0x0b964eb3, 0xef2e, 0x4464, 0x9c,0x79, 0x61,0xd6,0x17,0x37,0xa2,0x7e)
#endif
#else
typedef struct IUIAutomationTableItemPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTableItemPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTableItemPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTableItemPattern *This);

    /*** IUIAutomationTableItemPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCurrentRowHeaderItems)(
        IUIAutomationTableItemPattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentColumnHeaderItems)(
        IUIAutomationTableItemPattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedRowHeaderItems)(
        IUIAutomationTableItemPattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedColumnHeaderItems)(
        IUIAutomationTableItemPattern *This,
        IUIAutomationElementArray **retVal);

    END_INTERFACE
} IUIAutomationTableItemPatternVtbl;

interface IUIAutomationTableItemPattern {
    CONST_VTBL IUIAutomationTableItemPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTableItemPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTableItemPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTableItemPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTableItemPattern methods ***/
#define IUIAutomationTableItemPattern_GetCurrentRowHeaderItems(This,retVal) (This)->lpVtbl->GetCurrentRowHeaderItems(This,retVal)
#define IUIAutomationTableItemPattern_GetCurrentColumnHeaderItems(This,retVal) (This)->lpVtbl->GetCurrentColumnHeaderItems(This,retVal)
#define IUIAutomationTableItemPattern_GetCachedRowHeaderItems(This,retVal) (This)->lpVtbl->GetCachedRowHeaderItems(This,retVal)
#define IUIAutomationTableItemPattern_GetCachedColumnHeaderItems(This,retVal) (This)->lpVtbl->GetCachedColumnHeaderItems(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTableItemPattern_QueryInterface(IUIAutomationTableItemPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTableItemPattern_AddRef(IUIAutomationTableItemPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTableItemPattern_Release(IUIAutomationTableItemPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTableItemPattern methods ***/
static inline HRESULT IUIAutomationTableItemPattern_GetCurrentRowHeaderItems(IUIAutomationTableItemPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCurrentRowHeaderItems(This,retVal);
}
static inline HRESULT IUIAutomationTableItemPattern_GetCurrentColumnHeaderItems(IUIAutomationTableItemPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCurrentColumnHeaderItems(This,retVal);
}
static inline HRESULT IUIAutomationTableItemPattern_GetCachedRowHeaderItems(IUIAutomationTableItemPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCachedRowHeaderItems(This,retVal);
}
static inline HRESULT IUIAutomationTableItemPattern_GetCachedColumnHeaderItems(IUIAutomationTableItemPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCachedColumnHeaderItems(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTableItemPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTogglePattern interface
 */
#ifndef __IUIAutomationTogglePattern_INTERFACE_DEFINED__
#define __IUIAutomationTogglePattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTogglePattern, 0x94cf8058, 0x9b8d, 0x4ab9, 0x8b,0xfd, 0x4c,0xd0,0xa3,0x3c,0x8c,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("94cf8058-9b8d-4ab9-8bfd-4cd0a33c8c70")
IUIAutomationTogglePattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Toggle(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentToggleState(
        enum ToggleState *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedToggleState(
        enum ToggleState *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTogglePattern, 0x94cf8058, 0x9b8d, 0x4ab9, 0x8b,0xfd, 0x4c,0xd0,0xa3,0x3c,0x8c,0x70)
#endif
#else
typedef struct IUIAutomationTogglePatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTogglePattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTogglePattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTogglePattern *This);

    /*** IUIAutomationTogglePattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Toggle)(
        IUIAutomationTogglePattern *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentToggleState)(
        IUIAutomationTogglePattern *This,
        enum ToggleState *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedToggleState)(
        IUIAutomationTogglePattern *This,
        enum ToggleState *retVal);

    END_INTERFACE
} IUIAutomationTogglePatternVtbl;

interface IUIAutomationTogglePattern {
    CONST_VTBL IUIAutomationTogglePatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTogglePattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTogglePattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTogglePattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTogglePattern methods ***/
#define IUIAutomationTogglePattern_Toggle(This) (This)->lpVtbl->Toggle(This)
#define IUIAutomationTogglePattern_get_CurrentToggleState(This,retVal) (This)->lpVtbl->get_CurrentToggleState(This,retVal)
#define IUIAutomationTogglePattern_get_CachedToggleState(This,retVal) (This)->lpVtbl->get_CachedToggleState(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTogglePattern_QueryInterface(IUIAutomationTogglePattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTogglePattern_AddRef(IUIAutomationTogglePattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTogglePattern_Release(IUIAutomationTogglePattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTogglePattern methods ***/
static inline HRESULT IUIAutomationTogglePattern_Toggle(IUIAutomationTogglePattern* This) {
    return This->lpVtbl->Toggle(This);
}
static inline HRESULT IUIAutomationTogglePattern_get_CurrentToggleState(IUIAutomationTogglePattern* This,enum ToggleState *retVal) {
    return This->lpVtbl->get_CurrentToggleState(This,retVal);
}
static inline HRESULT IUIAutomationTogglePattern_get_CachedToggleState(IUIAutomationTogglePattern* This,enum ToggleState *retVal) {
    return This->lpVtbl->get_CachedToggleState(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTogglePattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTransformPattern interface
 */
#ifndef __IUIAutomationTransformPattern_INTERFACE_DEFINED__
#define __IUIAutomationTransformPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTransformPattern, 0xa9b55844, 0xa55d, 0x4ef0, 0x92,0x6d, 0x56,0x9c,0x16,0xff,0x89,0xbb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a9b55844-a55d-4ef0-926d-569c16ff89bb")
IUIAutomationTransformPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Move(
        double x,
        double y) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resize(
        double width,
        double height) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rotate(
        double degrees) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCanMove(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCanResize(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCanRotate(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCanMove(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCanResize(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCanRotate(
        WINBOOL *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTransformPattern, 0xa9b55844, 0xa55d, 0x4ef0, 0x92,0x6d, 0x56,0x9c,0x16,0xff,0x89,0xbb)
#endif
#else
typedef struct IUIAutomationTransformPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTransformPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTransformPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTransformPattern *This);

    /*** IUIAutomationTransformPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Move)(
        IUIAutomationTransformPattern *This,
        double x,
        double y);

    HRESULT (STDMETHODCALLTYPE *Resize)(
        IUIAutomationTransformPattern *This,
        double width,
        double height);

    HRESULT (STDMETHODCALLTYPE *Rotate)(
        IUIAutomationTransformPattern *This,
        double degrees);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanMove)(
        IUIAutomationTransformPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanResize)(
        IUIAutomationTransformPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanRotate)(
        IUIAutomationTransformPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanMove)(
        IUIAutomationTransformPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanResize)(
        IUIAutomationTransformPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanRotate)(
        IUIAutomationTransformPattern *This,
        WINBOOL *retVal);

    END_INTERFACE
} IUIAutomationTransformPatternVtbl;

interface IUIAutomationTransformPattern {
    CONST_VTBL IUIAutomationTransformPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTransformPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTransformPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTransformPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTransformPattern methods ***/
#define IUIAutomationTransformPattern_Move(This,x,y) (This)->lpVtbl->Move(This,x,y)
#define IUIAutomationTransformPattern_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
#define IUIAutomationTransformPattern_Rotate(This,degrees) (This)->lpVtbl->Rotate(This,degrees)
#define IUIAutomationTransformPattern_get_CurrentCanMove(This,retVal) (This)->lpVtbl->get_CurrentCanMove(This,retVal)
#define IUIAutomationTransformPattern_get_CurrentCanResize(This,retVal) (This)->lpVtbl->get_CurrentCanResize(This,retVal)
#define IUIAutomationTransformPattern_get_CurrentCanRotate(This,retVal) (This)->lpVtbl->get_CurrentCanRotate(This,retVal)
#define IUIAutomationTransformPattern_get_CachedCanMove(This,retVal) (This)->lpVtbl->get_CachedCanMove(This,retVal)
#define IUIAutomationTransformPattern_get_CachedCanResize(This,retVal) (This)->lpVtbl->get_CachedCanResize(This,retVal)
#define IUIAutomationTransformPattern_get_CachedCanRotate(This,retVal) (This)->lpVtbl->get_CachedCanRotate(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTransformPattern_QueryInterface(IUIAutomationTransformPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTransformPattern_AddRef(IUIAutomationTransformPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTransformPattern_Release(IUIAutomationTransformPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTransformPattern methods ***/
static inline HRESULT IUIAutomationTransformPattern_Move(IUIAutomationTransformPattern* This,double x,double y) {
    return This->lpVtbl->Move(This,x,y);
}
static inline HRESULT IUIAutomationTransformPattern_Resize(IUIAutomationTransformPattern* This,double width,double height) {
    return This->lpVtbl->Resize(This,width,height);
}
static inline HRESULT IUIAutomationTransformPattern_Rotate(IUIAutomationTransformPattern* This,double degrees) {
    return This->lpVtbl->Rotate(This,degrees);
}
static inline HRESULT IUIAutomationTransformPattern_get_CurrentCanMove(IUIAutomationTransformPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanMove(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern_get_CurrentCanResize(IUIAutomationTransformPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanResize(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern_get_CurrentCanRotate(IUIAutomationTransformPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanRotate(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern_get_CachedCanMove(IUIAutomationTransformPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanMove(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern_get_CachedCanResize(IUIAutomationTransformPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanResize(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern_get_CachedCanRotate(IUIAutomationTransformPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanRotate(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTransformPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationValuePattern interface
 */
#ifndef __IUIAutomationValuePattern_INTERFACE_DEFINED__
#define __IUIAutomationValuePattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationValuePattern, 0xa94cd8b1, 0x0844, 0x4cd6, 0x9d,0x2d, 0x64,0x05,0x37,0xab,0x39,0xe9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a94cd8b1-0844-4cd6-9d2d-640537ab39e9")
IUIAutomationValuePattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetValue(
        BSTR val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentValue(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsReadOnly(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedValue(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsReadOnly(
        WINBOOL *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationValuePattern, 0xa94cd8b1, 0x0844, 0x4cd6, 0x9d,0x2d, 0x64,0x05,0x37,0xab,0x39,0xe9)
#endif
#else
typedef struct IUIAutomationValuePatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationValuePattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationValuePattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationValuePattern *This);

    /*** IUIAutomationValuePattern methods ***/
    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IUIAutomationValuePattern *This,
        BSTR val);

    HRESULT (STDMETHODCALLTYPE *get_CurrentValue)(
        IUIAutomationValuePattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsReadOnly)(
        IUIAutomationValuePattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedValue)(
        IUIAutomationValuePattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsReadOnly)(
        IUIAutomationValuePattern *This,
        WINBOOL *retVal);

    END_INTERFACE
} IUIAutomationValuePatternVtbl;

interface IUIAutomationValuePattern {
    CONST_VTBL IUIAutomationValuePatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationValuePattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationValuePattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationValuePattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationValuePattern methods ***/
#define IUIAutomationValuePattern_SetValue(This,val) (This)->lpVtbl->SetValue(This,val)
#define IUIAutomationValuePattern_get_CurrentValue(This,retVal) (This)->lpVtbl->get_CurrentValue(This,retVal)
#define IUIAutomationValuePattern_get_CurrentIsReadOnly(This,retVal) (This)->lpVtbl->get_CurrentIsReadOnly(This,retVal)
#define IUIAutomationValuePattern_get_CachedValue(This,retVal) (This)->lpVtbl->get_CachedValue(This,retVal)
#define IUIAutomationValuePattern_get_CachedIsReadOnly(This,retVal) (This)->lpVtbl->get_CachedIsReadOnly(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationValuePattern_QueryInterface(IUIAutomationValuePattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationValuePattern_AddRef(IUIAutomationValuePattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationValuePattern_Release(IUIAutomationValuePattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationValuePattern methods ***/
static inline HRESULT IUIAutomationValuePattern_SetValue(IUIAutomationValuePattern* This,BSTR val) {
    return This->lpVtbl->SetValue(This,val);
}
static inline HRESULT IUIAutomationValuePattern_get_CurrentValue(IUIAutomationValuePattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentValue(This,retVal);
}
static inline HRESULT IUIAutomationValuePattern_get_CurrentIsReadOnly(IUIAutomationValuePattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsReadOnly(This,retVal);
}
static inline HRESULT IUIAutomationValuePattern_get_CachedValue(IUIAutomationValuePattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedValue(This,retVal);
}
static inline HRESULT IUIAutomationValuePattern_get_CachedIsReadOnly(IUIAutomationValuePattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsReadOnly(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationValuePattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationWindowPattern interface
 */
#ifndef __IUIAutomationWindowPattern_INTERFACE_DEFINED__
#define __IUIAutomationWindowPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationWindowPattern, 0x0faef453, 0x9208, 0x43ef, 0xbb,0xb2, 0x3b,0x48,0x51,0x77,0x86,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0faef453-9208-43ef-bbb2-3b485177864f")
IUIAutomationWindowPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Close(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitForInputIdle(
        int milliseconds,
        WINBOOL *success) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWindowVisualState(
        enum WindowVisualState state) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCanMaximize(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCanMinimize(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsModal(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsTopmost(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentWindowVisualState(
        enum WindowVisualState *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentWindowInteractionState(
        enum WindowInteractionState *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCanMaximize(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCanMinimize(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsModal(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsTopmost(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedWindowVisualState(
        enum WindowVisualState *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedWindowInteractionState(
        enum WindowInteractionState *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationWindowPattern, 0x0faef453, 0x9208, 0x43ef, 0xbb,0xb2, 0x3b,0x48,0x51,0x77,0x86,0x4f)
#endif
#else
typedef struct IUIAutomationWindowPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationWindowPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationWindowPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationWindowPattern *This);

    /*** IUIAutomationWindowPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Close)(
        IUIAutomationWindowPattern *This);

    HRESULT (STDMETHODCALLTYPE *WaitForInputIdle)(
        IUIAutomationWindowPattern *This,
        int milliseconds,
        WINBOOL *success);

    HRESULT (STDMETHODCALLTYPE *SetWindowVisualState)(
        IUIAutomationWindowPattern *This,
        enum WindowVisualState state);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanMaximize)(
        IUIAutomationWindowPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanMinimize)(
        IUIAutomationWindowPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsModal)(
        IUIAutomationWindowPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsTopmost)(
        IUIAutomationWindowPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentWindowVisualState)(
        IUIAutomationWindowPattern *This,
        enum WindowVisualState *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentWindowInteractionState)(
        IUIAutomationWindowPattern *This,
        enum WindowInteractionState *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanMaximize)(
        IUIAutomationWindowPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanMinimize)(
        IUIAutomationWindowPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsModal)(
        IUIAutomationWindowPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsTopmost)(
        IUIAutomationWindowPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedWindowVisualState)(
        IUIAutomationWindowPattern *This,
        enum WindowVisualState *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedWindowInteractionState)(
        IUIAutomationWindowPattern *This,
        enum WindowInteractionState *retVal);

    END_INTERFACE
} IUIAutomationWindowPatternVtbl;

interface IUIAutomationWindowPattern {
    CONST_VTBL IUIAutomationWindowPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationWindowPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationWindowPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationWindowPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationWindowPattern methods ***/
#define IUIAutomationWindowPattern_Close(This) (This)->lpVtbl->Close(This)
#define IUIAutomationWindowPattern_WaitForInputIdle(This,milliseconds,success) (This)->lpVtbl->WaitForInputIdle(This,milliseconds,success)
#define IUIAutomationWindowPattern_SetWindowVisualState(This,state) (This)->lpVtbl->SetWindowVisualState(This,state)
#define IUIAutomationWindowPattern_get_CurrentCanMaximize(This,retVal) (This)->lpVtbl->get_CurrentCanMaximize(This,retVal)
#define IUIAutomationWindowPattern_get_CurrentCanMinimize(This,retVal) (This)->lpVtbl->get_CurrentCanMinimize(This,retVal)
#define IUIAutomationWindowPattern_get_CurrentIsModal(This,retVal) (This)->lpVtbl->get_CurrentIsModal(This,retVal)
#define IUIAutomationWindowPattern_get_CurrentIsTopmost(This,retVal) (This)->lpVtbl->get_CurrentIsTopmost(This,retVal)
#define IUIAutomationWindowPattern_get_CurrentWindowVisualState(This,retVal) (This)->lpVtbl->get_CurrentWindowVisualState(This,retVal)
#define IUIAutomationWindowPattern_get_CurrentWindowInteractionState(This,retVal) (This)->lpVtbl->get_CurrentWindowInteractionState(This,retVal)
#define IUIAutomationWindowPattern_get_CachedCanMaximize(This,retVal) (This)->lpVtbl->get_CachedCanMaximize(This,retVal)
#define IUIAutomationWindowPattern_get_CachedCanMinimize(This,retVal) (This)->lpVtbl->get_CachedCanMinimize(This,retVal)
#define IUIAutomationWindowPattern_get_CachedIsModal(This,retVal) (This)->lpVtbl->get_CachedIsModal(This,retVal)
#define IUIAutomationWindowPattern_get_CachedIsTopmost(This,retVal) (This)->lpVtbl->get_CachedIsTopmost(This,retVal)
#define IUIAutomationWindowPattern_get_CachedWindowVisualState(This,retVal) (This)->lpVtbl->get_CachedWindowVisualState(This,retVal)
#define IUIAutomationWindowPattern_get_CachedWindowInteractionState(This,retVal) (This)->lpVtbl->get_CachedWindowInteractionState(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationWindowPattern_QueryInterface(IUIAutomationWindowPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationWindowPattern_AddRef(IUIAutomationWindowPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationWindowPattern_Release(IUIAutomationWindowPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationWindowPattern methods ***/
static inline HRESULT IUIAutomationWindowPattern_Close(IUIAutomationWindowPattern* This) {
    return This->lpVtbl->Close(This);
}
static inline HRESULT IUIAutomationWindowPattern_WaitForInputIdle(IUIAutomationWindowPattern* This,int milliseconds,WINBOOL *success) {
    return This->lpVtbl->WaitForInputIdle(This,milliseconds,success);
}
static inline HRESULT IUIAutomationWindowPattern_SetWindowVisualState(IUIAutomationWindowPattern* This,enum WindowVisualState state) {
    return This->lpVtbl->SetWindowVisualState(This,state);
}
static inline HRESULT IUIAutomationWindowPattern_get_CurrentCanMaximize(IUIAutomationWindowPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanMaximize(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CurrentCanMinimize(IUIAutomationWindowPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanMinimize(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CurrentIsModal(IUIAutomationWindowPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsModal(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CurrentIsTopmost(IUIAutomationWindowPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsTopmost(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CurrentWindowVisualState(IUIAutomationWindowPattern* This,enum WindowVisualState *retVal) {
    return This->lpVtbl->get_CurrentWindowVisualState(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CurrentWindowInteractionState(IUIAutomationWindowPattern* This,enum WindowInteractionState *retVal) {
    return This->lpVtbl->get_CurrentWindowInteractionState(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CachedCanMaximize(IUIAutomationWindowPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanMaximize(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CachedCanMinimize(IUIAutomationWindowPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanMinimize(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CachedIsModal(IUIAutomationWindowPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsModal(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CachedIsTopmost(IUIAutomationWindowPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsTopmost(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CachedWindowVisualState(IUIAutomationWindowPattern* This,enum WindowVisualState *retVal) {
    return This->lpVtbl->get_CachedWindowVisualState(This,retVal);
}
static inline HRESULT IUIAutomationWindowPattern_get_CachedWindowInteractionState(IUIAutomationWindowPattern* This,enum WindowInteractionState *retVal) {
    return This->lpVtbl->get_CachedWindowInteractionState(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationWindowPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTextRange interface
 */
#ifndef __IUIAutomationTextRange_INTERFACE_DEFINED__
#define __IUIAutomationTextRange_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTextRange, 0xa543cc6a, 0xf4ae, 0x494b, 0x82,0x39, 0xc8,0x14,0x48,0x11,0x87,0xa8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a543cc6a-f4ae-494b-8239-c814481187a8")
IUIAutomationTextRange : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Clone(
        IUIAutomationTextRange **clonedRange) = 0;

    virtual HRESULT STDMETHODCALLTYPE Compare(
        IUIAutomationTextRange *range,
        WINBOOL *areSame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CompareEndpoints(
        enum TextPatternRangeEndpoint srcEndPoint,
        IUIAutomationTextRange *range,
        enum TextPatternRangeEndpoint targetEndPoint,
        int *compValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExpandToEnclosingUnit(
        enum TextUnit textUnit) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindAttribute(
        TEXTATTRIBUTEID attr,
        VARIANT val,
        WINBOOL backward,
        IUIAutomationTextRange **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindText(
        BSTR text,
        WINBOOL backward,
        WINBOOL ignoreCase,
        IUIAutomationTextRange **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAttributeValue(
        TEXTATTRIBUTEID attr,
        VARIANT *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBoundingRectangles(
        SAFEARRAY **boundingRects) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnclosingElement(
        IUIAutomationElement **enclosingElement) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetText(
        int maxLength,
        BSTR *text) = 0;

    virtual HRESULT STDMETHODCALLTYPE Move(
        enum TextUnit unit,
        int count,
        int *moved) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveEndpointByUnit(
        enum TextPatternRangeEndpoint endpoint,
        enum TextUnit unit,
        int count,
        int *moved) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveEndpointByRange(
        enum TextPatternRangeEndpoint srcEndPoint,
        IUIAutomationTextRange *range,
        enum TextPatternRangeEndpoint targetEndPoint) = 0;

    virtual HRESULT STDMETHODCALLTYPE Select(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddToSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveFromSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScrollIntoView(
        WINBOOL alignToTop) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetChildren(
        IUIAutomationElementArray **children) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTextRange, 0xa543cc6a, 0xf4ae, 0x494b, 0x82,0x39, 0xc8,0x14,0x48,0x11,0x87,0xa8)
#endif
#else
typedef struct IUIAutomationTextRangeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTextRange *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTextRange *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTextRange *This);

    /*** IUIAutomationTextRange methods ***/
    HRESULT (STDMETHODCALLTYPE *Clone)(
        IUIAutomationTextRange *This,
        IUIAutomationTextRange **clonedRange);

    HRESULT (STDMETHODCALLTYPE *Compare)(
        IUIAutomationTextRange *This,
        IUIAutomationTextRange *range,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *CompareEndpoints)(
        IUIAutomationTextRange *This,
        enum TextPatternRangeEndpoint srcEndPoint,
        IUIAutomationTextRange *range,
        enum TextPatternRangeEndpoint targetEndPoint,
        int *compValue);

    HRESULT (STDMETHODCALLTYPE *ExpandToEnclosingUnit)(
        IUIAutomationTextRange *This,
        enum TextUnit textUnit);

    HRESULT (STDMETHODCALLTYPE *FindAttribute)(
        IUIAutomationTextRange *This,
        TEXTATTRIBUTEID attr,
        VARIANT val,
        WINBOOL backward,
        IUIAutomationTextRange **found);

    HRESULT (STDMETHODCALLTYPE *FindText)(
        IUIAutomationTextRange *This,
        BSTR text,
        WINBOOL backward,
        WINBOOL ignoreCase,
        IUIAutomationTextRange **found);

    HRESULT (STDMETHODCALLTYPE *GetAttributeValue)(
        IUIAutomationTextRange *This,
        TEXTATTRIBUTEID attr,
        VARIANT *value);

    HRESULT (STDMETHODCALLTYPE *GetBoundingRectangles)(
        IUIAutomationTextRange *This,
        SAFEARRAY **boundingRects);

    HRESULT (STDMETHODCALLTYPE *GetEnclosingElement)(
        IUIAutomationTextRange *This,
        IUIAutomationElement **enclosingElement);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        IUIAutomationTextRange *This,
        int maxLength,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *Move)(
        IUIAutomationTextRange *This,
        enum TextUnit unit,
        int count,
        int *moved);

    HRESULT (STDMETHODCALLTYPE *MoveEndpointByUnit)(
        IUIAutomationTextRange *This,
        enum TextPatternRangeEndpoint endpoint,
        enum TextUnit unit,
        int count,
        int *moved);

    HRESULT (STDMETHODCALLTYPE *MoveEndpointByRange)(
        IUIAutomationTextRange *This,
        enum TextPatternRangeEndpoint srcEndPoint,
        IUIAutomationTextRange *range,
        enum TextPatternRangeEndpoint targetEndPoint);

    HRESULT (STDMETHODCALLTYPE *Select)(
        IUIAutomationTextRange *This);

    HRESULT (STDMETHODCALLTYPE *AddToSelection)(
        IUIAutomationTextRange *This);

    HRESULT (STDMETHODCALLTYPE *RemoveFromSelection)(
        IUIAutomationTextRange *This);

    HRESULT (STDMETHODCALLTYPE *ScrollIntoView)(
        IUIAutomationTextRange *This,
        WINBOOL alignToTop);

    HRESULT (STDMETHODCALLTYPE *GetChildren)(
        IUIAutomationTextRange *This,
        IUIAutomationElementArray **children);

    END_INTERFACE
} IUIAutomationTextRangeVtbl;

interface IUIAutomationTextRange {
    CONST_VTBL IUIAutomationTextRangeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTextRange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTextRange_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTextRange_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTextRange methods ***/
#define IUIAutomationTextRange_Clone(This,clonedRange) (This)->lpVtbl->Clone(This,clonedRange)
#define IUIAutomationTextRange_Compare(This,range,areSame) (This)->lpVtbl->Compare(This,range,areSame)
#define IUIAutomationTextRange_CompareEndpoints(This,srcEndPoint,range,targetEndPoint,compValue) (This)->lpVtbl->CompareEndpoints(This,srcEndPoint,range,targetEndPoint,compValue)
#define IUIAutomationTextRange_ExpandToEnclosingUnit(This,textUnit) (This)->lpVtbl->ExpandToEnclosingUnit(This,textUnit)
#define IUIAutomationTextRange_FindAttribute(This,attr,val,backward,found) (This)->lpVtbl->FindAttribute(This,attr,val,backward,found)
#define IUIAutomationTextRange_FindText(This,text,backward,ignoreCase,found) (This)->lpVtbl->FindText(This,text,backward,ignoreCase,found)
#define IUIAutomationTextRange_GetAttributeValue(This,attr,value) (This)->lpVtbl->GetAttributeValue(This,attr,value)
#define IUIAutomationTextRange_GetBoundingRectangles(This,boundingRects) (This)->lpVtbl->GetBoundingRectangles(This,boundingRects)
#define IUIAutomationTextRange_GetEnclosingElement(This,enclosingElement) (This)->lpVtbl->GetEnclosingElement(This,enclosingElement)
#define IUIAutomationTextRange_GetText(This,maxLength,text) (This)->lpVtbl->GetText(This,maxLength,text)
#define IUIAutomationTextRange_Move(This,unit,count,moved) (This)->lpVtbl->Move(This,unit,count,moved)
#define IUIAutomationTextRange_MoveEndpointByUnit(This,endpoint,unit,count,moved) (This)->lpVtbl->MoveEndpointByUnit(This,endpoint,unit,count,moved)
#define IUIAutomationTextRange_MoveEndpointByRange(This,srcEndPoint,range,targetEndPoint) (This)->lpVtbl->MoveEndpointByRange(This,srcEndPoint,range,targetEndPoint)
#define IUIAutomationTextRange_Select(This) (This)->lpVtbl->Select(This)
#define IUIAutomationTextRange_AddToSelection(This) (This)->lpVtbl->AddToSelection(This)
#define IUIAutomationTextRange_RemoveFromSelection(This) (This)->lpVtbl->RemoveFromSelection(This)
#define IUIAutomationTextRange_ScrollIntoView(This,alignToTop) (This)->lpVtbl->ScrollIntoView(This,alignToTop)
#define IUIAutomationTextRange_GetChildren(This,children) (This)->lpVtbl->GetChildren(This,children)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTextRange_QueryInterface(IUIAutomationTextRange* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTextRange_AddRef(IUIAutomationTextRange* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTextRange_Release(IUIAutomationTextRange* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTextRange methods ***/
static inline HRESULT IUIAutomationTextRange_Clone(IUIAutomationTextRange* This,IUIAutomationTextRange **clonedRange) {
    return This->lpVtbl->Clone(This,clonedRange);
}
static inline HRESULT IUIAutomationTextRange_Compare(IUIAutomationTextRange* This,IUIAutomationTextRange *range,WINBOOL *areSame) {
    return This->lpVtbl->Compare(This,range,areSame);
}
static inline HRESULT IUIAutomationTextRange_CompareEndpoints(IUIAutomationTextRange* This,enum TextPatternRangeEndpoint srcEndPoint,IUIAutomationTextRange *range,enum TextPatternRangeEndpoint targetEndPoint,int *compValue) {
    return This->lpVtbl->CompareEndpoints(This,srcEndPoint,range,targetEndPoint,compValue);
}
static inline HRESULT IUIAutomationTextRange_ExpandToEnclosingUnit(IUIAutomationTextRange* This,enum TextUnit textUnit) {
    return This->lpVtbl->ExpandToEnclosingUnit(This,textUnit);
}
static inline HRESULT IUIAutomationTextRange_FindAttribute(IUIAutomationTextRange* This,TEXTATTRIBUTEID attr,VARIANT val,WINBOOL backward,IUIAutomationTextRange **found) {
    return This->lpVtbl->FindAttribute(This,attr,val,backward,found);
}
static inline HRESULT IUIAutomationTextRange_FindText(IUIAutomationTextRange* This,BSTR text,WINBOOL backward,WINBOOL ignoreCase,IUIAutomationTextRange **found) {
    return This->lpVtbl->FindText(This,text,backward,ignoreCase,found);
}
static inline HRESULT IUIAutomationTextRange_GetAttributeValue(IUIAutomationTextRange* This,TEXTATTRIBUTEID attr,VARIANT *value) {
    return This->lpVtbl->GetAttributeValue(This,attr,value);
}
static inline HRESULT IUIAutomationTextRange_GetBoundingRectangles(IUIAutomationTextRange* This,SAFEARRAY **boundingRects) {
    return This->lpVtbl->GetBoundingRectangles(This,boundingRects);
}
static inline HRESULT IUIAutomationTextRange_GetEnclosingElement(IUIAutomationTextRange* This,IUIAutomationElement **enclosingElement) {
    return This->lpVtbl->GetEnclosingElement(This,enclosingElement);
}
static inline HRESULT IUIAutomationTextRange_GetText(IUIAutomationTextRange* This,int maxLength,BSTR *text) {
    return This->lpVtbl->GetText(This,maxLength,text);
}
static inline HRESULT IUIAutomationTextRange_Move(IUIAutomationTextRange* This,enum TextUnit unit,int count,int *moved) {
    return This->lpVtbl->Move(This,unit,count,moved);
}
static inline HRESULT IUIAutomationTextRange_MoveEndpointByUnit(IUIAutomationTextRange* This,enum TextPatternRangeEndpoint endpoint,enum TextUnit unit,int count,int *moved) {
    return This->lpVtbl->MoveEndpointByUnit(This,endpoint,unit,count,moved);
}
static inline HRESULT IUIAutomationTextRange_MoveEndpointByRange(IUIAutomationTextRange* This,enum TextPatternRangeEndpoint srcEndPoint,IUIAutomationTextRange *range,enum TextPatternRangeEndpoint targetEndPoint) {
    return This->lpVtbl->MoveEndpointByRange(This,srcEndPoint,range,targetEndPoint);
}
static inline HRESULT IUIAutomationTextRange_Select(IUIAutomationTextRange* This) {
    return This->lpVtbl->Select(This);
}
static inline HRESULT IUIAutomationTextRange_AddToSelection(IUIAutomationTextRange* This) {
    return This->lpVtbl->AddToSelection(This);
}
static inline HRESULT IUIAutomationTextRange_RemoveFromSelection(IUIAutomationTextRange* This) {
    return This->lpVtbl->RemoveFromSelection(This);
}
static inline HRESULT IUIAutomationTextRange_ScrollIntoView(IUIAutomationTextRange* This,WINBOOL alignToTop) {
    return This->lpVtbl->ScrollIntoView(This,alignToTop);
}
static inline HRESULT IUIAutomationTextRange_GetChildren(IUIAutomationTextRange* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetChildren(This,children);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTextRange_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTextRange2 interface
 */
#ifndef __IUIAutomationTextRange2_INTERFACE_DEFINED__
#define __IUIAutomationTextRange2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTextRange2, 0xbb9b40e0, 0x5e04, 0x46bd, 0x9b,0xe0, 0x4b,0x60,0x1b,0x9a,0xfa,0xd4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bb9b40e0-5e04-46bd-9be0-4b601b9afad4")
IUIAutomationTextRange2 : public IUIAutomationTextRange
{
    virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTextRange2, 0xbb9b40e0, 0x5e04, 0x46bd, 0x9b,0xe0, 0x4b,0x60,0x1b,0x9a,0xfa,0xd4)
#endif
#else
typedef struct IUIAutomationTextRange2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTextRange2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTextRange2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTextRange2 *This);

    /*** IUIAutomationTextRange methods ***/
    HRESULT (STDMETHODCALLTYPE *Clone)(
        IUIAutomationTextRange2 *This,
        IUIAutomationTextRange **clonedRange);

    HRESULT (STDMETHODCALLTYPE *Compare)(
        IUIAutomationTextRange2 *This,
        IUIAutomationTextRange *range,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *CompareEndpoints)(
        IUIAutomationTextRange2 *This,
        enum TextPatternRangeEndpoint srcEndPoint,
        IUIAutomationTextRange *range,
        enum TextPatternRangeEndpoint targetEndPoint,
        int *compValue);

    HRESULT (STDMETHODCALLTYPE *ExpandToEnclosingUnit)(
        IUIAutomationTextRange2 *This,
        enum TextUnit textUnit);

    HRESULT (STDMETHODCALLTYPE *FindAttribute)(
        IUIAutomationTextRange2 *This,
        TEXTATTRIBUTEID attr,
        VARIANT val,
        WINBOOL backward,
        IUIAutomationTextRange **found);

    HRESULT (STDMETHODCALLTYPE *FindText)(
        IUIAutomationTextRange2 *This,
        BSTR text,
        WINBOOL backward,
        WINBOOL ignoreCase,
        IUIAutomationTextRange **found);

    HRESULT (STDMETHODCALLTYPE *GetAttributeValue)(
        IUIAutomationTextRange2 *This,
        TEXTATTRIBUTEID attr,
        VARIANT *value);

    HRESULT (STDMETHODCALLTYPE *GetBoundingRectangles)(
        IUIAutomationTextRange2 *This,
        SAFEARRAY **boundingRects);

    HRESULT (STDMETHODCALLTYPE *GetEnclosingElement)(
        IUIAutomationTextRange2 *This,
        IUIAutomationElement **enclosingElement);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        IUIAutomationTextRange2 *This,
        int maxLength,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *Move)(
        IUIAutomationTextRange2 *This,
        enum TextUnit unit,
        int count,
        int *moved);

    HRESULT (STDMETHODCALLTYPE *MoveEndpointByUnit)(
        IUIAutomationTextRange2 *This,
        enum TextPatternRangeEndpoint endpoint,
        enum TextUnit unit,
        int count,
        int *moved);

    HRESULT (STDMETHODCALLTYPE *MoveEndpointByRange)(
        IUIAutomationTextRange2 *This,
        enum TextPatternRangeEndpoint srcEndPoint,
        IUIAutomationTextRange *range,
        enum TextPatternRangeEndpoint targetEndPoint);

    HRESULT (STDMETHODCALLTYPE *Select)(
        IUIAutomationTextRange2 *This);

    HRESULT (STDMETHODCALLTYPE *AddToSelection)(
        IUIAutomationTextRange2 *This);

    HRESULT (STDMETHODCALLTYPE *RemoveFromSelection)(
        IUIAutomationTextRange2 *This);

    HRESULT (STDMETHODCALLTYPE *ScrollIntoView)(
        IUIAutomationTextRange2 *This,
        WINBOOL alignToTop);

    HRESULT (STDMETHODCALLTYPE *GetChildren)(
        IUIAutomationTextRange2 *This,
        IUIAutomationElementArray **children);

    /*** IUIAutomationTextRange2 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IUIAutomationTextRange2 *This);

    END_INTERFACE
} IUIAutomationTextRange2Vtbl;

interface IUIAutomationTextRange2 {
    CONST_VTBL IUIAutomationTextRange2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTextRange2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTextRange2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTextRange2_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTextRange methods ***/
#define IUIAutomationTextRange2_Clone(This,clonedRange) (This)->lpVtbl->Clone(This,clonedRange)
#define IUIAutomationTextRange2_Compare(This,range,areSame) (This)->lpVtbl->Compare(This,range,areSame)
#define IUIAutomationTextRange2_CompareEndpoints(This,srcEndPoint,range,targetEndPoint,compValue) (This)->lpVtbl->CompareEndpoints(This,srcEndPoint,range,targetEndPoint,compValue)
#define IUIAutomationTextRange2_ExpandToEnclosingUnit(This,textUnit) (This)->lpVtbl->ExpandToEnclosingUnit(This,textUnit)
#define IUIAutomationTextRange2_FindAttribute(This,attr,val,backward,found) (This)->lpVtbl->FindAttribute(This,attr,val,backward,found)
#define IUIAutomationTextRange2_FindText(This,text,backward,ignoreCase,found) (This)->lpVtbl->FindText(This,text,backward,ignoreCase,found)
#define IUIAutomationTextRange2_GetAttributeValue(This,attr,value) (This)->lpVtbl->GetAttributeValue(This,attr,value)
#define IUIAutomationTextRange2_GetBoundingRectangles(This,boundingRects) (This)->lpVtbl->GetBoundingRectangles(This,boundingRects)
#define IUIAutomationTextRange2_GetEnclosingElement(This,enclosingElement) (This)->lpVtbl->GetEnclosingElement(This,enclosingElement)
#define IUIAutomationTextRange2_GetText(This,maxLength,text) (This)->lpVtbl->GetText(This,maxLength,text)
#define IUIAutomationTextRange2_Move(This,unit,count,moved) (This)->lpVtbl->Move(This,unit,count,moved)
#define IUIAutomationTextRange2_MoveEndpointByUnit(This,endpoint,unit,count,moved) (This)->lpVtbl->MoveEndpointByUnit(This,endpoint,unit,count,moved)
#define IUIAutomationTextRange2_MoveEndpointByRange(This,srcEndPoint,range,targetEndPoint) (This)->lpVtbl->MoveEndpointByRange(This,srcEndPoint,range,targetEndPoint)
#define IUIAutomationTextRange2_Select(This) (This)->lpVtbl->Select(This)
#define IUIAutomationTextRange2_AddToSelection(This) (This)->lpVtbl->AddToSelection(This)
#define IUIAutomationTextRange2_RemoveFromSelection(This) (This)->lpVtbl->RemoveFromSelection(This)
#define IUIAutomationTextRange2_ScrollIntoView(This,alignToTop) (This)->lpVtbl->ScrollIntoView(This,alignToTop)
#define IUIAutomationTextRange2_GetChildren(This,children) (This)->lpVtbl->GetChildren(This,children)
/*** IUIAutomationTextRange2 methods ***/
#define IUIAutomationTextRange2_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTextRange2_QueryInterface(IUIAutomationTextRange2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTextRange2_AddRef(IUIAutomationTextRange2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTextRange2_Release(IUIAutomationTextRange2* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTextRange methods ***/
static inline HRESULT IUIAutomationTextRange2_Clone(IUIAutomationTextRange2* This,IUIAutomationTextRange **clonedRange) {
    return This->lpVtbl->Clone(This,clonedRange);
}
static inline HRESULT IUIAutomationTextRange2_Compare(IUIAutomationTextRange2* This,IUIAutomationTextRange *range,WINBOOL *areSame) {
    return This->lpVtbl->Compare(This,range,areSame);
}
static inline HRESULT IUIAutomationTextRange2_CompareEndpoints(IUIAutomationTextRange2* This,enum TextPatternRangeEndpoint srcEndPoint,IUIAutomationTextRange *range,enum TextPatternRangeEndpoint targetEndPoint,int *compValue) {
    return This->lpVtbl->CompareEndpoints(This,srcEndPoint,range,targetEndPoint,compValue);
}
static inline HRESULT IUIAutomationTextRange2_ExpandToEnclosingUnit(IUIAutomationTextRange2* This,enum TextUnit textUnit) {
    return This->lpVtbl->ExpandToEnclosingUnit(This,textUnit);
}
static inline HRESULT IUIAutomationTextRange2_FindAttribute(IUIAutomationTextRange2* This,TEXTATTRIBUTEID attr,VARIANT val,WINBOOL backward,IUIAutomationTextRange **found) {
    return This->lpVtbl->FindAttribute(This,attr,val,backward,found);
}
static inline HRESULT IUIAutomationTextRange2_FindText(IUIAutomationTextRange2* This,BSTR text,WINBOOL backward,WINBOOL ignoreCase,IUIAutomationTextRange **found) {
    return This->lpVtbl->FindText(This,text,backward,ignoreCase,found);
}
static inline HRESULT IUIAutomationTextRange2_GetAttributeValue(IUIAutomationTextRange2* This,TEXTATTRIBUTEID attr,VARIANT *value) {
    return This->lpVtbl->GetAttributeValue(This,attr,value);
}
static inline HRESULT IUIAutomationTextRange2_GetBoundingRectangles(IUIAutomationTextRange2* This,SAFEARRAY **boundingRects) {
    return This->lpVtbl->GetBoundingRectangles(This,boundingRects);
}
static inline HRESULT IUIAutomationTextRange2_GetEnclosingElement(IUIAutomationTextRange2* This,IUIAutomationElement **enclosingElement) {
    return This->lpVtbl->GetEnclosingElement(This,enclosingElement);
}
static inline HRESULT IUIAutomationTextRange2_GetText(IUIAutomationTextRange2* This,int maxLength,BSTR *text) {
    return This->lpVtbl->GetText(This,maxLength,text);
}
static inline HRESULT IUIAutomationTextRange2_Move(IUIAutomationTextRange2* This,enum TextUnit unit,int count,int *moved) {
    return This->lpVtbl->Move(This,unit,count,moved);
}
static inline HRESULT IUIAutomationTextRange2_MoveEndpointByUnit(IUIAutomationTextRange2* This,enum TextPatternRangeEndpoint endpoint,enum TextUnit unit,int count,int *moved) {
    return This->lpVtbl->MoveEndpointByUnit(This,endpoint,unit,count,moved);
}
static inline HRESULT IUIAutomationTextRange2_MoveEndpointByRange(IUIAutomationTextRange2* This,enum TextPatternRangeEndpoint srcEndPoint,IUIAutomationTextRange *range,enum TextPatternRangeEndpoint targetEndPoint) {
    return This->lpVtbl->MoveEndpointByRange(This,srcEndPoint,range,targetEndPoint);
}
static inline HRESULT IUIAutomationTextRange2_Select(IUIAutomationTextRange2* This) {
    return This->lpVtbl->Select(This);
}
static inline HRESULT IUIAutomationTextRange2_AddToSelection(IUIAutomationTextRange2* This) {
    return This->lpVtbl->AddToSelection(This);
}
static inline HRESULT IUIAutomationTextRange2_RemoveFromSelection(IUIAutomationTextRange2* This) {
    return This->lpVtbl->RemoveFromSelection(This);
}
static inline HRESULT IUIAutomationTextRange2_ScrollIntoView(IUIAutomationTextRange2* This,WINBOOL alignToTop) {
    return This->lpVtbl->ScrollIntoView(This,alignToTop);
}
static inline HRESULT IUIAutomationTextRange2_GetChildren(IUIAutomationTextRange2* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetChildren(This,children);
}
/*** IUIAutomationTextRange2 methods ***/
static inline HRESULT IUIAutomationTextRange2_ShowContextMenu(IUIAutomationTextRange2* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTextRange2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTextRangeArray interface
 */
#ifndef __IUIAutomationTextRangeArray_INTERFACE_DEFINED__
#define __IUIAutomationTextRangeArray_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTextRangeArray, 0xce4ae76a, 0xe717, 0x4c98, 0x81,0xea, 0x47,0x37,0x1d,0x02,0x8e,0xb6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ce4ae76a-e717-4c98-81ea-47371d028eb6")
IUIAutomationTextRangeArray : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_Length(
        int *length) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetElement(
        int index,
        IUIAutomationTextRange **element) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTextRangeArray, 0xce4ae76a, 0xe717, 0x4c98, 0x81,0xea, 0x47,0x37,0x1d,0x02,0x8e,0xb6)
#endif
#else
typedef struct IUIAutomationTextRangeArrayVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTextRangeArray *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTextRangeArray *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTextRangeArray *This);

    /*** IUIAutomationTextRangeArray methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Length)(
        IUIAutomationTextRangeArray *This,
        int *length);

    HRESULT (STDMETHODCALLTYPE *GetElement)(
        IUIAutomationTextRangeArray *This,
        int index,
        IUIAutomationTextRange **element);

    END_INTERFACE
} IUIAutomationTextRangeArrayVtbl;

interface IUIAutomationTextRangeArray {
    CONST_VTBL IUIAutomationTextRangeArrayVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTextRangeArray_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTextRangeArray_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTextRangeArray_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTextRangeArray methods ***/
#define IUIAutomationTextRangeArray_get_Length(This,length) (This)->lpVtbl->get_Length(This,length)
#define IUIAutomationTextRangeArray_GetElement(This,index,element) (This)->lpVtbl->GetElement(This,index,element)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTextRangeArray_QueryInterface(IUIAutomationTextRangeArray* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTextRangeArray_AddRef(IUIAutomationTextRangeArray* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTextRangeArray_Release(IUIAutomationTextRangeArray* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTextRangeArray methods ***/
static inline HRESULT IUIAutomationTextRangeArray_get_Length(IUIAutomationTextRangeArray* This,int *length) {
    return This->lpVtbl->get_Length(This,length);
}
static inline HRESULT IUIAutomationTextRangeArray_GetElement(IUIAutomationTextRangeArray* This,int index,IUIAutomationTextRange **element) {
    return This->lpVtbl->GetElement(This,index,element);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTextRangeArray_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTextPattern interface
 */
#ifndef __IUIAutomationTextPattern_INTERFACE_DEFINED__
#define __IUIAutomationTextPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTextPattern, 0x32eba289, 0x3583, 0x42c9, 0x9c,0x59, 0x3b,0x6d,0x9a,0x1e,0x9b,0x6a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("32eba289-3583-42c9-9c59-3b6d9a1e9b6a")
IUIAutomationTextPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RangeFromPoint(
        POINT pt,
        IUIAutomationTextRange **range) = 0;

    virtual HRESULT STDMETHODCALLTYPE RangeFromChild(
        IUIAutomationElement *child,
        IUIAutomationTextRange **range) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelection(
        IUIAutomationTextRangeArray **ranges) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVisibleRanges(
        IUIAutomationTextRangeArray **ranges) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DocumentRange(
        IUIAutomationTextRange **range) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SupportedTextSelection(
        enum SupportedTextSelection *supportedTextSelection) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTextPattern, 0x32eba289, 0x3583, 0x42c9, 0x9c,0x59, 0x3b,0x6d,0x9a,0x1e,0x9b,0x6a)
#endif
#else
typedef struct IUIAutomationTextPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTextPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTextPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTextPattern *This);

    /*** IUIAutomationTextPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *RangeFromPoint)(
        IUIAutomationTextPattern *This,
        POINT pt,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *RangeFromChild)(
        IUIAutomationTextPattern *This,
        IUIAutomationElement *child,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        IUIAutomationTextPattern *This,
        IUIAutomationTextRangeArray **ranges);

    HRESULT (STDMETHODCALLTYPE *GetVisibleRanges)(
        IUIAutomationTextPattern *This,
        IUIAutomationTextRangeArray **ranges);

    HRESULT (STDMETHODCALLTYPE *get_DocumentRange)(
        IUIAutomationTextPattern *This,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *get_SupportedTextSelection)(
        IUIAutomationTextPattern *This,
        enum SupportedTextSelection *supportedTextSelection);

    END_INTERFACE
} IUIAutomationTextPatternVtbl;

interface IUIAutomationTextPattern {
    CONST_VTBL IUIAutomationTextPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTextPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTextPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTextPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTextPattern methods ***/
#define IUIAutomationTextPattern_RangeFromPoint(This,pt,range) (This)->lpVtbl->RangeFromPoint(This,pt,range)
#define IUIAutomationTextPattern_RangeFromChild(This,child,range) (This)->lpVtbl->RangeFromChild(This,child,range)
#define IUIAutomationTextPattern_GetSelection(This,ranges) (This)->lpVtbl->GetSelection(This,ranges)
#define IUIAutomationTextPattern_GetVisibleRanges(This,ranges) (This)->lpVtbl->GetVisibleRanges(This,ranges)
#define IUIAutomationTextPattern_get_DocumentRange(This,range) (This)->lpVtbl->get_DocumentRange(This,range)
#define IUIAutomationTextPattern_get_SupportedTextSelection(This,supportedTextSelection) (This)->lpVtbl->get_SupportedTextSelection(This,supportedTextSelection)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTextPattern_QueryInterface(IUIAutomationTextPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTextPattern_AddRef(IUIAutomationTextPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTextPattern_Release(IUIAutomationTextPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTextPattern methods ***/
static inline HRESULT IUIAutomationTextPattern_RangeFromPoint(IUIAutomationTextPattern* This,POINT pt,IUIAutomationTextRange **range) {
    return This->lpVtbl->RangeFromPoint(This,pt,range);
}
static inline HRESULT IUIAutomationTextPattern_RangeFromChild(IUIAutomationTextPattern* This,IUIAutomationElement *child,IUIAutomationTextRange **range) {
    return This->lpVtbl->RangeFromChild(This,child,range);
}
static inline HRESULT IUIAutomationTextPattern_GetSelection(IUIAutomationTextPattern* This,IUIAutomationTextRangeArray **ranges) {
    return This->lpVtbl->GetSelection(This,ranges);
}
static inline HRESULT IUIAutomationTextPattern_GetVisibleRanges(IUIAutomationTextPattern* This,IUIAutomationTextRangeArray **ranges) {
    return This->lpVtbl->GetVisibleRanges(This,ranges);
}
static inline HRESULT IUIAutomationTextPattern_get_DocumentRange(IUIAutomationTextPattern* This,IUIAutomationTextRange **range) {
    return This->lpVtbl->get_DocumentRange(This,range);
}
static inline HRESULT IUIAutomationTextPattern_get_SupportedTextSelection(IUIAutomationTextPattern* This,enum SupportedTextSelection *supportedTextSelection) {
    return This->lpVtbl->get_SupportedTextSelection(This,supportedTextSelection);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTextPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTextPattern2 interface
 */
#ifndef __IUIAutomationTextPattern2_INTERFACE_DEFINED__
#define __IUIAutomationTextPattern2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTextPattern2, 0x506a921a, 0xfcc9, 0x409f, 0xb2,0x3b, 0x37,0xeb,0x74,0x10,0x68,0x72);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("506a921a-fcc9-409f-b23b-37eb74106872")
IUIAutomationTextPattern2 : public IUIAutomationTextPattern
{
    virtual HRESULT STDMETHODCALLTYPE RangeFromAnnotation(
        IUIAutomationElement *annotation,
        IUIAutomationTextRange **range) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCaretRange(
        WINBOOL *isActive,
        IUIAutomationTextRange **range) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTextPattern2, 0x506a921a, 0xfcc9, 0x409f, 0xb2,0x3b, 0x37,0xeb,0x74,0x10,0x68,0x72)
#endif
#else
typedef struct IUIAutomationTextPattern2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTextPattern2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTextPattern2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTextPattern2 *This);

    /*** IUIAutomationTextPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *RangeFromPoint)(
        IUIAutomationTextPattern2 *This,
        POINT pt,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *RangeFromChild)(
        IUIAutomationTextPattern2 *This,
        IUIAutomationElement *child,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        IUIAutomationTextPattern2 *This,
        IUIAutomationTextRangeArray **ranges);

    HRESULT (STDMETHODCALLTYPE *GetVisibleRanges)(
        IUIAutomationTextPattern2 *This,
        IUIAutomationTextRangeArray **ranges);

    HRESULT (STDMETHODCALLTYPE *get_DocumentRange)(
        IUIAutomationTextPattern2 *This,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *get_SupportedTextSelection)(
        IUIAutomationTextPattern2 *This,
        enum SupportedTextSelection *supportedTextSelection);

    /*** IUIAutomationTextPattern2 methods ***/
    HRESULT (STDMETHODCALLTYPE *RangeFromAnnotation)(
        IUIAutomationTextPattern2 *This,
        IUIAutomationElement *annotation,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *GetCaretRange)(
        IUIAutomationTextPattern2 *This,
        WINBOOL *isActive,
        IUIAutomationTextRange **range);

    END_INTERFACE
} IUIAutomationTextPattern2Vtbl;

interface IUIAutomationTextPattern2 {
    CONST_VTBL IUIAutomationTextPattern2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTextPattern2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTextPattern2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTextPattern2_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTextPattern methods ***/
#define IUIAutomationTextPattern2_RangeFromPoint(This,pt,range) (This)->lpVtbl->RangeFromPoint(This,pt,range)
#define IUIAutomationTextPattern2_RangeFromChild(This,child,range) (This)->lpVtbl->RangeFromChild(This,child,range)
#define IUIAutomationTextPattern2_GetSelection(This,ranges) (This)->lpVtbl->GetSelection(This,ranges)
#define IUIAutomationTextPattern2_GetVisibleRanges(This,ranges) (This)->lpVtbl->GetVisibleRanges(This,ranges)
#define IUIAutomationTextPattern2_get_DocumentRange(This,range) (This)->lpVtbl->get_DocumentRange(This,range)
#define IUIAutomationTextPattern2_get_SupportedTextSelection(This,supportedTextSelection) (This)->lpVtbl->get_SupportedTextSelection(This,supportedTextSelection)
/*** IUIAutomationTextPattern2 methods ***/
#define IUIAutomationTextPattern2_RangeFromAnnotation(This,annotation,range) (This)->lpVtbl->RangeFromAnnotation(This,annotation,range)
#define IUIAutomationTextPattern2_GetCaretRange(This,isActive,range) (This)->lpVtbl->GetCaretRange(This,isActive,range)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTextPattern2_QueryInterface(IUIAutomationTextPattern2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTextPattern2_AddRef(IUIAutomationTextPattern2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTextPattern2_Release(IUIAutomationTextPattern2* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTextPattern methods ***/
static inline HRESULT IUIAutomationTextPattern2_RangeFromPoint(IUIAutomationTextPattern2* This,POINT pt,IUIAutomationTextRange **range) {
    return This->lpVtbl->RangeFromPoint(This,pt,range);
}
static inline HRESULT IUIAutomationTextPattern2_RangeFromChild(IUIAutomationTextPattern2* This,IUIAutomationElement *child,IUIAutomationTextRange **range) {
    return This->lpVtbl->RangeFromChild(This,child,range);
}
static inline HRESULT IUIAutomationTextPattern2_GetSelection(IUIAutomationTextPattern2* This,IUIAutomationTextRangeArray **ranges) {
    return This->lpVtbl->GetSelection(This,ranges);
}
static inline HRESULT IUIAutomationTextPattern2_GetVisibleRanges(IUIAutomationTextPattern2* This,IUIAutomationTextRangeArray **ranges) {
    return This->lpVtbl->GetVisibleRanges(This,ranges);
}
static inline HRESULT IUIAutomationTextPattern2_get_DocumentRange(IUIAutomationTextPattern2* This,IUIAutomationTextRange **range) {
    return This->lpVtbl->get_DocumentRange(This,range);
}
static inline HRESULT IUIAutomationTextPattern2_get_SupportedTextSelection(IUIAutomationTextPattern2* This,enum SupportedTextSelection *supportedTextSelection) {
    return This->lpVtbl->get_SupportedTextSelection(This,supportedTextSelection);
}
/*** IUIAutomationTextPattern2 methods ***/
static inline HRESULT IUIAutomationTextPattern2_RangeFromAnnotation(IUIAutomationTextPattern2* This,IUIAutomationElement *annotation,IUIAutomationTextRange **range) {
    return This->lpVtbl->RangeFromAnnotation(This,annotation,range);
}
static inline HRESULT IUIAutomationTextPattern2_GetCaretRange(IUIAutomationTextPattern2* This,WINBOOL *isActive,IUIAutomationTextRange **range) {
    return This->lpVtbl->GetCaretRange(This,isActive,range);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTextPattern2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTextEditPattern interface
 */
#ifndef __IUIAutomationTextEditPattern_INTERFACE_DEFINED__
#define __IUIAutomationTextEditPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTextEditPattern, 0x17e21576, 0x996c, 0x4870, 0x99,0xd9, 0xbf,0xf3,0x23,0x38,0x0c,0x06);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("17e21576-996c-4870-99d9-bff323380c06")
IUIAutomationTextEditPattern : public IUIAutomationTextPattern
{
    virtual HRESULT STDMETHODCALLTYPE GetActiveComposition(
        IUIAutomationTextRange **range) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConversionTarget(
        IUIAutomationTextRange **range) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTextEditPattern, 0x17e21576, 0x996c, 0x4870, 0x99,0xd9, 0xbf,0xf3,0x23,0x38,0x0c,0x06)
#endif
#else
typedef struct IUIAutomationTextEditPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTextEditPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTextEditPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTextEditPattern *This);

    /*** IUIAutomationTextPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *RangeFromPoint)(
        IUIAutomationTextEditPattern *This,
        POINT pt,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *RangeFromChild)(
        IUIAutomationTextEditPattern *This,
        IUIAutomationElement *child,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        IUIAutomationTextEditPattern *This,
        IUIAutomationTextRangeArray **ranges);

    HRESULT (STDMETHODCALLTYPE *GetVisibleRanges)(
        IUIAutomationTextEditPattern *This,
        IUIAutomationTextRangeArray **ranges);

    HRESULT (STDMETHODCALLTYPE *get_DocumentRange)(
        IUIAutomationTextEditPattern *This,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *get_SupportedTextSelection)(
        IUIAutomationTextEditPattern *This,
        enum SupportedTextSelection *supportedTextSelection);

    /*** IUIAutomationTextEditPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *GetActiveComposition)(
        IUIAutomationTextEditPattern *This,
        IUIAutomationTextRange **range);

    HRESULT (STDMETHODCALLTYPE *GetConversionTarget)(
        IUIAutomationTextEditPattern *This,
        IUIAutomationTextRange **range);

    END_INTERFACE
} IUIAutomationTextEditPatternVtbl;

interface IUIAutomationTextEditPattern {
    CONST_VTBL IUIAutomationTextEditPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTextEditPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTextEditPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTextEditPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTextPattern methods ***/
#define IUIAutomationTextEditPattern_RangeFromPoint(This,pt,range) (This)->lpVtbl->RangeFromPoint(This,pt,range)
#define IUIAutomationTextEditPattern_RangeFromChild(This,child,range) (This)->lpVtbl->RangeFromChild(This,child,range)
#define IUIAutomationTextEditPattern_GetSelection(This,ranges) (This)->lpVtbl->GetSelection(This,ranges)
#define IUIAutomationTextEditPattern_GetVisibleRanges(This,ranges) (This)->lpVtbl->GetVisibleRanges(This,ranges)
#define IUIAutomationTextEditPattern_get_DocumentRange(This,range) (This)->lpVtbl->get_DocumentRange(This,range)
#define IUIAutomationTextEditPattern_get_SupportedTextSelection(This,supportedTextSelection) (This)->lpVtbl->get_SupportedTextSelection(This,supportedTextSelection)
/*** IUIAutomationTextEditPattern methods ***/
#define IUIAutomationTextEditPattern_GetActiveComposition(This,range) (This)->lpVtbl->GetActiveComposition(This,range)
#define IUIAutomationTextEditPattern_GetConversionTarget(This,range) (This)->lpVtbl->GetConversionTarget(This,range)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTextEditPattern_QueryInterface(IUIAutomationTextEditPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTextEditPattern_AddRef(IUIAutomationTextEditPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTextEditPattern_Release(IUIAutomationTextEditPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTextPattern methods ***/
static inline HRESULT IUIAutomationTextEditPattern_RangeFromPoint(IUIAutomationTextEditPattern* This,POINT pt,IUIAutomationTextRange **range) {
    return This->lpVtbl->RangeFromPoint(This,pt,range);
}
static inline HRESULT IUIAutomationTextEditPattern_RangeFromChild(IUIAutomationTextEditPattern* This,IUIAutomationElement *child,IUIAutomationTextRange **range) {
    return This->lpVtbl->RangeFromChild(This,child,range);
}
static inline HRESULT IUIAutomationTextEditPattern_GetSelection(IUIAutomationTextEditPattern* This,IUIAutomationTextRangeArray **ranges) {
    return This->lpVtbl->GetSelection(This,ranges);
}
static inline HRESULT IUIAutomationTextEditPattern_GetVisibleRanges(IUIAutomationTextEditPattern* This,IUIAutomationTextRangeArray **ranges) {
    return This->lpVtbl->GetVisibleRanges(This,ranges);
}
static inline HRESULT IUIAutomationTextEditPattern_get_DocumentRange(IUIAutomationTextEditPattern* This,IUIAutomationTextRange **range) {
    return This->lpVtbl->get_DocumentRange(This,range);
}
static inline HRESULT IUIAutomationTextEditPattern_get_SupportedTextSelection(IUIAutomationTextEditPattern* This,enum SupportedTextSelection *supportedTextSelection) {
    return This->lpVtbl->get_SupportedTextSelection(This,supportedTextSelection);
}
/*** IUIAutomationTextEditPattern methods ***/
static inline HRESULT IUIAutomationTextEditPattern_GetActiveComposition(IUIAutomationTextEditPattern* This,IUIAutomationTextRange **range) {
    return This->lpVtbl->GetActiveComposition(This,range);
}
static inline HRESULT IUIAutomationTextEditPattern_GetConversionTarget(IUIAutomationTextEditPattern* This,IUIAutomationTextRange **range) {
    return This->lpVtbl->GetConversionTarget(This,range);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTextEditPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationCustomNavigationPattern interface
 */
#ifndef __IUIAutomationCustomNavigationPattern_INTERFACE_DEFINED__
#define __IUIAutomationCustomNavigationPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationCustomNavigationPattern, 0x01ea217a, 0x1766, 0x47ed, 0xa6,0xcc, 0xac,0xf4,0x92,0x85,0x4b,0x1f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("01ea217a-1766-47ed-a6cc-acf492854b1f")
IUIAutomationCustomNavigationPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Navigate(
        enum NavigateDirection direction,
        IUIAutomationElement **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationCustomNavigationPattern, 0x01ea217a, 0x1766, 0x47ed, 0xa6,0xcc, 0xac,0xf4,0x92,0x85,0x4b,0x1f)
#endif
#else
typedef struct IUIAutomationCustomNavigationPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationCustomNavigationPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationCustomNavigationPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationCustomNavigationPattern *This);

    /*** IUIAutomationCustomNavigationPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Navigate)(
        IUIAutomationCustomNavigationPattern *This,
        enum NavigateDirection direction,
        IUIAutomationElement **pRetVal);

    END_INTERFACE
} IUIAutomationCustomNavigationPatternVtbl;

interface IUIAutomationCustomNavigationPattern {
    CONST_VTBL IUIAutomationCustomNavigationPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationCustomNavigationPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationCustomNavigationPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationCustomNavigationPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationCustomNavigationPattern methods ***/
#define IUIAutomationCustomNavigationPattern_Navigate(This,direction,pRetVal) (This)->lpVtbl->Navigate(This,direction,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationCustomNavigationPattern_QueryInterface(IUIAutomationCustomNavigationPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationCustomNavigationPattern_AddRef(IUIAutomationCustomNavigationPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationCustomNavigationPattern_Release(IUIAutomationCustomNavigationPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationCustomNavigationPattern methods ***/
static inline HRESULT IUIAutomationCustomNavigationPattern_Navigate(IUIAutomationCustomNavigationPattern* This,enum NavigateDirection direction,IUIAutomationElement **pRetVal) {
    return This->lpVtbl->Navigate(This,direction,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationCustomNavigationPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationActiveTextPositionChangedEventHandler interface
 */
#ifndef __IUIAutomationActiveTextPositionChangedEventHandler_INTERFACE_DEFINED__
#define __IUIAutomationActiveTextPositionChangedEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationActiveTextPositionChangedEventHandler, 0xf97933b0, 0x8dae, 0x4496, 0x89,0x97, 0x5b,0xa0,0x15,0xfe,0x0d,0x82);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f97933b0-8dae-4496-8997-5ba015fe0d82")
IUIAutomationActiveTextPositionChangedEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleActiveTextPositionChangedEvent(
        IUIAutomationElement *sender,
        IUIAutomationTextRange *range) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationActiveTextPositionChangedEventHandler, 0xf97933b0, 0x8dae, 0x4496, 0x89,0x97, 0x5b,0xa0,0x15,0xfe,0x0d,0x82)
#endif
#else
typedef struct IUIAutomationActiveTextPositionChangedEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationActiveTextPositionChangedEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationActiveTextPositionChangedEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationActiveTextPositionChangedEventHandler *This);

    /*** IUIAutomationActiveTextPositionChangedEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleActiveTextPositionChangedEvent)(
        IUIAutomationActiveTextPositionChangedEventHandler *This,
        IUIAutomationElement *sender,
        IUIAutomationTextRange *range);

    END_INTERFACE
} IUIAutomationActiveTextPositionChangedEventHandlerVtbl;

interface IUIAutomationActiveTextPositionChangedEventHandler {
    CONST_VTBL IUIAutomationActiveTextPositionChangedEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationActiveTextPositionChangedEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationActiveTextPositionChangedEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationActiveTextPositionChangedEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationActiveTextPositionChangedEventHandler methods ***/
#define IUIAutomationActiveTextPositionChangedEventHandler_HandleActiveTextPositionChangedEvent(This,sender,range) (This)->lpVtbl->HandleActiveTextPositionChangedEvent(This,sender,range)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationActiveTextPositionChangedEventHandler_QueryInterface(IUIAutomationActiveTextPositionChangedEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationActiveTextPositionChangedEventHandler_AddRef(IUIAutomationActiveTextPositionChangedEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationActiveTextPositionChangedEventHandler_Release(IUIAutomationActiveTextPositionChangedEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationActiveTextPositionChangedEventHandler methods ***/
static inline HRESULT IUIAutomationActiveTextPositionChangedEventHandler_HandleActiveTextPositionChangedEvent(IUIAutomationActiveTextPositionChangedEventHandler* This,IUIAutomationElement *sender,IUIAutomationTextRange *range) {
    return This->lpVtbl->HandleActiveTextPositionChangedEvent(This,sender,range);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationActiveTextPositionChangedEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationLegacyIAccessiblePattern interface
 */
#ifndef __IUIAutomationLegacyIAccessiblePattern_INTERFACE_DEFINED__
#define __IUIAutomationLegacyIAccessiblePattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationLegacyIAccessiblePattern, 0x828055ad, 0x355b, 0x4435, 0x86,0xd5, 0x3b,0x51,0xc1,0x4a,0x9b,0x1b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("828055ad-355b-4435-86d5-3b51c14a9b1b")
IUIAutomationLegacyIAccessiblePattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Select(
        LONG flagsSelect) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoDefaultAction(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetValue(
        LPCWSTR szValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentChildId(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentName(
        BSTR *pszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentValue(
        BSTR *pszValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDescription(
        BSTR *pszDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentRole(
        DWORD *pdwRole) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentState(
        DWORD *pdwState) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentHelp(
        BSTR *pszHelp) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentKeyboardShortcut(
        BSTR *pszKeyboardShortcut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentSelection(
        IUIAutomationElementArray **pvarSelectedChildren) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDefaultAction(
        BSTR *pszDefaultAction) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedChildId(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedName(
        BSTR *pszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedValue(
        BSTR *pszValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDescription(
        BSTR *pszDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedRole(
        DWORD *pdwRole) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedState(
        DWORD *pdwState) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedHelp(
        BSTR *pszHelp) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedKeyboardShortcut(
        BSTR *pszKeyboardShortcut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedSelection(
        IUIAutomationElementArray **pvarSelectedChildren) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDefaultAction(
        BSTR *pszDefaultAction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIAccessible(
        IAccessible **ppAccessible) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationLegacyIAccessiblePattern, 0x828055ad, 0x355b, 0x4435, 0x86,0xd5, 0x3b,0x51,0xc1,0x4a,0x9b,0x1b)
#endif
#else
typedef struct IUIAutomationLegacyIAccessiblePatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationLegacyIAccessiblePattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationLegacyIAccessiblePattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationLegacyIAccessiblePattern *This);

    /*** IUIAutomationLegacyIAccessiblePattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Select)(
        IUIAutomationLegacyIAccessiblePattern *This,
        LONG flagsSelect);

    HRESULT (STDMETHODCALLTYPE *DoDefaultAction)(
        IUIAutomationLegacyIAccessiblePattern *This);

    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IUIAutomationLegacyIAccessiblePattern *This,
        LPCWSTR szValue);

    HRESULT (STDMETHODCALLTYPE *get_CurrentChildId)(
        IUIAutomationLegacyIAccessiblePattern *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *get_CurrentValue)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszValue);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescription)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszDescription);

    HRESULT (STDMETHODCALLTYPE *get_CurrentRole)(
        IUIAutomationLegacyIAccessiblePattern *This,
        DWORD *pdwRole);

    HRESULT (STDMETHODCALLTYPE *get_CurrentState)(
        IUIAutomationLegacyIAccessiblePattern *This,
        DWORD *pdwState);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelp)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszHelp);

    HRESULT (STDMETHODCALLTYPE *get_CurrentKeyboardShortcut)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszKeyboardShortcut);

    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
        IUIAutomationLegacyIAccessiblePattern *This,
        IUIAutomationElementArray **pvarSelectedChildren);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDefaultAction)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszDefaultAction);

    HRESULT (STDMETHODCALLTYPE *get_CachedChildId)(
        IUIAutomationLegacyIAccessiblePattern *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *get_CachedValue)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszValue);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescription)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszDescription);

    HRESULT (STDMETHODCALLTYPE *get_CachedRole)(
        IUIAutomationLegacyIAccessiblePattern *This,
        DWORD *pdwRole);

    HRESULT (STDMETHODCALLTYPE *get_CachedState)(
        IUIAutomationLegacyIAccessiblePattern *This,
        DWORD *pdwState);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelp)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszHelp);

    HRESULT (STDMETHODCALLTYPE *get_CachedKeyboardShortcut)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszKeyboardShortcut);

    HRESULT (STDMETHODCALLTYPE *GetCachedSelection)(
        IUIAutomationLegacyIAccessiblePattern *This,
        IUIAutomationElementArray **pvarSelectedChildren);

    HRESULT (STDMETHODCALLTYPE *get_CachedDefaultAction)(
        IUIAutomationLegacyIAccessiblePattern *This,
        BSTR *pszDefaultAction);

    HRESULT (STDMETHODCALLTYPE *GetIAccessible)(
        IUIAutomationLegacyIAccessiblePattern *This,
        IAccessible **ppAccessible);

    END_INTERFACE
} IUIAutomationLegacyIAccessiblePatternVtbl;

interface IUIAutomationLegacyIAccessiblePattern {
    CONST_VTBL IUIAutomationLegacyIAccessiblePatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationLegacyIAccessiblePattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationLegacyIAccessiblePattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationLegacyIAccessiblePattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationLegacyIAccessiblePattern methods ***/
#define IUIAutomationLegacyIAccessiblePattern_Select(This,flagsSelect) (This)->lpVtbl->Select(This,flagsSelect)
#define IUIAutomationLegacyIAccessiblePattern_DoDefaultAction(This) (This)->lpVtbl->DoDefaultAction(This)
#define IUIAutomationLegacyIAccessiblePattern_SetValue(This,szValue) (This)->lpVtbl->SetValue(This,szValue)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentChildId(This,pRetVal) (This)->lpVtbl->get_CurrentChildId(This,pRetVal)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentName(This,pszName) (This)->lpVtbl->get_CurrentName(This,pszName)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentValue(This,pszValue) (This)->lpVtbl->get_CurrentValue(This,pszValue)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentDescription(This,pszDescription) (This)->lpVtbl->get_CurrentDescription(This,pszDescription)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentRole(This,pdwRole) (This)->lpVtbl->get_CurrentRole(This,pdwRole)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentState(This,pdwState) (This)->lpVtbl->get_CurrentState(This,pdwState)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentHelp(This,pszHelp) (This)->lpVtbl->get_CurrentHelp(This,pszHelp)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentKeyboardShortcut(This,pszKeyboardShortcut) (This)->lpVtbl->get_CurrentKeyboardShortcut(This,pszKeyboardShortcut)
#define IUIAutomationLegacyIAccessiblePattern_GetCurrentSelection(This,pvarSelectedChildren) (This)->lpVtbl->GetCurrentSelection(This,pvarSelectedChildren)
#define IUIAutomationLegacyIAccessiblePattern_get_CurrentDefaultAction(This,pszDefaultAction) (This)->lpVtbl->get_CurrentDefaultAction(This,pszDefaultAction)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedChildId(This,pRetVal) (This)->lpVtbl->get_CachedChildId(This,pRetVal)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedName(This,pszName) (This)->lpVtbl->get_CachedName(This,pszName)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedValue(This,pszValue) (This)->lpVtbl->get_CachedValue(This,pszValue)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedDescription(This,pszDescription) (This)->lpVtbl->get_CachedDescription(This,pszDescription)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedRole(This,pdwRole) (This)->lpVtbl->get_CachedRole(This,pdwRole)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedState(This,pdwState) (This)->lpVtbl->get_CachedState(This,pdwState)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedHelp(This,pszHelp) (This)->lpVtbl->get_CachedHelp(This,pszHelp)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedKeyboardShortcut(This,pszKeyboardShortcut) (This)->lpVtbl->get_CachedKeyboardShortcut(This,pszKeyboardShortcut)
#define IUIAutomationLegacyIAccessiblePattern_GetCachedSelection(This,pvarSelectedChildren) (This)->lpVtbl->GetCachedSelection(This,pvarSelectedChildren)
#define IUIAutomationLegacyIAccessiblePattern_get_CachedDefaultAction(This,pszDefaultAction) (This)->lpVtbl->get_CachedDefaultAction(This,pszDefaultAction)
#define IUIAutomationLegacyIAccessiblePattern_GetIAccessible(This,ppAccessible) (This)->lpVtbl->GetIAccessible(This,ppAccessible)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_QueryInterface(IUIAutomationLegacyIAccessiblePattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationLegacyIAccessiblePattern_AddRef(IUIAutomationLegacyIAccessiblePattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationLegacyIAccessiblePattern_Release(IUIAutomationLegacyIAccessiblePattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationLegacyIAccessiblePattern methods ***/
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_Select(IUIAutomationLegacyIAccessiblePattern* This,LONG flagsSelect) {
    return This->lpVtbl->Select(This,flagsSelect);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_DoDefaultAction(IUIAutomationLegacyIAccessiblePattern* This) {
    return This->lpVtbl->DoDefaultAction(This);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_SetValue(IUIAutomationLegacyIAccessiblePattern* This,LPCWSTR szValue) {
    return This->lpVtbl->SetValue(This,szValue);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentChildId(IUIAutomationLegacyIAccessiblePattern* This,int *pRetVal) {
    return This->lpVtbl->get_CurrentChildId(This,pRetVal);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentName(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszName) {
    return This->lpVtbl->get_CurrentName(This,pszName);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentValue(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszValue) {
    return This->lpVtbl->get_CurrentValue(This,pszValue);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentDescription(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszDescription) {
    return This->lpVtbl->get_CurrentDescription(This,pszDescription);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentRole(IUIAutomationLegacyIAccessiblePattern* This,DWORD *pdwRole) {
    return This->lpVtbl->get_CurrentRole(This,pdwRole);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentState(IUIAutomationLegacyIAccessiblePattern* This,DWORD *pdwState) {
    return This->lpVtbl->get_CurrentState(This,pdwState);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentHelp(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszHelp) {
    return This->lpVtbl->get_CurrentHelp(This,pszHelp);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentKeyboardShortcut(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszKeyboardShortcut) {
    return This->lpVtbl->get_CurrentKeyboardShortcut(This,pszKeyboardShortcut);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_GetCurrentSelection(IUIAutomationLegacyIAccessiblePattern* This,IUIAutomationElementArray **pvarSelectedChildren) {
    return This->lpVtbl->GetCurrentSelection(This,pvarSelectedChildren);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CurrentDefaultAction(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszDefaultAction) {
    return This->lpVtbl->get_CurrentDefaultAction(This,pszDefaultAction);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedChildId(IUIAutomationLegacyIAccessiblePattern* This,int *pRetVal) {
    return This->lpVtbl->get_CachedChildId(This,pRetVal);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedName(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszName) {
    return This->lpVtbl->get_CachedName(This,pszName);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedValue(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszValue) {
    return This->lpVtbl->get_CachedValue(This,pszValue);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedDescription(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszDescription) {
    return This->lpVtbl->get_CachedDescription(This,pszDescription);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedRole(IUIAutomationLegacyIAccessiblePattern* This,DWORD *pdwRole) {
    return This->lpVtbl->get_CachedRole(This,pdwRole);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedState(IUIAutomationLegacyIAccessiblePattern* This,DWORD *pdwState) {
    return This->lpVtbl->get_CachedState(This,pdwState);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedHelp(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszHelp) {
    return This->lpVtbl->get_CachedHelp(This,pszHelp);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedKeyboardShortcut(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszKeyboardShortcut) {
    return This->lpVtbl->get_CachedKeyboardShortcut(This,pszKeyboardShortcut);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_GetCachedSelection(IUIAutomationLegacyIAccessiblePattern* This,IUIAutomationElementArray **pvarSelectedChildren) {
    return This->lpVtbl->GetCachedSelection(This,pvarSelectedChildren);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_get_CachedDefaultAction(IUIAutomationLegacyIAccessiblePattern* This,BSTR *pszDefaultAction) {
    return This->lpVtbl->get_CachedDefaultAction(This,pszDefaultAction);
}
static inline HRESULT IUIAutomationLegacyIAccessiblePattern_GetIAccessible(IUIAutomationLegacyIAccessiblePattern* This,IAccessible **ppAccessible) {
    return This->lpVtbl->GetIAccessible(This,ppAccessible);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationLegacyIAccessiblePattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationItemContainerPattern interface
 */
#ifndef __IUIAutomationItemContainerPattern_INTERFACE_DEFINED__
#define __IUIAutomationItemContainerPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationItemContainerPattern, 0xc690fdb2, 0x27a8, 0x423c, 0x81,0x2d, 0x42,0x97,0x73,0xc9,0x08,0x4e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c690fdb2-27a8-423c-812d-429773c9084e")
IUIAutomationItemContainerPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE FindItemByProperty(
        IUIAutomationElement *pStartAfter,
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationElement **pFound) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationItemContainerPattern, 0xc690fdb2, 0x27a8, 0x423c, 0x81,0x2d, 0x42,0x97,0x73,0xc9,0x08,0x4e)
#endif
#else
typedef struct IUIAutomationItemContainerPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationItemContainerPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationItemContainerPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationItemContainerPattern *This);

    /*** IUIAutomationItemContainerPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *FindItemByProperty)(
        IUIAutomationItemContainerPattern *This,
        IUIAutomationElement *pStartAfter,
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationElement **pFound);

    END_INTERFACE
} IUIAutomationItemContainerPatternVtbl;

interface IUIAutomationItemContainerPattern {
    CONST_VTBL IUIAutomationItemContainerPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationItemContainerPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationItemContainerPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationItemContainerPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationItemContainerPattern methods ***/
#define IUIAutomationItemContainerPattern_FindItemByProperty(This,pStartAfter,propertyId,value,pFound) (This)->lpVtbl->FindItemByProperty(This,pStartAfter,propertyId,value,pFound)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationItemContainerPattern_QueryInterface(IUIAutomationItemContainerPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationItemContainerPattern_AddRef(IUIAutomationItemContainerPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationItemContainerPattern_Release(IUIAutomationItemContainerPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationItemContainerPattern methods ***/
static inline HRESULT IUIAutomationItemContainerPattern_FindItemByProperty(IUIAutomationItemContainerPattern* This,IUIAutomationElement *pStartAfter,PROPERTYID propertyId,VARIANT value,IUIAutomationElement **pFound) {
    return This->lpVtbl->FindItemByProperty(This,pStartAfter,propertyId,value,pFound);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationItemContainerPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationVirtualizedItemPattern interface
 */
#ifndef __IUIAutomationVirtualizedItemPattern_INTERFACE_DEFINED__
#define __IUIAutomationVirtualizedItemPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationVirtualizedItemPattern, 0x6ba3d7a6, 0x04cf, 0x4f11, 0x87,0x93, 0xa8,0xd1,0xcd,0xe9,0x96,0x9f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6ba3d7a6-04cf-4f11-8793-a8d1cde9969f")
IUIAutomationVirtualizedItemPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Realize(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationVirtualizedItemPattern, 0x6ba3d7a6, 0x04cf, 0x4f11, 0x87,0x93, 0xa8,0xd1,0xcd,0xe9,0x96,0x9f)
#endif
#else
typedef struct IUIAutomationVirtualizedItemPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationVirtualizedItemPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationVirtualizedItemPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationVirtualizedItemPattern *This);

    /*** IUIAutomationVirtualizedItemPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Realize)(
        IUIAutomationVirtualizedItemPattern *This);

    END_INTERFACE
} IUIAutomationVirtualizedItemPatternVtbl;

interface IUIAutomationVirtualizedItemPattern {
    CONST_VTBL IUIAutomationVirtualizedItemPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationVirtualizedItemPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationVirtualizedItemPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationVirtualizedItemPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationVirtualizedItemPattern methods ***/
#define IUIAutomationVirtualizedItemPattern_Realize(This) (This)->lpVtbl->Realize(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationVirtualizedItemPattern_QueryInterface(IUIAutomationVirtualizedItemPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationVirtualizedItemPattern_AddRef(IUIAutomationVirtualizedItemPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationVirtualizedItemPattern_Release(IUIAutomationVirtualizedItemPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationVirtualizedItemPattern methods ***/
static inline HRESULT IUIAutomationVirtualizedItemPattern_Realize(IUIAutomationVirtualizedItemPattern* This) {
    return This->lpVtbl->Realize(This);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationVirtualizedItemPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationAnnotationPattern interface
 */
#ifndef __IUIAutomationAnnotationPattern_INTERFACE_DEFINED__
#define __IUIAutomationAnnotationPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationAnnotationPattern, 0x9a175b21, 0x339e, 0x41b1, 0x8e,0x8b, 0x62,0x3f,0x6b,0x68,0x10,0x98);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9a175b21-339e-41b1-8e8b-623f6b681098")
IUIAutomationAnnotationPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentAnnotationTypeId(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAnnotationTypeName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAuthor(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDateTime(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentTarget(
        IUIAutomationElement **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAnnotationTypeId(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAnnotationTypeName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAuthor(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDateTime(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedTarget(
        IUIAutomationElement **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationAnnotationPattern, 0x9a175b21, 0x339e, 0x41b1, 0x8e,0x8b, 0x62,0x3f,0x6b,0x68,0x10,0x98)
#endif
#else
typedef struct IUIAutomationAnnotationPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationAnnotationPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationAnnotationPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationAnnotationPattern *This);

    /*** IUIAutomationAnnotationPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationTypeId)(
        IUIAutomationAnnotationPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationTypeName)(
        IUIAutomationAnnotationPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAuthor)(
        IUIAutomationAnnotationPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDateTime)(
        IUIAutomationAnnotationPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentTarget)(
        IUIAutomationAnnotationPattern *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationTypeId)(
        IUIAutomationAnnotationPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationTypeName)(
        IUIAutomationAnnotationPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAuthor)(
        IUIAutomationAnnotationPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDateTime)(
        IUIAutomationAnnotationPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedTarget)(
        IUIAutomationAnnotationPattern *This,
        IUIAutomationElement **retVal);

    END_INTERFACE
} IUIAutomationAnnotationPatternVtbl;

interface IUIAutomationAnnotationPattern {
    CONST_VTBL IUIAutomationAnnotationPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationAnnotationPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationAnnotationPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationAnnotationPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationAnnotationPattern methods ***/
#define IUIAutomationAnnotationPattern_get_CurrentAnnotationTypeId(This,retVal) (This)->lpVtbl->get_CurrentAnnotationTypeId(This,retVal)
#define IUIAutomationAnnotationPattern_get_CurrentAnnotationTypeName(This,retVal) (This)->lpVtbl->get_CurrentAnnotationTypeName(This,retVal)
#define IUIAutomationAnnotationPattern_get_CurrentAuthor(This,retVal) (This)->lpVtbl->get_CurrentAuthor(This,retVal)
#define IUIAutomationAnnotationPattern_get_CurrentDateTime(This,retVal) (This)->lpVtbl->get_CurrentDateTime(This,retVal)
#define IUIAutomationAnnotationPattern_get_CurrentTarget(This,retVal) (This)->lpVtbl->get_CurrentTarget(This,retVal)
#define IUIAutomationAnnotationPattern_get_CachedAnnotationTypeId(This,retVal) (This)->lpVtbl->get_CachedAnnotationTypeId(This,retVal)
#define IUIAutomationAnnotationPattern_get_CachedAnnotationTypeName(This,retVal) (This)->lpVtbl->get_CachedAnnotationTypeName(This,retVal)
#define IUIAutomationAnnotationPattern_get_CachedAuthor(This,retVal) (This)->lpVtbl->get_CachedAuthor(This,retVal)
#define IUIAutomationAnnotationPattern_get_CachedDateTime(This,retVal) (This)->lpVtbl->get_CachedDateTime(This,retVal)
#define IUIAutomationAnnotationPattern_get_CachedTarget(This,retVal) (This)->lpVtbl->get_CachedTarget(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationAnnotationPattern_QueryInterface(IUIAutomationAnnotationPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationAnnotationPattern_AddRef(IUIAutomationAnnotationPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationAnnotationPattern_Release(IUIAutomationAnnotationPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationAnnotationPattern methods ***/
static inline HRESULT IUIAutomationAnnotationPattern_get_CurrentAnnotationTypeId(IUIAutomationAnnotationPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentAnnotationTypeId(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CurrentAnnotationTypeName(IUIAutomationAnnotationPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAnnotationTypeName(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CurrentAuthor(IUIAutomationAnnotationPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAuthor(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CurrentDateTime(IUIAutomationAnnotationPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentDateTime(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CurrentTarget(IUIAutomationAnnotationPattern* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentTarget(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CachedAnnotationTypeId(IUIAutomationAnnotationPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedAnnotationTypeId(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CachedAnnotationTypeName(IUIAutomationAnnotationPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAnnotationTypeName(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CachedAuthor(IUIAutomationAnnotationPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAuthor(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CachedDateTime(IUIAutomationAnnotationPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedDateTime(This,retVal);
}
static inline HRESULT IUIAutomationAnnotationPattern_get_CachedTarget(IUIAutomationAnnotationPattern* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedTarget(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationAnnotationPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationStylesPattern interface
 */
#ifndef __IUIAutomationStylesPattern_INTERFACE_DEFINED__
#define __IUIAutomationStylesPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationStylesPattern, 0x85b5f0a2, 0xbd79, 0x484a, 0xad,0x2b, 0x38,0x8c,0x98,0x38,0xd5,0xfb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("85b5f0a2-bd79-484a-ad2b-388c9838d5fb")
IUIAutomationStylesPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentStyleId(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentStyleName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentFillColor(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentFillPatternStyle(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentShape(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentFillPatternColor(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentExtendedProperties(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentExtendedPropertiesAsArray(
        struct ExtendedProperty **propertyArray,
        int *propertyCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedStyleId(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedStyleName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedFillColor(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedFillPatternStyle(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedShape(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedFillPatternColor(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedExtendedProperties(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedExtendedPropertiesAsArray(
        struct ExtendedProperty **propertyArray,
        int *propertyCount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationStylesPattern, 0x85b5f0a2, 0xbd79, 0x484a, 0xad,0x2b, 0x38,0x8c,0x98,0x38,0xd5,0xfb)
#endif
#else
typedef struct IUIAutomationStylesPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationStylesPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationStylesPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationStylesPattern *This);

    /*** IUIAutomationStylesPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentStyleId)(
        IUIAutomationStylesPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentStyleName)(
        IUIAutomationStylesPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFillColor)(
        IUIAutomationStylesPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFillPatternStyle)(
        IUIAutomationStylesPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentShape)(
        IUIAutomationStylesPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFillPatternColor)(
        IUIAutomationStylesPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentExtendedProperties)(
        IUIAutomationStylesPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentExtendedPropertiesAsArray)(
        IUIAutomationStylesPattern *This,
        struct ExtendedProperty **propertyArray,
        int *propertyCount);

    HRESULT (STDMETHODCALLTYPE *get_CachedStyleId)(
        IUIAutomationStylesPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedStyleName)(
        IUIAutomationStylesPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFillColor)(
        IUIAutomationStylesPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFillPatternStyle)(
        IUIAutomationStylesPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedShape)(
        IUIAutomationStylesPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFillPatternColor)(
        IUIAutomationStylesPattern *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedExtendedProperties)(
        IUIAutomationStylesPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedExtendedPropertiesAsArray)(
        IUIAutomationStylesPattern *This,
        struct ExtendedProperty **propertyArray,
        int *propertyCount);

    END_INTERFACE
} IUIAutomationStylesPatternVtbl;

interface IUIAutomationStylesPattern {
    CONST_VTBL IUIAutomationStylesPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationStylesPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationStylesPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationStylesPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationStylesPattern methods ***/
#define IUIAutomationStylesPattern_get_CurrentStyleId(This,retVal) (This)->lpVtbl->get_CurrentStyleId(This,retVal)
#define IUIAutomationStylesPattern_get_CurrentStyleName(This,retVal) (This)->lpVtbl->get_CurrentStyleName(This,retVal)
#define IUIAutomationStylesPattern_get_CurrentFillColor(This,retVal) (This)->lpVtbl->get_CurrentFillColor(This,retVal)
#define IUIAutomationStylesPattern_get_CurrentFillPatternStyle(This,retVal) (This)->lpVtbl->get_CurrentFillPatternStyle(This,retVal)
#define IUIAutomationStylesPattern_get_CurrentShape(This,retVal) (This)->lpVtbl->get_CurrentShape(This,retVal)
#define IUIAutomationStylesPattern_get_CurrentFillPatternColor(This,retVal) (This)->lpVtbl->get_CurrentFillPatternColor(This,retVal)
#define IUIAutomationStylesPattern_get_CurrentExtendedProperties(This,retVal) (This)->lpVtbl->get_CurrentExtendedProperties(This,retVal)
#define IUIAutomationStylesPattern_GetCurrentExtendedPropertiesAsArray(This,propertyArray,propertyCount) (This)->lpVtbl->GetCurrentExtendedPropertiesAsArray(This,propertyArray,propertyCount)
#define IUIAutomationStylesPattern_get_CachedStyleId(This,retVal) (This)->lpVtbl->get_CachedStyleId(This,retVal)
#define IUIAutomationStylesPattern_get_CachedStyleName(This,retVal) (This)->lpVtbl->get_CachedStyleName(This,retVal)
#define IUIAutomationStylesPattern_get_CachedFillColor(This,retVal) (This)->lpVtbl->get_CachedFillColor(This,retVal)
#define IUIAutomationStylesPattern_get_CachedFillPatternStyle(This,retVal) (This)->lpVtbl->get_CachedFillPatternStyle(This,retVal)
#define IUIAutomationStylesPattern_get_CachedShape(This,retVal) (This)->lpVtbl->get_CachedShape(This,retVal)
#define IUIAutomationStylesPattern_get_CachedFillPatternColor(This,retVal) (This)->lpVtbl->get_CachedFillPatternColor(This,retVal)
#define IUIAutomationStylesPattern_get_CachedExtendedProperties(This,retVal) (This)->lpVtbl->get_CachedExtendedProperties(This,retVal)
#define IUIAutomationStylesPattern_GetCachedExtendedPropertiesAsArray(This,propertyArray,propertyCount) (This)->lpVtbl->GetCachedExtendedPropertiesAsArray(This,propertyArray,propertyCount)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationStylesPattern_QueryInterface(IUIAutomationStylesPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationStylesPattern_AddRef(IUIAutomationStylesPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationStylesPattern_Release(IUIAutomationStylesPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationStylesPattern methods ***/
static inline HRESULT IUIAutomationStylesPattern_get_CurrentStyleId(IUIAutomationStylesPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentStyleId(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CurrentStyleName(IUIAutomationStylesPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentStyleName(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CurrentFillColor(IUIAutomationStylesPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentFillColor(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CurrentFillPatternStyle(IUIAutomationStylesPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFillPatternStyle(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CurrentShape(IUIAutomationStylesPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentShape(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CurrentFillPatternColor(IUIAutomationStylesPattern* This,int *retVal) {
    return This->lpVtbl->get_CurrentFillPatternColor(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CurrentExtendedProperties(IUIAutomationStylesPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentExtendedProperties(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_GetCurrentExtendedPropertiesAsArray(IUIAutomationStylesPattern* This,struct ExtendedProperty **propertyArray,int *propertyCount) {
    return This->lpVtbl->GetCurrentExtendedPropertiesAsArray(This,propertyArray,propertyCount);
}
static inline HRESULT IUIAutomationStylesPattern_get_CachedStyleId(IUIAutomationStylesPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedStyleId(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CachedStyleName(IUIAutomationStylesPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedStyleName(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CachedFillColor(IUIAutomationStylesPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedFillColor(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CachedFillPatternStyle(IUIAutomationStylesPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFillPatternStyle(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CachedShape(IUIAutomationStylesPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedShape(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CachedFillPatternColor(IUIAutomationStylesPattern* This,int *retVal) {
    return This->lpVtbl->get_CachedFillPatternColor(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_get_CachedExtendedProperties(IUIAutomationStylesPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedExtendedProperties(This,retVal);
}
static inline HRESULT IUIAutomationStylesPattern_GetCachedExtendedPropertiesAsArray(IUIAutomationStylesPattern* This,struct ExtendedProperty **propertyArray,int *propertyCount) {
    return This->lpVtbl->GetCachedExtendedPropertiesAsArray(This,propertyArray,propertyCount);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationStylesPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationSpreadsheetPattern interface
 */
#ifndef __IUIAutomationSpreadsheetPattern_INTERFACE_DEFINED__
#define __IUIAutomationSpreadsheetPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationSpreadsheetPattern, 0x7517a7c8, 0xfaae, 0x4de9, 0x9f,0x08, 0x29,0xb9,0x1e,0x85,0x95,0xc1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7517a7c8-faae-4de9-9f08-29b91e8595c1")
IUIAutomationSpreadsheetPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetItemByName(
        BSTR name,
        IUIAutomationElement **element) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationSpreadsheetPattern, 0x7517a7c8, 0xfaae, 0x4de9, 0x9f,0x08, 0x29,0xb9,0x1e,0x85,0x95,0xc1)
#endif
#else
typedef struct IUIAutomationSpreadsheetPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationSpreadsheetPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationSpreadsheetPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationSpreadsheetPattern *This);

    /*** IUIAutomationSpreadsheetPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemByName)(
        IUIAutomationSpreadsheetPattern *This,
        BSTR name,
        IUIAutomationElement **element);

    END_INTERFACE
} IUIAutomationSpreadsheetPatternVtbl;

interface IUIAutomationSpreadsheetPattern {
    CONST_VTBL IUIAutomationSpreadsheetPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationSpreadsheetPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationSpreadsheetPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationSpreadsheetPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationSpreadsheetPattern methods ***/
#define IUIAutomationSpreadsheetPattern_GetItemByName(This,name,element) (This)->lpVtbl->GetItemByName(This,name,element)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationSpreadsheetPattern_QueryInterface(IUIAutomationSpreadsheetPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationSpreadsheetPattern_AddRef(IUIAutomationSpreadsheetPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationSpreadsheetPattern_Release(IUIAutomationSpreadsheetPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationSpreadsheetPattern methods ***/
static inline HRESULT IUIAutomationSpreadsheetPattern_GetItemByName(IUIAutomationSpreadsheetPattern* This,BSTR name,IUIAutomationElement **element) {
    return This->lpVtbl->GetItemByName(This,name,element);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationSpreadsheetPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationSpreadsheetItemPattern interface
 */
#ifndef __IUIAutomationSpreadsheetItemPattern_INTERFACE_DEFINED__
#define __IUIAutomationSpreadsheetItemPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationSpreadsheetItemPattern, 0x7d4fb86c, 0x8d34, 0x40e1, 0x8e,0x83, 0x62,0xc1,0x52,0x04,0xe3,0x35);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7d4fb86c-8d34-40e1-8e83-62c15204e335")
IUIAutomationSpreadsheetItemPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentFormula(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentAnnotationObjects(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentAnnotationTypes(
        SAFEARRAY **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedFormula(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedAnnotationObjects(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedAnnotationTypes(
        SAFEARRAY **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationSpreadsheetItemPattern, 0x7d4fb86c, 0x8d34, 0x40e1, 0x8e,0x83, 0x62,0xc1,0x52,0x04,0xe3,0x35)
#endif
#else
typedef struct IUIAutomationSpreadsheetItemPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationSpreadsheetItemPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationSpreadsheetItemPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationSpreadsheetItemPattern *This);

    /*** IUIAutomationSpreadsheetItemPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentFormula)(
        IUIAutomationSpreadsheetItemPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentAnnotationObjects)(
        IUIAutomationSpreadsheetItemPattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentAnnotationTypes)(
        IUIAutomationSpreadsheetItemPattern *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFormula)(
        IUIAutomationSpreadsheetItemPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedAnnotationObjects)(
        IUIAutomationSpreadsheetItemPattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedAnnotationTypes)(
        IUIAutomationSpreadsheetItemPattern *This,
        SAFEARRAY **retVal);

    END_INTERFACE
} IUIAutomationSpreadsheetItemPatternVtbl;

interface IUIAutomationSpreadsheetItemPattern {
    CONST_VTBL IUIAutomationSpreadsheetItemPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationSpreadsheetItemPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationSpreadsheetItemPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationSpreadsheetItemPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationSpreadsheetItemPattern methods ***/
#define IUIAutomationSpreadsheetItemPattern_get_CurrentFormula(This,retVal) (This)->lpVtbl->get_CurrentFormula(This,retVal)
#define IUIAutomationSpreadsheetItemPattern_GetCurrentAnnotationObjects(This,retVal) (This)->lpVtbl->GetCurrentAnnotationObjects(This,retVal)
#define IUIAutomationSpreadsheetItemPattern_GetCurrentAnnotationTypes(This,retVal) (This)->lpVtbl->GetCurrentAnnotationTypes(This,retVal)
#define IUIAutomationSpreadsheetItemPattern_get_CachedFormula(This,retVal) (This)->lpVtbl->get_CachedFormula(This,retVal)
#define IUIAutomationSpreadsheetItemPattern_GetCachedAnnotationObjects(This,retVal) (This)->lpVtbl->GetCachedAnnotationObjects(This,retVal)
#define IUIAutomationSpreadsheetItemPattern_GetCachedAnnotationTypes(This,retVal) (This)->lpVtbl->GetCachedAnnotationTypes(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationSpreadsheetItemPattern_QueryInterface(IUIAutomationSpreadsheetItemPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationSpreadsheetItemPattern_AddRef(IUIAutomationSpreadsheetItemPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationSpreadsheetItemPattern_Release(IUIAutomationSpreadsheetItemPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationSpreadsheetItemPattern methods ***/
static inline HRESULT IUIAutomationSpreadsheetItemPattern_get_CurrentFormula(IUIAutomationSpreadsheetItemPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFormula(This,retVal);
}
static inline HRESULT IUIAutomationSpreadsheetItemPattern_GetCurrentAnnotationObjects(IUIAutomationSpreadsheetItemPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCurrentAnnotationObjects(This,retVal);
}
static inline HRESULT IUIAutomationSpreadsheetItemPattern_GetCurrentAnnotationTypes(IUIAutomationSpreadsheetItemPattern* This,SAFEARRAY **retVal) {
    return This->lpVtbl->GetCurrentAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationSpreadsheetItemPattern_get_CachedFormula(IUIAutomationSpreadsheetItemPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFormula(This,retVal);
}
static inline HRESULT IUIAutomationSpreadsheetItemPattern_GetCachedAnnotationObjects(IUIAutomationSpreadsheetItemPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCachedAnnotationObjects(This,retVal);
}
static inline HRESULT IUIAutomationSpreadsheetItemPattern_GetCachedAnnotationTypes(IUIAutomationSpreadsheetItemPattern* This,SAFEARRAY **retVal) {
    return This->lpVtbl->GetCachedAnnotationTypes(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationSpreadsheetItemPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTransformPattern2 interface
 */
#ifndef __IUIAutomationTransformPattern2_INTERFACE_DEFINED__
#define __IUIAutomationTransformPattern2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTransformPattern2, 0x6d74d017, 0x6ecb, 0x4381, 0xb3,0x8b, 0x3c,0x17,0xa4,0x8f,0xf1,0xc2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6d74d017-6ecb-4381-b38b-3c17a48ff1c2")
IUIAutomationTransformPattern2 : public IUIAutomationTransformPattern
{
    virtual HRESULT STDMETHODCALLTYPE Zoom(
        double zoomValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE ZoomByUnit(
        enum ZoomUnit zoomUnit) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCanZoom(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCanZoom(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentZoomLevel(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedZoomLevel(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentZoomMinimum(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedZoomMinimum(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentZoomMaximum(
        double *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedZoomMaximum(
        double *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTransformPattern2, 0x6d74d017, 0x6ecb, 0x4381, 0xb3,0x8b, 0x3c,0x17,0xa4,0x8f,0xf1,0xc2)
#endif
#else
typedef struct IUIAutomationTransformPattern2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTransformPattern2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTransformPattern2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTransformPattern2 *This);

    /*** IUIAutomationTransformPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *Move)(
        IUIAutomationTransformPattern2 *This,
        double x,
        double y);

    HRESULT (STDMETHODCALLTYPE *Resize)(
        IUIAutomationTransformPattern2 *This,
        double width,
        double height);

    HRESULT (STDMETHODCALLTYPE *Rotate)(
        IUIAutomationTransformPattern2 *This,
        double degrees);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanMove)(
        IUIAutomationTransformPattern2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanResize)(
        IUIAutomationTransformPattern2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanRotate)(
        IUIAutomationTransformPattern2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanMove)(
        IUIAutomationTransformPattern2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanResize)(
        IUIAutomationTransformPattern2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanRotate)(
        IUIAutomationTransformPattern2 *This,
        WINBOOL *retVal);

    /*** IUIAutomationTransformPattern2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Zoom)(
        IUIAutomationTransformPattern2 *This,
        double zoomValue);

    HRESULT (STDMETHODCALLTYPE *ZoomByUnit)(
        IUIAutomationTransformPattern2 *This,
        enum ZoomUnit zoomUnit);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCanZoom)(
        IUIAutomationTransformPattern2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCanZoom)(
        IUIAutomationTransformPattern2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentZoomLevel)(
        IUIAutomationTransformPattern2 *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedZoomLevel)(
        IUIAutomationTransformPattern2 *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentZoomMinimum)(
        IUIAutomationTransformPattern2 *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedZoomMinimum)(
        IUIAutomationTransformPattern2 *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentZoomMaximum)(
        IUIAutomationTransformPattern2 *This,
        double *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedZoomMaximum)(
        IUIAutomationTransformPattern2 *This,
        double *retVal);

    END_INTERFACE
} IUIAutomationTransformPattern2Vtbl;

interface IUIAutomationTransformPattern2 {
    CONST_VTBL IUIAutomationTransformPattern2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTransformPattern2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTransformPattern2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTransformPattern2_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTransformPattern methods ***/
#define IUIAutomationTransformPattern2_Move(This,x,y) (This)->lpVtbl->Move(This,x,y)
#define IUIAutomationTransformPattern2_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
#define IUIAutomationTransformPattern2_Rotate(This,degrees) (This)->lpVtbl->Rotate(This,degrees)
#define IUIAutomationTransformPattern2_get_CurrentCanMove(This,retVal) (This)->lpVtbl->get_CurrentCanMove(This,retVal)
#define IUIAutomationTransformPattern2_get_CurrentCanResize(This,retVal) (This)->lpVtbl->get_CurrentCanResize(This,retVal)
#define IUIAutomationTransformPattern2_get_CurrentCanRotate(This,retVal) (This)->lpVtbl->get_CurrentCanRotate(This,retVal)
#define IUIAutomationTransformPattern2_get_CachedCanMove(This,retVal) (This)->lpVtbl->get_CachedCanMove(This,retVal)
#define IUIAutomationTransformPattern2_get_CachedCanResize(This,retVal) (This)->lpVtbl->get_CachedCanResize(This,retVal)
#define IUIAutomationTransformPattern2_get_CachedCanRotate(This,retVal) (This)->lpVtbl->get_CachedCanRotate(This,retVal)
/*** IUIAutomationTransformPattern2 methods ***/
#define IUIAutomationTransformPattern2_Zoom(This,zoomValue) (This)->lpVtbl->Zoom(This,zoomValue)
#define IUIAutomationTransformPattern2_ZoomByUnit(This,zoomUnit) (This)->lpVtbl->ZoomByUnit(This,zoomUnit)
#define IUIAutomationTransformPattern2_get_CurrentCanZoom(This,retVal) (This)->lpVtbl->get_CurrentCanZoom(This,retVal)
#define IUIAutomationTransformPattern2_get_CachedCanZoom(This,retVal) (This)->lpVtbl->get_CachedCanZoom(This,retVal)
#define IUIAutomationTransformPattern2_get_CurrentZoomLevel(This,retVal) (This)->lpVtbl->get_CurrentZoomLevel(This,retVal)
#define IUIAutomationTransformPattern2_get_CachedZoomLevel(This,retVal) (This)->lpVtbl->get_CachedZoomLevel(This,retVal)
#define IUIAutomationTransformPattern2_get_CurrentZoomMinimum(This,retVal) (This)->lpVtbl->get_CurrentZoomMinimum(This,retVal)
#define IUIAutomationTransformPattern2_get_CachedZoomMinimum(This,retVal) (This)->lpVtbl->get_CachedZoomMinimum(This,retVal)
#define IUIAutomationTransformPattern2_get_CurrentZoomMaximum(This,retVal) (This)->lpVtbl->get_CurrentZoomMaximum(This,retVal)
#define IUIAutomationTransformPattern2_get_CachedZoomMaximum(This,retVal) (This)->lpVtbl->get_CachedZoomMaximum(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTransformPattern2_QueryInterface(IUIAutomationTransformPattern2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTransformPattern2_AddRef(IUIAutomationTransformPattern2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTransformPattern2_Release(IUIAutomationTransformPattern2* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTransformPattern methods ***/
static inline HRESULT IUIAutomationTransformPattern2_Move(IUIAutomationTransformPattern2* This,double x,double y) {
    return This->lpVtbl->Move(This,x,y);
}
static inline HRESULT IUIAutomationTransformPattern2_Resize(IUIAutomationTransformPattern2* This,double width,double height) {
    return This->lpVtbl->Resize(This,width,height);
}
static inline HRESULT IUIAutomationTransformPattern2_Rotate(IUIAutomationTransformPattern2* This,double degrees) {
    return This->lpVtbl->Rotate(This,degrees);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CurrentCanMove(IUIAutomationTransformPattern2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanMove(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CurrentCanResize(IUIAutomationTransformPattern2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanResize(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CurrentCanRotate(IUIAutomationTransformPattern2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanRotate(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CachedCanMove(IUIAutomationTransformPattern2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanMove(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CachedCanResize(IUIAutomationTransformPattern2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanResize(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CachedCanRotate(IUIAutomationTransformPattern2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanRotate(This,retVal);
}
/*** IUIAutomationTransformPattern2 methods ***/
static inline HRESULT IUIAutomationTransformPattern2_Zoom(IUIAutomationTransformPattern2* This,double zoomValue) {
    return This->lpVtbl->Zoom(This,zoomValue);
}
static inline HRESULT IUIAutomationTransformPattern2_ZoomByUnit(IUIAutomationTransformPattern2* This,enum ZoomUnit zoomUnit) {
    return This->lpVtbl->ZoomByUnit(This,zoomUnit);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CurrentCanZoom(IUIAutomationTransformPattern2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentCanZoom(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CachedCanZoom(IUIAutomationTransformPattern2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedCanZoom(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CurrentZoomLevel(IUIAutomationTransformPattern2* This,double *retVal) {
    return This->lpVtbl->get_CurrentZoomLevel(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CachedZoomLevel(IUIAutomationTransformPattern2* This,double *retVal) {
    return This->lpVtbl->get_CachedZoomLevel(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CurrentZoomMinimum(IUIAutomationTransformPattern2* This,double *retVal) {
    return This->lpVtbl->get_CurrentZoomMinimum(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CachedZoomMinimum(IUIAutomationTransformPattern2* This,double *retVal) {
    return This->lpVtbl->get_CachedZoomMinimum(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CurrentZoomMaximum(IUIAutomationTransformPattern2* This,double *retVal) {
    return This->lpVtbl->get_CurrentZoomMaximum(This,retVal);
}
static inline HRESULT IUIAutomationTransformPattern2_get_CachedZoomMaximum(IUIAutomationTransformPattern2* This,double *retVal) {
    return This->lpVtbl->get_CachedZoomMaximum(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTransformPattern2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationTextChildPattern interface
 */
#ifndef __IUIAutomationTextChildPattern_INTERFACE_DEFINED__
#define __IUIAutomationTextChildPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationTextChildPattern, 0x6552b038, 0xae05, 0x40c8, 0xab,0xfd, 0xaa,0x08,0x35,0x2a,0xab,0x86);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6552b038-ae05-40c8-abfd-aa08352aab86")
IUIAutomationTextChildPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_TextContainer(
        IUIAutomationElement **container) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TextRange(
        IUIAutomationTextRange **range) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationTextChildPattern, 0x6552b038, 0xae05, 0x40c8, 0xab,0xfd, 0xaa,0x08,0x35,0x2a,0xab,0x86)
#endif
#else
typedef struct IUIAutomationTextChildPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationTextChildPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationTextChildPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationTextChildPattern *This);

    /*** IUIAutomationTextChildPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *get_TextContainer)(
        IUIAutomationTextChildPattern *This,
        IUIAutomationElement **container);

    HRESULT (STDMETHODCALLTYPE *get_TextRange)(
        IUIAutomationTextChildPattern *This,
        IUIAutomationTextRange **range);

    END_INTERFACE
} IUIAutomationTextChildPatternVtbl;

interface IUIAutomationTextChildPattern {
    CONST_VTBL IUIAutomationTextChildPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationTextChildPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationTextChildPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationTextChildPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationTextChildPattern methods ***/
#define IUIAutomationTextChildPattern_get_TextContainer(This,container) (This)->lpVtbl->get_TextContainer(This,container)
#define IUIAutomationTextChildPattern_get_TextRange(This,range) (This)->lpVtbl->get_TextRange(This,range)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationTextChildPattern_QueryInterface(IUIAutomationTextChildPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationTextChildPattern_AddRef(IUIAutomationTextChildPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationTextChildPattern_Release(IUIAutomationTextChildPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationTextChildPattern methods ***/
static inline HRESULT IUIAutomationTextChildPattern_get_TextContainer(IUIAutomationTextChildPattern* This,IUIAutomationElement **container) {
    return This->lpVtbl->get_TextContainer(This,container);
}
static inline HRESULT IUIAutomationTextChildPattern_get_TextRange(IUIAutomationTextChildPattern* This,IUIAutomationTextRange **range) {
    return This->lpVtbl->get_TextRange(This,range);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationTextChildPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationDragPattern interface
 */
#ifndef __IUIAutomationDragPattern_INTERFACE_DEFINED__
#define __IUIAutomationDragPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationDragPattern, 0x1dc7b570, 0x1f54, 0x4bad, 0xbc,0xda, 0xd3,0x6a,0x72,0x2f,0xb7,0xbd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1dc7b570-1f54-4bad-bcda-d36a722fb7bd")
IUIAutomationDragPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsGrabbed(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsGrabbed(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDropEffect(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDropEffect(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDropEffects(
        SAFEARRAY **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDropEffects(
        SAFEARRAY **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentGrabbedItems(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedGrabbedItems(
        IUIAutomationElementArray **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationDragPattern, 0x1dc7b570, 0x1f54, 0x4bad, 0xbc,0xda, 0xd3,0x6a,0x72,0x2f,0xb7,0xbd)
#endif
#else
typedef struct IUIAutomationDragPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationDragPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationDragPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationDragPattern *This);

    /*** IUIAutomationDragPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentIsGrabbed)(
        IUIAutomationDragPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsGrabbed)(
        IUIAutomationDragPattern *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDropEffect)(
        IUIAutomationDragPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDropEffect)(
        IUIAutomationDragPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDropEffects)(
        IUIAutomationDragPattern *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDropEffects)(
        IUIAutomationDragPattern *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentGrabbedItems)(
        IUIAutomationDragPattern *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedGrabbedItems)(
        IUIAutomationDragPattern *This,
        IUIAutomationElementArray **retVal);

    END_INTERFACE
} IUIAutomationDragPatternVtbl;

interface IUIAutomationDragPattern {
    CONST_VTBL IUIAutomationDragPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationDragPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationDragPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationDragPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationDragPattern methods ***/
#define IUIAutomationDragPattern_get_CurrentIsGrabbed(This,retVal) (This)->lpVtbl->get_CurrentIsGrabbed(This,retVal)
#define IUIAutomationDragPattern_get_CachedIsGrabbed(This,retVal) (This)->lpVtbl->get_CachedIsGrabbed(This,retVal)
#define IUIAutomationDragPattern_get_CurrentDropEffect(This,retVal) (This)->lpVtbl->get_CurrentDropEffect(This,retVal)
#define IUIAutomationDragPattern_get_CachedDropEffect(This,retVal) (This)->lpVtbl->get_CachedDropEffect(This,retVal)
#define IUIAutomationDragPattern_get_CurrentDropEffects(This,retVal) (This)->lpVtbl->get_CurrentDropEffects(This,retVal)
#define IUIAutomationDragPattern_get_CachedDropEffects(This,retVal) (This)->lpVtbl->get_CachedDropEffects(This,retVal)
#define IUIAutomationDragPattern_GetCurrentGrabbedItems(This,retVal) (This)->lpVtbl->GetCurrentGrabbedItems(This,retVal)
#define IUIAutomationDragPattern_GetCachedGrabbedItems(This,retVal) (This)->lpVtbl->GetCachedGrabbedItems(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationDragPattern_QueryInterface(IUIAutomationDragPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationDragPattern_AddRef(IUIAutomationDragPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationDragPattern_Release(IUIAutomationDragPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationDragPattern methods ***/
static inline HRESULT IUIAutomationDragPattern_get_CurrentIsGrabbed(IUIAutomationDragPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsGrabbed(This,retVal);
}
static inline HRESULT IUIAutomationDragPattern_get_CachedIsGrabbed(IUIAutomationDragPattern* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsGrabbed(This,retVal);
}
static inline HRESULT IUIAutomationDragPattern_get_CurrentDropEffect(IUIAutomationDragPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentDropEffect(This,retVal);
}
static inline HRESULT IUIAutomationDragPattern_get_CachedDropEffect(IUIAutomationDragPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedDropEffect(This,retVal);
}
static inline HRESULT IUIAutomationDragPattern_get_CurrentDropEffects(IUIAutomationDragPattern* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CurrentDropEffects(This,retVal);
}
static inline HRESULT IUIAutomationDragPattern_get_CachedDropEffects(IUIAutomationDragPattern* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CachedDropEffects(This,retVal);
}
static inline HRESULT IUIAutomationDragPattern_GetCurrentGrabbedItems(IUIAutomationDragPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCurrentGrabbedItems(This,retVal);
}
static inline HRESULT IUIAutomationDragPattern_GetCachedGrabbedItems(IUIAutomationDragPattern* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->GetCachedGrabbedItems(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationDragPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationDropTargetPattern interface
 */
#ifndef __IUIAutomationDropTargetPattern_INTERFACE_DEFINED__
#define __IUIAutomationDropTargetPattern_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationDropTargetPattern, 0x69a095f7, 0xeee4, 0x430e, 0xa4,0x6b, 0xfb,0x73,0xb1,0xae,0x39,0xa5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("69a095f7-eee4-430e-a46b-fb73b1ae39a5")
IUIAutomationDropTargetPattern : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentDropTargetEffect(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDropTargetEffect(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDropTargetEffects(
        SAFEARRAY **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDropTargetEffects(
        SAFEARRAY **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationDropTargetPattern, 0x69a095f7, 0xeee4, 0x430e, 0xa4,0x6b, 0xfb,0x73,0xb1,0xae,0x39,0xa5)
#endif
#else
typedef struct IUIAutomationDropTargetPatternVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationDropTargetPattern *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationDropTargetPattern *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationDropTargetPattern *This);

    /*** IUIAutomationDropTargetPattern methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentDropTargetEffect)(
        IUIAutomationDropTargetPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDropTargetEffect)(
        IUIAutomationDropTargetPattern *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDropTargetEffects)(
        IUIAutomationDropTargetPattern *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDropTargetEffects)(
        IUIAutomationDropTargetPattern *This,
        SAFEARRAY **retVal);

    END_INTERFACE
} IUIAutomationDropTargetPatternVtbl;

interface IUIAutomationDropTargetPattern {
    CONST_VTBL IUIAutomationDropTargetPatternVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationDropTargetPattern_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationDropTargetPattern_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationDropTargetPattern_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationDropTargetPattern methods ***/
#define IUIAutomationDropTargetPattern_get_CurrentDropTargetEffect(This,retVal) (This)->lpVtbl->get_CurrentDropTargetEffect(This,retVal)
#define IUIAutomationDropTargetPattern_get_CachedDropTargetEffect(This,retVal) (This)->lpVtbl->get_CachedDropTargetEffect(This,retVal)
#define IUIAutomationDropTargetPattern_get_CurrentDropTargetEffects(This,retVal) (This)->lpVtbl->get_CurrentDropTargetEffects(This,retVal)
#define IUIAutomationDropTargetPattern_get_CachedDropTargetEffects(This,retVal) (This)->lpVtbl->get_CachedDropTargetEffects(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationDropTargetPattern_QueryInterface(IUIAutomationDropTargetPattern* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationDropTargetPattern_AddRef(IUIAutomationDropTargetPattern* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationDropTargetPattern_Release(IUIAutomationDropTargetPattern* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationDropTargetPattern methods ***/
static inline HRESULT IUIAutomationDropTargetPattern_get_CurrentDropTargetEffect(IUIAutomationDropTargetPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentDropTargetEffect(This,retVal);
}
static inline HRESULT IUIAutomationDropTargetPattern_get_CachedDropTargetEffect(IUIAutomationDropTargetPattern* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedDropTargetEffect(This,retVal);
}
static inline HRESULT IUIAutomationDropTargetPattern_get_CurrentDropTargetEffects(IUIAutomationDropTargetPattern* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CurrentDropTargetEffects(This,retVal);
}
static inline HRESULT IUIAutomationDropTargetPattern_get_CachedDropTargetEffects(IUIAutomationDropTargetPattern* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CachedDropTargetEffects(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationDropTargetPattern_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement interface
 */
#ifndef __IUIAutomationElement_INTERFACE_DEFINED__
#define __IUIAutomationElement_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement, 0xd22108aa, 0x8ac5, 0x49a5, 0x83,0x7b, 0x37,0xbb,0xb3,0xd7,0x59,0x1e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d22108aa-8ac5-49a5-837b-37bbb3d7591e")
IUIAutomationElement : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFocus(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRuntimeId(
        SAFEARRAY **runtimeId) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindFirst(
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindAll(
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindFirstBuildCache(
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindAllBuildCache(
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE BuildUpdatedCache(
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentPropertyValue(
        PROPERTYID propertyId,
        VARIANT *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentPropertyValueEx(
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedPropertyValue(
        PROPERTYID propertyId,
        VARIANT *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedPropertyValueEx(
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentPatternAs(
        PATTERNID patternId,
        REFIID riid,
        void **patternObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedPatternAs(
        PATTERNID patternId,
        REFIID riid,
        void **patternObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentPattern(
        PATTERNID patternId,
        IUnknown **patternObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedPattern(
        PATTERNID patternId,
        IUnknown **patternObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedParent(
        IUIAutomationElement **parent) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCachedChildren(
        IUIAutomationElementArray **children) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentProcessId(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentControlType(
        CONTROLTYPEID *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentLocalizedControlType(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAcceleratorKey(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAccessKey(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentHasKeyboardFocus(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsKeyboardFocusable(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsEnabled(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAutomationId(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentClassName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentHelpText(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCulture(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsControlElement(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsContentElement(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsPassword(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentNativeWindowHandle(
        UIA_HWND *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentItemType(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsOffscreen(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentOrientation(
        enum OrientationType *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentFrameworkId(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsRequiredForForm(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentItemStatus(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentBoundingRectangle(
        RECT *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentLabeledBy(
        IUIAutomationElement **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAriaRole(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAriaProperties(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsDataValidForForm(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentControllerFor(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentDescribedBy(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentFlowsTo(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentProviderDescription(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedProcessId(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedControlType(
        CONTROLTYPEID *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedLocalizedControlType(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAcceleratorKey(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAccessKey(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedHasKeyboardFocus(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsKeyboardFocusable(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsEnabled(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAutomationId(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedClassName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedHelpText(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedCulture(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsControlElement(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsContentElement(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsPassword(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedNativeWindowHandle(
        UIA_HWND *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedItemType(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsOffscreen(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedOrientation(
        enum OrientationType *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedFrameworkId(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsRequiredForForm(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedItemStatus(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedBoundingRectangle(
        RECT *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedLabeledBy(
        IUIAutomationElement **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAriaRole(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAriaProperties(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsDataValidForForm(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedControllerFor(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedDescribedBy(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedFlowsTo(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedProviderDescription(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetClickablePoint(
        POINT *clickable,
        WINBOOL *gotClickable) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement, 0xd22108aa, 0x8ac5, 0x49a5, 0x83,0x7b, 0x37,0xbb,0xb3,0xd7,0x59,0x1e)
#endif
#else
typedef struct IUIAutomationElementVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    END_INTERFACE
} IUIAutomationElementVtbl;

interface IUIAutomationElement {
    CONST_VTBL IUIAutomationElementVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement_QueryInterface(IUIAutomationElement* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement_AddRef(IUIAutomationElement* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement_Release(IUIAutomationElement* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement_SetFocus(IUIAutomationElement* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement_GetRuntimeId(IUIAutomationElement* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement_FindFirst(IUIAutomationElement* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement_FindAll(IUIAutomationElement* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement_FindFirstBuildCache(IUIAutomationElement* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement_FindAllBuildCache(IUIAutomationElement* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement_BuildUpdatedCache(IUIAutomationElement* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement_GetCurrentPropertyValue(IUIAutomationElement* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement_GetCurrentPropertyValueEx(IUIAutomationElement* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement_GetCachedPropertyValue(IUIAutomationElement* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement_GetCachedPropertyValueEx(IUIAutomationElement* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement_GetCurrentPatternAs(IUIAutomationElement* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement_GetCachedPatternAs(IUIAutomationElement* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement_GetCurrentPattern(IUIAutomationElement* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement_GetCachedPattern(IUIAutomationElement* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement_GetCachedParent(IUIAutomationElement* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement_GetCachedChildren(IUIAutomationElement* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement_get_CurrentProcessId(IUIAutomationElement* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentControlType(IUIAutomationElement* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentLocalizedControlType(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentName(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentAcceleratorKey(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentAccessKey(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentHasKeyboardFocus(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentIsKeyboardFocusable(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentIsEnabled(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentAutomationId(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentClassName(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentHelpText(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentCulture(IUIAutomationElement* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentIsControlElement(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentIsContentElement(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentIsPassword(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentNativeWindowHandle(IUIAutomationElement* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentItemType(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentIsOffscreen(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentOrientation(IUIAutomationElement* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentFrameworkId(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentIsRequiredForForm(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentItemStatus(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentBoundingRectangle(IUIAutomationElement* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentLabeledBy(IUIAutomationElement* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentAriaRole(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentAriaProperties(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentIsDataValidForForm(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentControllerFor(IUIAutomationElement* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentDescribedBy(IUIAutomationElement* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentFlowsTo(IUIAutomationElement* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CurrentProviderDescription(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedProcessId(IUIAutomationElement* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedControlType(IUIAutomationElement* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedLocalizedControlType(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedName(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedAcceleratorKey(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedAccessKey(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedHasKeyboardFocus(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedIsKeyboardFocusable(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedIsEnabled(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedAutomationId(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedClassName(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedHelpText(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedCulture(IUIAutomationElement* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedIsControlElement(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedIsContentElement(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedIsPassword(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedNativeWindowHandle(IUIAutomationElement* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedItemType(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedIsOffscreen(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedOrientation(IUIAutomationElement* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedFrameworkId(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedIsRequiredForForm(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedItemStatus(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedBoundingRectangle(IUIAutomationElement* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedLabeledBy(IUIAutomationElement* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedAriaRole(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedAriaProperties(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedIsDataValidForForm(IUIAutomationElement* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedControllerFor(IUIAutomationElement* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedDescribedBy(IUIAutomationElement* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedFlowsTo(IUIAutomationElement* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement_get_CachedProviderDescription(IUIAutomationElement* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement_GetClickablePoint(IUIAutomationElement* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement2 interface
 */
#ifndef __IUIAutomationElement2_INTERFACE_DEFINED__
#define __IUIAutomationElement2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement2, 0x6749c683, 0xf70d, 0x4487, 0xa6,0x98, 0x5f,0x79,0xd5,0x52,0x90,0xd6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6749c683-f70d-4487-a698-5f79d55290d6")
IUIAutomationElement2 : public IUIAutomationElement
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentOptimizeForVisualContent(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedOptimizeForVisualContent(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentLiveSetting(
        enum LiveSetting *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedLiveSetting(
        enum LiveSetting *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentFlowsFrom(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedFlowsFrom(
        IUIAutomationElementArray **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement2, 0x6749c683, 0xf70d, 0x4487, 0xa6,0x98, 0x5f,0x79,0xd5,0x52,0x90,0xd6)
#endif
#else
typedef struct IUIAutomationElement2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement2 *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement2 *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement2 *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement2 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement2 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement2 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement2 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement2 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement2 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement2 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement2 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement2 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement2 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement2 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement2 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement2 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement2 *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement2 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement2 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement2 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement2 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement2 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement2 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement2 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement2 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement2 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement2 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement2 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement2 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement2 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement2 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement2 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement2 *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    /*** IUIAutomationElement2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentOptimizeForVisualContent)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOptimizeForVisualContent)(
        IUIAutomationElement2 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLiveSetting)(
        IUIAutomationElement2 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLiveSetting)(
        IUIAutomationElement2 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsFrom)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsFrom)(
        IUIAutomationElement2 *This,
        IUIAutomationElementArray **retVal);

    END_INTERFACE
} IUIAutomationElement2Vtbl;

interface IUIAutomationElement2 {
    CONST_VTBL IUIAutomationElement2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement2_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement2_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement2_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement2_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement2_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement2_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement2_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement2_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement2_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement2_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement2_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement2_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement2_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement2_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement2_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement2_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement2_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement2_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement2_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement2_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement2_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement2_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement2_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement2_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement2_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement2_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement2_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement2_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement2_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement2_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement2_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement2_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement2_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement2_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement2_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement2_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement2_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement2_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement2_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement2_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement2_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement2_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement2_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement2_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement2_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement2_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement2_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement2_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement2_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement2_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement2_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement2_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement2_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement2_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement2_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement2_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement2_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement2_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement2_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement2_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement2_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement2_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement2_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement2_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement2_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement2_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement2_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement2_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement2_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement2_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement2_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement2_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement2_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement2_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement2_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement2_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement2_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement2_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement2_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement2_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement2_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement2_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement2_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
/*** IUIAutomationElement2 methods ***/
#define IUIAutomationElement2_get_CurrentOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement2_get_CachedOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement2_get_CurrentLiveSetting(This,retVal) (This)->lpVtbl->get_CurrentLiveSetting(This,retVal)
#define IUIAutomationElement2_get_CachedLiveSetting(This,retVal) (This)->lpVtbl->get_CachedLiveSetting(This,retVal)
#define IUIAutomationElement2_get_CurrentFlowsFrom(This,retVal) (This)->lpVtbl->get_CurrentFlowsFrom(This,retVal)
#define IUIAutomationElement2_get_CachedFlowsFrom(This,retVal) (This)->lpVtbl->get_CachedFlowsFrom(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement2_QueryInterface(IUIAutomationElement2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement2_AddRef(IUIAutomationElement2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement2_Release(IUIAutomationElement2* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement2_SetFocus(IUIAutomationElement2* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement2_GetRuntimeId(IUIAutomationElement2* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement2_FindFirst(IUIAutomationElement2* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement2_FindAll(IUIAutomationElement2* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement2_FindFirstBuildCache(IUIAutomationElement2* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement2_FindAllBuildCache(IUIAutomationElement2* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement2_BuildUpdatedCache(IUIAutomationElement2* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement2_GetCurrentPropertyValue(IUIAutomationElement2* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement2_GetCurrentPropertyValueEx(IUIAutomationElement2* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement2_GetCachedPropertyValue(IUIAutomationElement2* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement2_GetCachedPropertyValueEx(IUIAutomationElement2* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement2_GetCurrentPatternAs(IUIAutomationElement2* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement2_GetCachedPatternAs(IUIAutomationElement2* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement2_GetCurrentPattern(IUIAutomationElement2* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement2_GetCachedPattern(IUIAutomationElement2* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement2_GetCachedParent(IUIAutomationElement2* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement2_GetCachedChildren(IUIAutomationElement2* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement2_get_CurrentProcessId(IUIAutomationElement2* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentControlType(IUIAutomationElement2* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentLocalizedControlType(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentName(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentAcceleratorKey(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentAccessKey(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentHasKeyboardFocus(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentIsKeyboardFocusable(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentIsEnabled(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentAutomationId(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentClassName(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentHelpText(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentCulture(IUIAutomationElement2* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentIsControlElement(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentIsContentElement(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentIsPassword(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentNativeWindowHandle(IUIAutomationElement2* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentItemType(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentIsOffscreen(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentOrientation(IUIAutomationElement2* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentFrameworkId(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentIsRequiredForForm(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentItemStatus(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentBoundingRectangle(IUIAutomationElement2* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentLabeledBy(IUIAutomationElement2* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentAriaRole(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentAriaProperties(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentIsDataValidForForm(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentControllerFor(IUIAutomationElement2* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentDescribedBy(IUIAutomationElement2* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentFlowsTo(IUIAutomationElement2* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentProviderDescription(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedProcessId(IUIAutomationElement2* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedControlType(IUIAutomationElement2* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedLocalizedControlType(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedName(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedAcceleratorKey(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedAccessKey(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedHasKeyboardFocus(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedIsKeyboardFocusable(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedIsEnabled(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedAutomationId(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedClassName(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedHelpText(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedCulture(IUIAutomationElement2* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedIsControlElement(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedIsContentElement(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedIsPassword(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedNativeWindowHandle(IUIAutomationElement2* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedItemType(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedIsOffscreen(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedOrientation(IUIAutomationElement2* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedFrameworkId(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedIsRequiredForForm(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedItemStatus(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedBoundingRectangle(IUIAutomationElement2* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedLabeledBy(IUIAutomationElement2* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedAriaRole(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedAriaProperties(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedIsDataValidForForm(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedControllerFor(IUIAutomationElement2* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedDescribedBy(IUIAutomationElement2* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedFlowsTo(IUIAutomationElement2* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedProviderDescription(IUIAutomationElement2* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement2_GetClickablePoint(IUIAutomationElement2* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
/*** IUIAutomationElement2 methods ***/
static inline HRESULT IUIAutomationElement2_get_CurrentOptimizeForVisualContent(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedOptimizeForVisualContent(IUIAutomationElement2* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentLiveSetting(IUIAutomationElement2* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CurrentLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedLiveSetting(IUIAutomationElement2* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CachedLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CurrentFlowsFrom(IUIAutomationElement2* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsFrom(This,retVal);
}
static inline HRESULT IUIAutomationElement2_get_CachedFlowsFrom(IUIAutomationElement2* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsFrom(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement3 interface
 */
#ifndef __IUIAutomationElement3_INTERFACE_DEFINED__
#define __IUIAutomationElement3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement3, 0x8471df34, 0xaee0, 0x4a01, 0xa7,0xde, 0x7d,0xb9,0xaf,0x12,0xc2,0x96);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8471df34-aee0-4a01-a7de-7db9af12c296")
IUIAutomationElement3 : public IUIAutomationElement2
{
    virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsPeripheral(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsPeripheral(
        WINBOOL *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement3, 0x8471df34, 0xaee0, 0x4a01, 0xa7,0xde, 0x7d,0xb9,0xaf,0x12,0xc2,0x96)
#endif
#else
typedef struct IUIAutomationElement3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement3 *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement3 *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement3 *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement3 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement3 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement3 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement3 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement3 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement3 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement3 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement3 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement3 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement3 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement3 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement3 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement3 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement3 *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement3 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement3 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement3 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement3 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement3 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement3 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement3 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement3 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement3 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement3 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement3 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement3 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement3 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement3 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement3 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement3 *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    /*** IUIAutomationElement2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentOptimizeForVisualContent)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOptimizeForVisualContent)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLiveSetting)(
        IUIAutomationElement3 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLiveSetting)(
        IUIAutomationElement3 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsFrom)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsFrom)(
        IUIAutomationElement3 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement3 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IUIAutomationElement3 *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPeripheral)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPeripheral)(
        IUIAutomationElement3 *This,
        WINBOOL *retVal);

    END_INTERFACE
} IUIAutomationElement3Vtbl;

interface IUIAutomationElement3 {
    CONST_VTBL IUIAutomationElement3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement3_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement3_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement3_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement3_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement3_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement3_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement3_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement3_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement3_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement3_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement3_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement3_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement3_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement3_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement3_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement3_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement3_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement3_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement3_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement3_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement3_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement3_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement3_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement3_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement3_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement3_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement3_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement3_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement3_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement3_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement3_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement3_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement3_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement3_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement3_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement3_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement3_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement3_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement3_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement3_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement3_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement3_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement3_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement3_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement3_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement3_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement3_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement3_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement3_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement3_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement3_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement3_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement3_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement3_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement3_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement3_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement3_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement3_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement3_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement3_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement3_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement3_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement3_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement3_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement3_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement3_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement3_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement3_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement3_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement3_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement3_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement3_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement3_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement3_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement3_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement3_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement3_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement3_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement3_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement3_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement3_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement3_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement3_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
/*** IUIAutomationElement2 methods ***/
#define IUIAutomationElement3_get_CurrentOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement3_get_CachedOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement3_get_CurrentLiveSetting(This,retVal) (This)->lpVtbl->get_CurrentLiveSetting(This,retVal)
#define IUIAutomationElement3_get_CachedLiveSetting(This,retVal) (This)->lpVtbl->get_CachedLiveSetting(This,retVal)
#define IUIAutomationElement3_get_CurrentFlowsFrom(This,retVal) (This)->lpVtbl->get_CurrentFlowsFrom(This,retVal)
#define IUIAutomationElement3_get_CachedFlowsFrom(This,retVal) (This)->lpVtbl->get_CachedFlowsFrom(This,retVal)
/*** IUIAutomationElement3 methods ***/
#define IUIAutomationElement3_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#define IUIAutomationElement3_get_CurrentIsPeripheral(This,retVal) (This)->lpVtbl->get_CurrentIsPeripheral(This,retVal)
#define IUIAutomationElement3_get_CachedIsPeripheral(This,retVal) (This)->lpVtbl->get_CachedIsPeripheral(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement3_QueryInterface(IUIAutomationElement3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement3_AddRef(IUIAutomationElement3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement3_Release(IUIAutomationElement3* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement3_SetFocus(IUIAutomationElement3* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement3_GetRuntimeId(IUIAutomationElement3* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement3_FindFirst(IUIAutomationElement3* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement3_FindAll(IUIAutomationElement3* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement3_FindFirstBuildCache(IUIAutomationElement3* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement3_FindAllBuildCache(IUIAutomationElement3* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement3_BuildUpdatedCache(IUIAutomationElement3* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement3_GetCurrentPropertyValue(IUIAutomationElement3* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement3_GetCurrentPropertyValueEx(IUIAutomationElement3* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement3_GetCachedPropertyValue(IUIAutomationElement3* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement3_GetCachedPropertyValueEx(IUIAutomationElement3* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement3_GetCurrentPatternAs(IUIAutomationElement3* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement3_GetCachedPatternAs(IUIAutomationElement3* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement3_GetCurrentPattern(IUIAutomationElement3* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement3_GetCachedPattern(IUIAutomationElement3* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement3_GetCachedParent(IUIAutomationElement3* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement3_GetCachedChildren(IUIAutomationElement3* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement3_get_CurrentProcessId(IUIAutomationElement3* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentControlType(IUIAutomationElement3* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentLocalizedControlType(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentName(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentAcceleratorKey(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentAccessKey(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentHasKeyboardFocus(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsKeyboardFocusable(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsEnabled(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentAutomationId(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentClassName(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentHelpText(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentCulture(IUIAutomationElement3* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsControlElement(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsContentElement(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsPassword(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentNativeWindowHandle(IUIAutomationElement3* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentItemType(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsOffscreen(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentOrientation(IUIAutomationElement3* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentFrameworkId(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsRequiredForForm(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentItemStatus(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentBoundingRectangle(IUIAutomationElement3* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentLabeledBy(IUIAutomationElement3* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentAriaRole(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentAriaProperties(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsDataValidForForm(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentControllerFor(IUIAutomationElement3* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentDescribedBy(IUIAutomationElement3* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentFlowsTo(IUIAutomationElement3* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentProviderDescription(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedProcessId(IUIAutomationElement3* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedControlType(IUIAutomationElement3* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedLocalizedControlType(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedName(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedAcceleratorKey(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedAccessKey(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedHasKeyboardFocus(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsKeyboardFocusable(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsEnabled(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedAutomationId(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedClassName(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedHelpText(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedCulture(IUIAutomationElement3* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsControlElement(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsContentElement(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsPassword(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedNativeWindowHandle(IUIAutomationElement3* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedItemType(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsOffscreen(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedOrientation(IUIAutomationElement3* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedFrameworkId(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsRequiredForForm(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedItemStatus(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedBoundingRectangle(IUIAutomationElement3* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedLabeledBy(IUIAutomationElement3* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedAriaRole(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedAriaProperties(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsDataValidForForm(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedControllerFor(IUIAutomationElement3* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedDescribedBy(IUIAutomationElement3* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedFlowsTo(IUIAutomationElement3* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedProviderDescription(IUIAutomationElement3* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement3_GetClickablePoint(IUIAutomationElement3* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
/*** IUIAutomationElement2 methods ***/
static inline HRESULT IUIAutomationElement3_get_CurrentOptimizeForVisualContent(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedOptimizeForVisualContent(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentLiveSetting(IUIAutomationElement3* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CurrentLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedLiveSetting(IUIAutomationElement3* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CachedLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CurrentFlowsFrom(IUIAutomationElement3* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsFrom(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedFlowsFrom(IUIAutomationElement3* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsFrom(This,retVal);
}
/*** IUIAutomationElement3 methods ***/
static inline HRESULT IUIAutomationElement3_ShowContextMenu(IUIAutomationElement3* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
static inline HRESULT IUIAutomationElement3_get_CurrentIsPeripheral(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPeripheral(This,retVal);
}
static inline HRESULT IUIAutomationElement3_get_CachedIsPeripheral(IUIAutomationElement3* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPeripheral(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement4 interface
 */
#ifndef __IUIAutomationElement4_INTERFACE_DEFINED__
#define __IUIAutomationElement4_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement4, 0x3b6e233c, 0x52fb, 0x4063, 0xa4,0xc9, 0x77,0xc0,0x75,0xc2,0xa0,0x6b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3b6e233c-52fb-4063-a4c9-77c075c2a06b")
IUIAutomationElement4 : public IUIAutomationElement3
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentPositionInSet(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentSizeOfSet(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentLevel(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAnnotationTypes(
        SAFEARRAY **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentAnnotationObjects(
        IUIAutomationElementArray **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedPositionInSet(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedSizeOfSet(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedLevel(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAnnotationTypes(
        SAFEARRAY **retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedAnnotationObjects(
        IUIAutomationElementArray **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement4, 0x3b6e233c, 0x52fb, 0x4063, 0xa4,0xc9, 0x77,0xc0,0x75,0xc2,0xa0,0x6b)
#endif
#else
typedef struct IUIAutomationElement4Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement4 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement4 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement4 *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement4 *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement4 *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement4 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement4 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement4 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement4 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement4 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement4 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement4 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement4 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement4 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement4 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement4 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement4 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement4 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement4 *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement4 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement4 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement4 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement4 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement4 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement4 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement4 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement4 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement4 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement4 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement4 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement4 *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    /*** IUIAutomationElement2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentOptimizeForVisualContent)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOptimizeForVisualContent)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLiveSetting)(
        IUIAutomationElement4 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLiveSetting)(
        IUIAutomationElement4 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsFrom)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsFrom)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement3 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IUIAutomationElement4 *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPeripheral)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPeripheral)(
        IUIAutomationElement4 *This,
        WINBOOL *retVal);

    /*** IUIAutomationElement4 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentPositionInSet)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSizeOfSet)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLevel)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationTypes)(
        IUIAutomationElement4 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationObjects)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedPositionInSet)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedSizeOfSet)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLevel)(
        IUIAutomationElement4 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationTypes)(
        IUIAutomationElement4 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationObjects)(
        IUIAutomationElement4 *This,
        IUIAutomationElementArray **retVal);

    END_INTERFACE
} IUIAutomationElement4Vtbl;

interface IUIAutomationElement4 {
    CONST_VTBL IUIAutomationElement4Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement4_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement4_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement4_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement4_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement4_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement4_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement4_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement4_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement4_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement4_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement4_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement4_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement4_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement4_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement4_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement4_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement4_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement4_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement4_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement4_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement4_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement4_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement4_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement4_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement4_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement4_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement4_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement4_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement4_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement4_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement4_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement4_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement4_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement4_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement4_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement4_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement4_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement4_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement4_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement4_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement4_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement4_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement4_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement4_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement4_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement4_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement4_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement4_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement4_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement4_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement4_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement4_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement4_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement4_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement4_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement4_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement4_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement4_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement4_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement4_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement4_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement4_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement4_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement4_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement4_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement4_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement4_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement4_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement4_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement4_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement4_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement4_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement4_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement4_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement4_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement4_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement4_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement4_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement4_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement4_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement4_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement4_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement4_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement4_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
/*** IUIAutomationElement2 methods ***/
#define IUIAutomationElement4_get_CurrentOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement4_get_CachedOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement4_get_CurrentLiveSetting(This,retVal) (This)->lpVtbl->get_CurrentLiveSetting(This,retVal)
#define IUIAutomationElement4_get_CachedLiveSetting(This,retVal) (This)->lpVtbl->get_CachedLiveSetting(This,retVal)
#define IUIAutomationElement4_get_CurrentFlowsFrom(This,retVal) (This)->lpVtbl->get_CurrentFlowsFrom(This,retVal)
#define IUIAutomationElement4_get_CachedFlowsFrom(This,retVal) (This)->lpVtbl->get_CachedFlowsFrom(This,retVal)
/*** IUIAutomationElement3 methods ***/
#define IUIAutomationElement4_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#define IUIAutomationElement4_get_CurrentIsPeripheral(This,retVal) (This)->lpVtbl->get_CurrentIsPeripheral(This,retVal)
#define IUIAutomationElement4_get_CachedIsPeripheral(This,retVal) (This)->lpVtbl->get_CachedIsPeripheral(This,retVal)
/*** IUIAutomationElement4 methods ***/
#define IUIAutomationElement4_get_CurrentPositionInSet(This,retVal) (This)->lpVtbl->get_CurrentPositionInSet(This,retVal)
#define IUIAutomationElement4_get_CurrentSizeOfSet(This,retVal) (This)->lpVtbl->get_CurrentSizeOfSet(This,retVal)
#define IUIAutomationElement4_get_CurrentLevel(This,retVal) (This)->lpVtbl->get_CurrentLevel(This,retVal)
#define IUIAutomationElement4_get_CurrentAnnotationTypes(This,retVal) (This)->lpVtbl->get_CurrentAnnotationTypes(This,retVal)
#define IUIAutomationElement4_get_CurrentAnnotationObjects(This,retVal) (This)->lpVtbl->get_CurrentAnnotationObjects(This,retVal)
#define IUIAutomationElement4_get_CachedPositionInSet(This,retVal) (This)->lpVtbl->get_CachedPositionInSet(This,retVal)
#define IUIAutomationElement4_get_CachedSizeOfSet(This,retVal) (This)->lpVtbl->get_CachedSizeOfSet(This,retVal)
#define IUIAutomationElement4_get_CachedLevel(This,retVal) (This)->lpVtbl->get_CachedLevel(This,retVal)
#define IUIAutomationElement4_get_CachedAnnotationTypes(This,retVal) (This)->lpVtbl->get_CachedAnnotationTypes(This,retVal)
#define IUIAutomationElement4_get_CachedAnnotationObjects(This,retVal) (This)->lpVtbl->get_CachedAnnotationObjects(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement4_QueryInterface(IUIAutomationElement4* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement4_AddRef(IUIAutomationElement4* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement4_Release(IUIAutomationElement4* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement4_SetFocus(IUIAutomationElement4* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement4_GetRuntimeId(IUIAutomationElement4* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement4_FindFirst(IUIAutomationElement4* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement4_FindAll(IUIAutomationElement4* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement4_FindFirstBuildCache(IUIAutomationElement4* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement4_FindAllBuildCache(IUIAutomationElement4* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement4_BuildUpdatedCache(IUIAutomationElement4* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement4_GetCurrentPropertyValue(IUIAutomationElement4* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement4_GetCurrentPropertyValueEx(IUIAutomationElement4* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement4_GetCachedPropertyValue(IUIAutomationElement4* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement4_GetCachedPropertyValueEx(IUIAutomationElement4* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement4_GetCurrentPatternAs(IUIAutomationElement4* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement4_GetCachedPatternAs(IUIAutomationElement4* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement4_GetCurrentPattern(IUIAutomationElement4* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement4_GetCachedPattern(IUIAutomationElement4* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement4_GetCachedParent(IUIAutomationElement4* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement4_GetCachedChildren(IUIAutomationElement4* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement4_get_CurrentProcessId(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentControlType(IUIAutomationElement4* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentLocalizedControlType(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentName(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentAcceleratorKey(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentAccessKey(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentHasKeyboardFocus(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsKeyboardFocusable(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsEnabled(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentAutomationId(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentClassName(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentHelpText(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentCulture(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsControlElement(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsContentElement(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsPassword(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentNativeWindowHandle(IUIAutomationElement4* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentItemType(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsOffscreen(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentOrientation(IUIAutomationElement4* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentFrameworkId(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsRequiredForForm(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentItemStatus(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentBoundingRectangle(IUIAutomationElement4* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentLabeledBy(IUIAutomationElement4* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentAriaRole(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentAriaProperties(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsDataValidForForm(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentControllerFor(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentDescribedBy(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentFlowsTo(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentProviderDescription(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedProcessId(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedControlType(IUIAutomationElement4* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedLocalizedControlType(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedName(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedAcceleratorKey(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedAccessKey(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedHasKeyboardFocus(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsKeyboardFocusable(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsEnabled(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedAutomationId(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedClassName(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedHelpText(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedCulture(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsControlElement(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsContentElement(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsPassword(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedNativeWindowHandle(IUIAutomationElement4* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedItemType(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsOffscreen(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedOrientation(IUIAutomationElement4* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedFrameworkId(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsRequiredForForm(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedItemStatus(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedBoundingRectangle(IUIAutomationElement4* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedLabeledBy(IUIAutomationElement4* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedAriaRole(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedAriaProperties(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsDataValidForForm(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedControllerFor(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedDescribedBy(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedFlowsTo(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedProviderDescription(IUIAutomationElement4* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement4_GetClickablePoint(IUIAutomationElement4* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
/*** IUIAutomationElement2 methods ***/
static inline HRESULT IUIAutomationElement4_get_CurrentOptimizeForVisualContent(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedOptimizeForVisualContent(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentLiveSetting(IUIAutomationElement4* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CurrentLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedLiveSetting(IUIAutomationElement4* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CachedLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentFlowsFrom(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsFrom(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedFlowsFrom(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsFrom(This,retVal);
}
/*** IUIAutomationElement3 methods ***/
static inline HRESULT IUIAutomationElement4_ShowContextMenu(IUIAutomationElement4* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
static inline HRESULT IUIAutomationElement4_get_CurrentIsPeripheral(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPeripheral(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedIsPeripheral(IUIAutomationElement4* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPeripheral(This,retVal);
}
/*** IUIAutomationElement4 methods ***/
static inline HRESULT IUIAutomationElement4_get_CurrentPositionInSet(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CurrentPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentSizeOfSet(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CurrentSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentLevel(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CurrentLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentAnnotationTypes(IUIAutomationElement4* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CurrentAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CurrentAnnotationObjects(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentAnnotationObjects(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedPositionInSet(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CachedPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedSizeOfSet(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CachedSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedLevel(IUIAutomationElement4* This,int *retVal) {
    return This->lpVtbl->get_CachedLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedAnnotationTypes(IUIAutomationElement4* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CachedAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement4_get_CachedAnnotationObjects(IUIAutomationElement4* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedAnnotationObjects(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement4_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement5 interface
 */
#ifndef __IUIAutomationElement5_INTERFACE_DEFINED__
#define __IUIAutomationElement5_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement5, 0x98141c1d, 0x0d0e, 0x4175, 0xbb,0xe2, 0x6b,0xff,0x45,0x58,0x42,0xa7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("98141c1d-0d0e-4175-bbe2-6bff455842a7")
IUIAutomationElement5 : public IUIAutomationElement4
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentLandmarkType(
        LANDMARKTYPEID *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentLocalizedLandmarkType(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedLandmarkType(
        LANDMARKTYPEID *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedLocalizedLandmarkType(
        BSTR *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement5, 0x98141c1d, 0x0d0e, 0x4175, 0xbb,0xe2, 0x6b,0xff,0x45,0x58,0x42,0xa7)
#endif
#else
typedef struct IUIAutomationElement5Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement5 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement5 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement5 *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement5 *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement5 *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement5 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement5 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement5 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement5 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement5 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement5 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement5 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement5 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement5 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement5 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement5 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement5 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement5 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement5 *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement5 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement5 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement5 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement5 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement5 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement5 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement5 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement5 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement5 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement5 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement5 *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    /*** IUIAutomationElement2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentOptimizeForVisualContent)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOptimizeForVisualContent)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLiveSetting)(
        IUIAutomationElement5 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLiveSetting)(
        IUIAutomationElement5 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsFrom)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsFrom)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement3 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IUIAutomationElement5 *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPeripheral)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPeripheral)(
        IUIAutomationElement5 *This,
        WINBOOL *retVal);

    /*** IUIAutomationElement4 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentPositionInSet)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSizeOfSet)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLevel)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationTypes)(
        IUIAutomationElement5 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationObjects)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedPositionInSet)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedSizeOfSet)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLevel)(
        IUIAutomationElement5 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationTypes)(
        IUIAutomationElement5 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationObjects)(
        IUIAutomationElement5 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement5 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentLandmarkType)(
        IUIAutomationElement5 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedLandmarkType)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLandmarkType)(
        IUIAutomationElement5 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedLandmarkType)(
        IUIAutomationElement5 *This,
        BSTR *retVal);

    END_INTERFACE
} IUIAutomationElement5Vtbl;

interface IUIAutomationElement5 {
    CONST_VTBL IUIAutomationElement5Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement5_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement5_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement5_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement5_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement5_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement5_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement5_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement5_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement5_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement5_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement5_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement5_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement5_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement5_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement5_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement5_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement5_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement5_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement5_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement5_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement5_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement5_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement5_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement5_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement5_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement5_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement5_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement5_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement5_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement5_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement5_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement5_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement5_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement5_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement5_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement5_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement5_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement5_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement5_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement5_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement5_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement5_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement5_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement5_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement5_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement5_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement5_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement5_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement5_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement5_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement5_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement5_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement5_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement5_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement5_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement5_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement5_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement5_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement5_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement5_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement5_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement5_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement5_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement5_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement5_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement5_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement5_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement5_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement5_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement5_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement5_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement5_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement5_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement5_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement5_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement5_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement5_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement5_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement5_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement5_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement5_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement5_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement5_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement5_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
/*** IUIAutomationElement2 methods ***/
#define IUIAutomationElement5_get_CurrentOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement5_get_CachedOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement5_get_CurrentLiveSetting(This,retVal) (This)->lpVtbl->get_CurrentLiveSetting(This,retVal)
#define IUIAutomationElement5_get_CachedLiveSetting(This,retVal) (This)->lpVtbl->get_CachedLiveSetting(This,retVal)
#define IUIAutomationElement5_get_CurrentFlowsFrom(This,retVal) (This)->lpVtbl->get_CurrentFlowsFrom(This,retVal)
#define IUIAutomationElement5_get_CachedFlowsFrom(This,retVal) (This)->lpVtbl->get_CachedFlowsFrom(This,retVal)
/*** IUIAutomationElement3 methods ***/
#define IUIAutomationElement5_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#define IUIAutomationElement5_get_CurrentIsPeripheral(This,retVal) (This)->lpVtbl->get_CurrentIsPeripheral(This,retVal)
#define IUIAutomationElement5_get_CachedIsPeripheral(This,retVal) (This)->lpVtbl->get_CachedIsPeripheral(This,retVal)
/*** IUIAutomationElement4 methods ***/
#define IUIAutomationElement5_get_CurrentPositionInSet(This,retVal) (This)->lpVtbl->get_CurrentPositionInSet(This,retVal)
#define IUIAutomationElement5_get_CurrentSizeOfSet(This,retVal) (This)->lpVtbl->get_CurrentSizeOfSet(This,retVal)
#define IUIAutomationElement5_get_CurrentLevel(This,retVal) (This)->lpVtbl->get_CurrentLevel(This,retVal)
#define IUIAutomationElement5_get_CurrentAnnotationTypes(This,retVal) (This)->lpVtbl->get_CurrentAnnotationTypes(This,retVal)
#define IUIAutomationElement5_get_CurrentAnnotationObjects(This,retVal) (This)->lpVtbl->get_CurrentAnnotationObjects(This,retVal)
#define IUIAutomationElement5_get_CachedPositionInSet(This,retVal) (This)->lpVtbl->get_CachedPositionInSet(This,retVal)
#define IUIAutomationElement5_get_CachedSizeOfSet(This,retVal) (This)->lpVtbl->get_CachedSizeOfSet(This,retVal)
#define IUIAutomationElement5_get_CachedLevel(This,retVal) (This)->lpVtbl->get_CachedLevel(This,retVal)
#define IUIAutomationElement5_get_CachedAnnotationTypes(This,retVal) (This)->lpVtbl->get_CachedAnnotationTypes(This,retVal)
#define IUIAutomationElement5_get_CachedAnnotationObjects(This,retVal) (This)->lpVtbl->get_CachedAnnotationObjects(This,retVal)
/*** IUIAutomationElement5 methods ***/
#define IUIAutomationElement5_get_CurrentLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLandmarkType(This,retVal)
#define IUIAutomationElement5_get_CurrentLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal)
#define IUIAutomationElement5_get_CachedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLandmarkType(This,retVal)
#define IUIAutomationElement5_get_CachedLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement5_QueryInterface(IUIAutomationElement5* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement5_AddRef(IUIAutomationElement5* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement5_Release(IUIAutomationElement5* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement5_SetFocus(IUIAutomationElement5* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement5_GetRuntimeId(IUIAutomationElement5* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement5_FindFirst(IUIAutomationElement5* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement5_FindAll(IUIAutomationElement5* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement5_FindFirstBuildCache(IUIAutomationElement5* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement5_FindAllBuildCache(IUIAutomationElement5* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement5_BuildUpdatedCache(IUIAutomationElement5* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement5_GetCurrentPropertyValue(IUIAutomationElement5* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement5_GetCurrentPropertyValueEx(IUIAutomationElement5* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement5_GetCachedPropertyValue(IUIAutomationElement5* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement5_GetCachedPropertyValueEx(IUIAutomationElement5* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement5_GetCurrentPatternAs(IUIAutomationElement5* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement5_GetCachedPatternAs(IUIAutomationElement5* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement5_GetCurrentPattern(IUIAutomationElement5* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement5_GetCachedPattern(IUIAutomationElement5* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement5_GetCachedParent(IUIAutomationElement5* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement5_GetCachedChildren(IUIAutomationElement5* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement5_get_CurrentProcessId(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentControlType(IUIAutomationElement5* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentLocalizedControlType(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentName(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentAcceleratorKey(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentAccessKey(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentHasKeyboardFocus(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsKeyboardFocusable(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsEnabled(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentAutomationId(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentClassName(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentHelpText(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentCulture(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsControlElement(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsContentElement(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsPassword(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentNativeWindowHandle(IUIAutomationElement5* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentItemType(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsOffscreen(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentOrientation(IUIAutomationElement5* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentFrameworkId(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsRequiredForForm(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentItemStatus(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentBoundingRectangle(IUIAutomationElement5* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentLabeledBy(IUIAutomationElement5* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentAriaRole(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentAriaProperties(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsDataValidForForm(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentControllerFor(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentDescribedBy(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentFlowsTo(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentProviderDescription(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedProcessId(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedControlType(IUIAutomationElement5* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedLocalizedControlType(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedName(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedAcceleratorKey(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedAccessKey(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedHasKeyboardFocus(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsKeyboardFocusable(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsEnabled(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedAutomationId(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedClassName(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedHelpText(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedCulture(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsControlElement(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsContentElement(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsPassword(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedNativeWindowHandle(IUIAutomationElement5* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedItemType(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsOffscreen(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedOrientation(IUIAutomationElement5* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedFrameworkId(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsRequiredForForm(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedItemStatus(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedBoundingRectangle(IUIAutomationElement5* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedLabeledBy(IUIAutomationElement5* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedAriaRole(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedAriaProperties(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsDataValidForForm(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedControllerFor(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedDescribedBy(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedFlowsTo(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedProviderDescription(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement5_GetClickablePoint(IUIAutomationElement5* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
/*** IUIAutomationElement2 methods ***/
static inline HRESULT IUIAutomationElement5_get_CurrentOptimizeForVisualContent(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedOptimizeForVisualContent(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentLiveSetting(IUIAutomationElement5* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CurrentLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedLiveSetting(IUIAutomationElement5* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CachedLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentFlowsFrom(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsFrom(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedFlowsFrom(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsFrom(This,retVal);
}
/*** IUIAutomationElement3 methods ***/
static inline HRESULT IUIAutomationElement5_ShowContextMenu(IUIAutomationElement5* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
static inline HRESULT IUIAutomationElement5_get_CurrentIsPeripheral(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPeripheral(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedIsPeripheral(IUIAutomationElement5* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPeripheral(This,retVal);
}
/*** IUIAutomationElement4 methods ***/
static inline HRESULT IUIAutomationElement5_get_CurrentPositionInSet(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CurrentPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentSizeOfSet(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CurrentSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentLevel(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CurrentLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentAnnotationTypes(IUIAutomationElement5* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CurrentAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentAnnotationObjects(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentAnnotationObjects(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedPositionInSet(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CachedPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedSizeOfSet(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CachedSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedLevel(IUIAutomationElement5* This,int *retVal) {
    return This->lpVtbl->get_CachedLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedAnnotationTypes(IUIAutomationElement5* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CachedAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedAnnotationObjects(IUIAutomationElement5* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedAnnotationObjects(This,retVal);
}
/*** IUIAutomationElement5 methods ***/
static inline HRESULT IUIAutomationElement5_get_CurrentLandmarkType(IUIAutomationElement5* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CurrentLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CurrentLocalizedLandmarkType(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedLandmarkType(IUIAutomationElement5* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CachedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement5_get_CachedLocalizedLandmarkType(IUIAutomationElement5* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement5_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement6 interface
 */
#ifndef __IUIAutomationElement6_INTERFACE_DEFINED__
#define __IUIAutomationElement6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement6, 0x4780d450, 0x8bca, 0x4977, 0xaf,0xa5, 0xa4,0xa5,0x17,0xf5,0x55,0xe3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4780d450-8bca-4977-afa5-a4a517f555e3")
IUIAutomationElement6 : public IUIAutomationElement5
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentFullDescription(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedFullDescription(
        BSTR *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement6, 0x4780d450, 0x8bca, 0x4977, 0xaf,0xa5, 0xa4,0xa5,0x17,0xf5,0x55,0xe3)
#endif
#else
typedef struct IUIAutomationElement6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement6 *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement6 *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement6 *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement6 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement6 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement6 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement6 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement6 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement6 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement6 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement6 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement6 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement6 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement6 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement6 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement6 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement6 *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement6 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement6 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement6 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement6 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement6 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement6 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement6 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement6 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement6 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement6 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement6 *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    /*** IUIAutomationElement2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentOptimizeForVisualContent)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOptimizeForVisualContent)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLiveSetting)(
        IUIAutomationElement6 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLiveSetting)(
        IUIAutomationElement6 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsFrom)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsFrom)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement3 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IUIAutomationElement6 *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPeripheral)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPeripheral)(
        IUIAutomationElement6 *This,
        WINBOOL *retVal);

    /*** IUIAutomationElement4 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentPositionInSet)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSizeOfSet)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLevel)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationTypes)(
        IUIAutomationElement6 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationObjects)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedPositionInSet)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedSizeOfSet)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLevel)(
        IUIAutomationElement6 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationTypes)(
        IUIAutomationElement6 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationObjects)(
        IUIAutomationElement6 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement5 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentLandmarkType)(
        IUIAutomationElement6 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedLandmarkType)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLandmarkType)(
        IUIAutomationElement6 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedLandmarkType)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    /*** IUIAutomationElement6 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentFullDescription)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFullDescription)(
        IUIAutomationElement6 *This,
        BSTR *retVal);

    END_INTERFACE
} IUIAutomationElement6Vtbl;

interface IUIAutomationElement6 {
    CONST_VTBL IUIAutomationElement6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement6_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement6_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement6_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement6_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement6_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement6_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement6_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement6_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement6_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement6_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement6_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement6_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement6_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement6_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement6_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement6_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement6_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement6_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement6_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement6_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement6_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement6_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement6_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement6_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement6_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement6_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement6_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement6_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement6_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement6_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement6_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement6_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement6_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement6_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement6_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement6_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement6_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement6_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement6_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement6_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement6_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement6_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement6_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement6_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement6_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement6_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement6_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement6_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement6_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement6_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement6_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement6_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement6_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement6_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement6_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement6_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement6_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement6_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement6_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement6_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement6_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement6_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement6_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement6_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement6_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement6_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement6_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement6_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement6_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement6_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement6_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement6_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement6_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement6_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement6_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement6_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement6_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement6_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement6_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement6_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement6_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement6_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement6_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
/*** IUIAutomationElement2 methods ***/
#define IUIAutomationElement6_get_CurrentOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement6_get_CachedOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement6_get_CurrentLiveSetting(This,retVal) (This)->lpVtbl->get_CurrentLiveSetting(This,retVal)
#define IUIAutomationElement6_get_CachedLiveSetting(This,retVal) (This)->lpVtbl->get_CachedLiveSetting(This,retVal)
#define IUIAutomationElement6_get_CurrentFlowsFrom(This,retVal) (This)->lpVtbl->get_CurrentFlowsFrom(This,retVal)
#define IUIAutomationElement6_get_CachedFlowsFrom(This,retVal) (This)->lpVtbl->get_CachedFlowsFrom(This,retVal)
/*** IUIAutomationElement3 methods ***/
#define IUIAutomationElement6_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#define IUIAutomationElement6_get_CurrentIsPeripheral(This,retVal) (This)->lpVtbl->get_CurrentIsPeripheral(This,retVal)
#define IUIAutomationElement6_get_CachedIsPeripheral(This,retVal) (This)->lpVtbl->get_CachedIsPeripheral(This,retVal)
/*** IUIAutomationElement4 methods ***/
#define IUIAutomationElement6_get_CurrentPositionInSet(This,retVal) (This)->lpVtbl->get_CurrentPositionInSet(This,retVal)
#define IUIAutomationElement6_get_CurrentSizeOfSet(This,retVal) (This)->lpVtbl->get_CurrentSizeOfSet(This,retVal)
#define IUIAutomationElement6_get_CurrentLevel(This,retVal) (This)->lpVtbl->get_CurrentLevel(This,retVal)
#define IUIAutomationElement6_get_CurrentAnnotationTypes(This,retVal) (This)->lpVtbl->get_CurrentAnnotationTypes(This,retVal)
#define IUIAutomationElement6_get_CurrentAnnotationObjects(This,retVal) (This)->lpVtbl->get_CurrentAnnotationObjects(This,retVal)
#define IUIAutomationElement6_get_CachedPositionInSet(This,retVal) (This)->lpVtbl->get_CachedPositionInSet(This,retVal)
#define IUIAutomationElement6_get_CachedSizeOfSet(This,retVal) (This)->lpVtbl->get_CachedSizeOfSet(This,retVal)
#define IUIAutomationElement6_get_CachedLevel(This,retVal) (This)->lpVtbl->get_CachedLevel(This,retVal)
#define IUIAutomationElement6_get_CachedAnnotationTypes(This,retVal) (This)->lpVtbl->get_CachedAnnotationTypes(This,retVal)
#define IUIAutomationElement6_get_CachedAnnotationObjects(This,retVal) (This)->lpVtbl->get_CachedAnnotationObjects(This,retVal)
/*** IUIAutomationElement5 methods ***/
#define IUIAutomationElement6_get_CurrentLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLandmarkType(This,retVal)
#define IUIAutomationElement6_get_CurrentLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal)
#define IUIAutomationElement6_get_CachedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLandmarkType(This,retVal)
#define IUIAutomationElement6_get_CachedLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal)
/*** IUIAutomationElement6 methods ***/
#define IUIAutomationElement6_get_CurrentFullDescription(This,retVal) (This)->lpVtbl->get_CurrentFullDescription(This,retVal)
#define IUIAutomationElement6_get_CachedFullDescription(This,retVal) (This)->lpVtbl->get_CachedFullDescription(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement6_QueryInterface(IUIAutomationElement6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement6_AddRef(IUIAutomationElement6* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement6_Release(IUIAutomationElement6* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement6_SetFocus(IUIAutomationElement6* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement6_GetRuntimeId(IUIAutomationElement6* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement6_FindFirst(IUIAutomationElement6* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement6_FindAll(IUIAutomationElement6* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement6_FindFirstBuildCache(IUIAutomationElement6* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement6_FindAllBuildCache(IUIAutomationElement6* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement6_BuildUpdatedCache(IUIAutomationElement6* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement6_GetCurrentPropertyValue(IUIAutomationElement6* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement6_GetCurrentPropertyValueEx(IUIAutomationElement6* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement6_GetCachedPropertyValue(IUIAutomationElement6* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement6_GetCachedPropertyValueEx(IUIAutomationElement6* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement6_GetCurrentPatternAs(IUIAutomationElement6* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement6_GetCachedPatternAs(IUIAutomationElement6* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement6_GetCurrentPattern(IUIAutomationElement6* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement6_GetCachedPattern(IUIAutomationElement6* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement6_GetCachedParent(IUIAutomationElement6* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement6_GetCachedChildren(IUIAutomationElement6* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement6_get_CurrentProcessId(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentControlType(IUIAutomationElement6* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentLocalizedControlType(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentName(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentAcceleratorKey(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentAccessKey(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentHasKeyboardFocus(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsKeyboardFocusable(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsEnabled(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentAutomationId(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentClassName(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentHelpText(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentCulture(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsControlElement(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsContentElement(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsPassword(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentNativeWindowHandle(IUIAutomationElement6* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentItemType(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsOffscreen(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentOrientation(IUIAutomationElement6* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentFrameworkId(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsRequiredForForm(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentItemStatus(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentBoundingRectangle(IUIAutomationElement6* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentLabeledBy(IUIAutomationElement6* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentAriaRole(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentAriaProperties(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsDataValidForForm(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentControllerFor(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentDescribedBy(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentFlowsTo(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentProviderDescription(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedProcessId(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedControlType(IUIAutomationElement6* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedLocalizedControlType(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedName(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedAcceleratorKey(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedAccessKey(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedHasKeyboardFocus(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsKeyboardFocusable(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsEnabled(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedAutomationId(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedClassName(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedHelpText(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedCulture(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsControlElement(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsContentElement(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsPassword(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedNativeWindowHandle(IUIAutomationElement6* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedItemType(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsOffscreen(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedOrientation(IUIAutomationElement6* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedFrameworkId(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsRequiredForForm(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedItemStatus(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedBoundingRectangle(IUIAutomationElement6* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedLabeledBy(IUIAutomationElement6* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedAriaRole(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedAriaProperties(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsDataValidForForm(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedControllerFor(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedDescribedBy(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedFlowsTo(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedProviderDescription(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement6_GetClickablePoint(IUIAutomationElement6* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
/*** IUIAutomationElement2 methods ***/
static inline HRESULT IUIAutomationElement6_get_CurrentOptimizeForVisualContent(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedOptimizeForVisualContent(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentLiveSetting(IUIAutomationElement6* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CurrentLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedLiveSetting(IUIAutomationElement6* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CachedLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentFlowsFrom(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsFrom(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedFlowsFrom(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsFrom(This,retVal);
}
/*** IUIAutomationElement3 methods ***/
static inline HRESULT IUIAutomationElement6_ShowContextMenu(IUIAutomationElement6* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
static inline HRESULT IUIAutomationElement6_get_CurrentIsPeripheral(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPeripheral(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedIsPeripheral(IUIAutomationElement6* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPeripheral(This,retVal);
}
/*** IUIAutomationElement4 methods ***/
static inline HRESULT IUIAutomationElement6_get_CurrentPositionInSet(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CurrentPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentSizeOfSet(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CurrentSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentLevel(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CurrentLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentAnnotationTypes(IUIAutomationElement6* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CurrentAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentAnnotationObjects(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentAnnotationObjects(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedPositionInSet(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CachedPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedSizeOfSet(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CachedSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedLevel(IUIAutomationElement6* This,int *retVal) {
    return This->lpVtbl->get_CachedLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedAnnotationTypes(IUIAutomationElement6* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CachedAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedAnnotationObjects(IUIAutomationElement6* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedAnnotationObjects(This,retVal);
}
/*** IUIAutomationElement5 methods ***/
static inline HRESULT IUIAutomationElement6_get_CurrentLandmarkType(IUIAutomationElement6* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CurrentLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CurrentLocalizedLandmarkType(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedLandmarkType(IUIAutomationElement6* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CachedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedLocalizedLandmarkType(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal);
}
/*** IUIAutomationElement6 methods ***/
static inline HRESULT IUIAutomationElement6_get_CurrentFullDescription(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFullDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement6_get_CachedFullDescription(IUIAutomationElement6* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFullDescription(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement7 interface
 */
#ifndef __IUIAutomationElement7_INTERFACE_DEFINED__
#define __IUIAutomationElement7_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement7, 0x204e8572, 0xcfc3, 0x4c11, 0xb0,0xc8, 0x7d,0xa7,0x42,0x07,0x50,0xb7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("204e8572-cfc3-4c11-b0c8-7da7420750b7")
IUIAutomationElement7 : public IUIAutomationElement6
{
    virtual HRESULT STDMETHODCALLTYPE FindFirstWithOptions(
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElement **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindAllWithOptions(
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElementArray **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindFirstWithOptionsBuildCache(
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElement **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindAllWithOptionsBuildCache(
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElementArray **found) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentMetadataValue(
        int targetId,
        METADATAID metadataId,
        VARIANT *returnVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement7, 0x204e8572, 0xcfc3, 0x4c11, 0xb0,0xc8, 0x7d,0xa7,0x42,0x07,0x50,0xb7)
#endif
#else
typedef struct IUIAutomationElement7Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement7 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement7 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement7 *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement7 *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement7 *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement7 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement7 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement7 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement7 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement7 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement7 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement7 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement7 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement7 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement7 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement7 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement7 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement7 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement7 *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement7 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement7 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement7 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement7 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement7 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement7 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement7 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement7 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement7 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement7 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement7 *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    /*** IUIAutomationElement2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentOptimizeForVisualContent)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOptimizeForVisualContent)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLiveSetting)(
        IUIAutomationElement7 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLiveSetting)(
        IUIAutomationElement7 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsFrom)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsFrom)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement3 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IUIAutomationElement7 *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPeripheral)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPeripheral)(
        IUIAutomationElement7 *This,
        WINBOOL *retVal);

    /*** IUIAutomationElement4 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentPositionInSet)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSizeOfSet)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLevel)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationTypes)(
        IUIAutomationElement7 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationObjects)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedPositionInSet)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedSizeOfSet)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLevel)(
        IUIAutomationElement7 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationTypes)(
        IUIAutomationElement7 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationObjects)(
        IUIAutomationElement7 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement5 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentLandmarkType)(
        IUIAutomationElement7 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedLandmarkType)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLandmarkType)(
        IUIAutomationElement7 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedLandmarkType)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    /*** IUIAutomationElement6 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentFullDescription)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFullDescription)(
        IUIAutomationElement7 *This,
        BSTR *retVal);

    /*** IUIAutomationElement7 methods ***/
    HRESULT (STDMETHODCALLTYPE *FindFirstWithOptions)(
        IUIAutomationElement7 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllWithOptions)(
        IUIAutomationElement7 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstWithOptionsBuildCache)(
        IUIAutomationElement7 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllWithOptionsBuildCache)(
        IUIAutomationElement7 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *GetCurrentMetadataValue)(
        IUIAutomationElement7 *This,
        int targetId,
        METADATAID metadataId,
        VARIANT *returnVal);

    END_INTERFACE
} IUIAutomationElement7Vtbl;

interface IUIAutomationElement7 {
    CONST_VTBL IUIAutomationElement7Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement7_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement7_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement7_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement7_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement7_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement7_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement7_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement7_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement7_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement7_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement7_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement7_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement7_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement7_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement7_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement7_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement7_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement7_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement7_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement7_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement7_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement7_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement7_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement7_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement7_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement7_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement7_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement7_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement7_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement7_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement7_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement7_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement7_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement7_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement7_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement7_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement7_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement7_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement7_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement7_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement7_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement7_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement7_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement7_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement7_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement7_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement7_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement7_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement7_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement7_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement7_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement7_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement7_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement7_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement7_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement7_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement7_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement7_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement7_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement7_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement7_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement7_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement7_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement7_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement7_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement7_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement7_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement7_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement7_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement7_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement7_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement7_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement7_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement7_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement7_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement7_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement7_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement7_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement7_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement7_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement7_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement7_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement7_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement7_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement7_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
/*** IUIAutomationElement2 methods ***/
#define IUIAutomationElement7_get_CurrentOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement7_get_CachedOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement7_get_CurrentLiveSetting(This,retVal) (This)->lpVtbl->get_CurrentLiveSetting(This,retVal)
#define IUIAutomationElement7_get_CachedLiveSetting(This,retVal) (This)->lpVtbl->get_CachedLiveSetting(This,retVal)
#define IUIAutomationElement7_get_CurrentFlowsFrom(This,retVal) (This)->lpVtbl->get_CurrentFlowsFrom(This,retVal)
#define IUIAutomationElement7_get_CachedFlowsFrom(This,retVal) (This)->lpVtbl->get_CachedFlowsFrom(This,retVal)
/*** IUIAutomationElement3 methods ***/
#define IUIAutomationElement7_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#define IUIAutomationElement7_get_CurrentIsPeripheral(This,retVal) (This)->lpVtbl->get_CurrentIsPeripheral(This,retVal)
#define IUIAutomationElement7_get_CachedIsPeripheral(This,retVal) (This)->lpVtbl->get_CachedIsPeripheral(This,retVal)
/*** IUIAutomationElement4 methods ***/
#define IUIAutomationElement7_get_CurrentPositionInSet(This,retVal) (This)->lpVtbl->get_CurrentPositionInSet(This,retVal)
#define IUIAutomationElement7_get_CurrentSizeOfSet(This,retVal) (This)->lpVtbl->get_CurrentSizeOfSet(This,retVal)
#define IUIAutomationElement7_get_CurrentLevel(This,retVal) (This)->lpVtbl->get_CurrentLevel(This,retVal)
#define IUIAutomationElement7_get_CurrentAnnotationTypes(This,retVal) (This)->lpVtbl->get_CurrentAnnotationTypes(This,retVal)
#define IUIAutomationElement7_get_CurrentAnnotationObjects(This,retVal) (This)->lpVtbl->get_CurrentAnnotationObjects(This,retVal)
#define IUIAutomationElement7_get_CachedPositionInSet(This,retVal) (This)->lpVtbl->get_CachedPositionInSet(This,retVal)
#define IUIAutomationElement7_get_CachedSizeOfSet(This,retVal) (This)->lpVtbl->get_CachedSizeOfSet(This,retVal)
#define IUIAutomationElement7_get_CachedLevel(This,retVal) (This)->lpVtbl->get_CachedLevel(This,retVal)
#define IUIAutomationElement7_get_CachedAnnotationTypes(This,retVal) (This)->lpVtbl->get_CachedAnnotationTypes(This,retVal)
#define IUIAutomationElement7_get_CachedAnnotationObjects(This,retVal) (This)->lpVtbl->get_CachedAnnotationObjects(This,retVal)
/*** IUIAutomationElement5 methods ***/
#define IUIAutomationElement7_get_CurrentLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLandmarkType(This,retVal)
#define IUIAutomationElement7_get_CurrentLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal)
#define IUIAutomationElement7_get_CachedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLandmarkType(This,retVal)
#define IUIAutomationElement7_get_CachedLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal)
/*** IUIAutomationElement6 methods ***/
#define IUIAutomationElement7_get_CurrentFullDescription(This,retVal) (This)->lpVtbl->get_CurrentFullDescription(This,retVal)
#define IUIAutomationElement7_get_CachedFullDescription(This,retVal) (This)->lpVtbl->get_CachedFullDescription(This,retVal)
/*** IUIAutomationElement7 methods ***/
#define IUIAutomationElement7_FindFirstWithOptions(This,scope,condition,traversalOptions,root,found) (This)->lpVtbl->FindFirstWithOptions(This,scope,condition,traversalOptions,root,found)
#define IUIAutomationElement7_FindAllWithOptions(This,scope,condition,traversalOptions,root,found) (This)->lpVtbl->FindAllWithOptions(This,scope,condition,traversalOptions,root,found)
#define IUIAutomationElement7_FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found) (This)->lpVtbl->FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found)
#define IUIAutomationElement7_FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found) (This)->lpVtbl->FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found)
#define IUIAutomationElement7_GetCurrentMetadataValue(This,targetId,metadataId,returnVal) (This)->lpVtbl->GetCurrentMetadataValue(This,targetId,metadataId,returnVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement7_QueryInterface(IUIAutomationElement7* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement7_AddRef(IUIAutomationElement7* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement7_Release(IUIAutomationElement7* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement7_SetFocus(IUIAutomationElement7* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement7_GetRuntimeId(IUIAutomationElement7* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement7_FindFirst(IUIAutomationElement7* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement7_FindAll(IUIAutomationElement7* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement7_FindFirstBuildCache(IUIAutomationElement7* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement7_FindAllBuildCache(IUIAutomationElement7* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement7_BuildUpdatedCache(IUIAutomationElement7* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement7_GetCurrentPropertyValue(IUIAutomationElement7* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement7_GetCurrentPropertyValueEx(IUIAutomationElement7* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement7_GetCachedPropertyValue(IUIAutomationElement7* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement7_GetCachedPropertyValueEx(IUIAutomationElement7* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement7_GetCurrentPatternAs(IUIAutomationElement7* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement7_GetCachedPatternAs(IUIAutomationElement7* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement7_GetCurrentPattern(IUIAutomationElement7* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement7_GetCachedPattern(IUIAutomationElement7* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement7_GetCachedParent(IUIAutomationElement7* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement7_GetCachedChildren(IUIAutomationElement7* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement7_get_CurrentProcessId(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentControlType(IUIAutomationElement7* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentLocalizedControlType(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentName(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentAcceleratorKey(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentAccessKey(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentHasKeyboardFocus(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsKeyboardFocusable(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsEnabled(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentAutomationId(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentClassName(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentHelpText(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentCulture(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsControlElement(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsContentElement(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsPassword(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentNativeWindowHandle(IUIAutomationElement7* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentItemType(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsOffscreen(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentOrientation(IUIAutomationElement7* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentFrameworkId(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsRequiredForForm(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentItemStatus(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentBoundingRectangle(IUIAutomationElement7* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentLabeledBy(IUIAutomationElement7* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentAriaRole(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentAriaProperties(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsDataValidForForm(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentControllerFor(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentDescribedBy(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentFlowsTo(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentProviderDescription(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedProcessId(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedControlType(IUIAutomationElement7* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedLocalizedControlType(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedName(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedAcceleratorKey(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedAccessKey(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedHasKeyboardFocus(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsKeyboardFocusable(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsEnabled(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedAutomationId(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedClassName(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedHelpText(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedCulture(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsControlElement(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsContentElement(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsPassword(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedNativeWindowHandle(IUIAutomationElement7* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedItemType(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsOffscreen(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedOrientation(IUIAutomationElement7* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedFrameworkId(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsRequiredForForm(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedItemStatus(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedBoundingRectangle(IUIAutomationElement7* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedLabeledBy(IUIAutomationElement7* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedAriaRole(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedAriaProperties(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsDataValidForForm(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedControllerFor(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedDescribedBy(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedFlowsTo(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedProviderDescription(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement7_GetClickablePoint(IUIAutomationElement7* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
/*** IUIAutomationElement2 methods ***/
static inline HRESULT IUIAutomationElement7_get_CurrentOptimizeForVisualContent(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedOptimizeForVisualContent(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentLiveSetting(IUIAutomationElement7* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CurrentLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedLiveSetting(IUIAutomationElement7* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CachedLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentFlowsFrom(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsFrom(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedFlowsFrom(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsFrom(This,retVal);
}
/*** IUIAutomationElement3 methods ***/
static inline HRESULT IUIAutomationElement7_ShowContextMenu(IUIAutomationElement7* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
static inline HRESULT IUIAutomationElement7_get_CurrentIsPeripheral(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPeripheral(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedIsPeripheral(IUIAutomationElement7* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPeripheral(This,retVal);
}
/*** IUIAutomationElement4 methods ***/
static inline HRESULT IUIAutomationElement7_get_CurrentPositionInSet(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CurrentPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentSizeOfSet(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CurrentSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentLevel(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CurrentLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentAnnotationTypes(IUIAutomationElement7* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CurrentAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentAnnotationObjects(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentAnnotationObjects(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedPositionInSet(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CachedPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedSizeOfSet(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CachedSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedLevel(IUIAutomationElement7* This,int *retVal) {
    return This->lpVtbl->get_CachedLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedAnnotationTypes(IUIAutomationElement7* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CachedAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedAnnotationObjects(IUIAutomationElement7* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedAnnotationObjects(This,retVal);
}
/*** IUIAutomationElement5 methods ***/
static inline HRESULT IUIAutomationElement7_get_CurrentLandmarkType(IUIAutomationElement7* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CurrentLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CurrentLocalizedLandmarkType(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedLandmarkType(IUIAutomationElement7* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CachedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedLocalizedLandmarkType(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal);
}
/*** IUIAutomationElement6 methods ***/
static inline HRESULT IUIAutomationElement7_get_CurrentFullDescription(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFullDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement7_get_CachedFullDescription(IUIAutomationElement7* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFullDescription(This,retVal);
}
/*** IUIAutomationElement7 methods ***/
static inline HRESULT IUIAutomationElement7_FindFirstWithOptions(IUIAutomationElement7* This,enum TreeScope scope,IUIAutomationCondition *condition,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstWithOptions(This,scope,condition,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement7_FindAllWithOptions(IUIAutomationElement7* This,enum TreeScope scope,IUIAutomationCondition *condition,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllWithOptions(This,scope,condition,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement7_FindFirstWithOptionsBuildCache(IUIAutomationElement7* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement7_FindAllWithOptionsBuildCache(IUIAutomationElement7* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement7_GetCurrentMetadataValue(IUIAutomationElement7* This,int targetId,METADATAID metadataId,VARIANT *returnVal) {
    return This->lpVtbl->GetCurrentMetadataValue(This,targetId,metadataId,returnVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement7_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement8 interface
 */
#ifndef __IUIAutomationElement8_INTERFACE_DEFINED__
#define __IUIAutomationElement8_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement8, 0x8c60217d, 0x5411, 0x4cde, 0xbc,0xc0, 0x1c,0xed,0xa2,0x23,0x83,0x0c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8c60217d-5411-4cde-bcc0-1ceda223830c")
IUIAutomationElement8 : public IUIAutomationElement7
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentHeadingLevel(
        HEADINGLEVELID *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedHeadingLevel(
        HEADINGLEVELID *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement8, 0x8c60217d, 0x5411, 0x4cde, 0xbc,0xc0, 0x1c,0xed,0xa2,0x23,0x83,0x0c)
#endif
#else
typedef struct IUIAutomationElement8Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement8 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement8 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement8 *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement8 *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement8 *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement8 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement8 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement8 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement8 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement8 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement8 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement8 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement8 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement8 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement8 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement8 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement8 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement8 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement8 *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement8 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement8 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement8 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement8 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement8 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement8 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement8 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement8 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement8 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement8 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement8 *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    /*** IUIAutomationElement2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentOptimizeForVisualContent)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOptimizeForVisualContent)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLiveSetting)(
        IUIAutomationElement8 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLiveSetting)(
        IUIAutomationElement8 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsFrom)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsFrom)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement3 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IUIAutomationElement8 *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPeripheral)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPeripheral)(
        IUIAutomationElement8 *This,
        WINBOOL *retVal);

    /*** IUIAutomationElement4 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentPositionInSet)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSizeOfSet)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLevel)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationTypes)(
        IUIAutomationElement8 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationObjects)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedPositionInSet)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedSizeOfSet)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLevel)(
        IUIAutomationElement8 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationTypes)(
        IUIAutomationElement8 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationObjects)(
        IUIAutomationElement8 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement5 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentLandmarkType)(
        IUIAutomationElement8 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedLandmarkType)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLandmarkType)(
        IUIAutomationElement8 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedLandmarkType)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    /*** IUIAutomationElement6 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentFullDescription)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFullDescription)(
        IUIAutomationElement8 *This,
        BSTR *retVal);

    /*** IUIAutomationElement7 methods ***/
    HRESULT (STDMETHODCALLTYPE *FindFirstWithOptions)(
        IUIAutomationElement8 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllWithOptions)(
        IUIAutomationElement8 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstWithOptionsBuildCache)(
        IUIAutomationElement8 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllWithOptionsBuildCache)(
        IUIAutomationElement8 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *GetCurrentMetadataValue)(
        IUIAutomationElement8 *This,
        int targetId,
        METADATAID metadataId,
        VARIANT *returnVal);

    /*** IUIAutomationElement8 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentHeadingLevel)(
        IUIAutomationElement8 *This,
        HEADINGLEVELID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHeadingLevel)(
        IUIAutomationElement8 *This,
        HEADINGLEVELID *retVal);

    END_INTERFACE
} IUIAutomationElement8Vtbl;

interface IUIAutomationElement8 {
    CONST_VTBL IUIAutomationElement8Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement8_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement8_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement8_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement8_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement8_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement8_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement8_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement8_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement8_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement8_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement8_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement8_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement8_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement8_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement8_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement8_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement8_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement8_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement8_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement8_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement8_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement8_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement8_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement8_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement8_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement8_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement8_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement8_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement8_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement8_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement8_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement8_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement8_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement8_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement8_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement8_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement8_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement8_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement8_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement8_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement8_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement8_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement8_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement8_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement8_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement8_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement8_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement8_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement8_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement8_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement8_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement8_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement8_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement8_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement8_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement8_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement8_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement8_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement8_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement8_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement8_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement8_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement8_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement8_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement8_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement8_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement8_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement8_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement8_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement8_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement8_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement8_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement8_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement8_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement8_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement8_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement8_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement8_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement8_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement8_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement8_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement8_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement8_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement8_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement8_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
/*** IUIAutomationElement2 methods ***/
#define IUIAutomationElement8_get_CurrentOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement8_get_CachedOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement8_get_CurrentLiveSetting(This,retVal) (This)->lpVtbl->get_CurrentLiveSetting(This,retVal)
#define IUIAutomationElement8_get_CachedLiveSetting(This,retVal) (This)->lpVtbl->get_CachedLiveSetting(This,retVal)
#define IUIAutomationElement8_get_CurrentFlowsFrom(This,retVal) (This)->lpVtbl->get_CurrentFlowsFrom(This,retVal)
#define IUIAutomationElement8_get_CachedFlowsFrom(This,retVal) (This)->lpVtbl->get_CachedFlowsFrom(This,retVal)
/*** IUIAutomationElement3 methods ***/
#define IUIAutomationElement8_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#define IUIAutomationElement8_get_CurrentIsPeripheral(This,retVal) (This)->lpVtbl->get_CurrentIsPeripheral(This,retVal)
#define IUIAutomationElement8_get_CachedIsPeripheral(This,retVal) (This)->lpVtbl->get_CachedIsPeripheral(This,retVal)
/*** IUIAutomationElement4 methods ***/
#define IUIAutomationElement8_get_CurrentPositionInSet(This,retVal) (This)->lpVtbl->get_CurrentPositionInSet(This,retVal)
#define IUIAutomationElement8_get_CurrentSizeOfSet(This,retVal) (This)->lpVtbl->get_CurrentSizeOfSet(This,retVal)
#define IUIAutomationElement8_get_CurrentLevel(This,retVal) (This)->lpVtbl->get_CurrentLevel(This,retVal)
#define IUIAutomationElement8_get_CurrentAnnotationTypes(This,retVal) (This)->lpVtbl->get_CurrentAnnotationTypes(This,retVal)
#define IUIAutomationElement8_get_CurrentAnnotationObjects(This,retVal) (This)->lpVtbl->get_CurrentAnnotationObjects(This,retVal)
#define IUIAutomationElement8_get_CachedPositionInSet(This,retVal) (This)->lpVtbl->get_CachedPositionInSet(This,retVal)
#define IUIAutomationElement8_get_CachedSizeOfSet(This,retVal) (This)->lpVtbl->get_CachedSizeOfSet(This,retVal)
#define IUIAutomationElement8_get_CachedLevel(This,retVal) (This)->lpVtbl->get_CachedLevel(This,retVal)
#define IUIAutomationElement8_get_CachedAnnotationTypes(This,retVal) (This)->lpVtbl->get_CachedAnnotationTypes(This,retVal)
#define IUIAutomationElement8_get_CachedAnnotationObjects(This,retVal) (This)->lpVtbl->get_CachedAnnotationObjects(This,retVal)
/*** IUIAutomationElement5 methods ***/
#define IUIAutomationElement8_get_CurrentLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLandmarkType(This,retVal)
#define IUIAutomationElement8_get_CurrentLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal)
#define IUIAutomationElement8_get_CachedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLandmarkType(This,retVal)
#define IUIAutomationElement8_get_CachedLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal)
/*** IUIAutomationElement6 methods ***/
#define IUIAutomationElement8_get_CurrentFullDescription(This,retVal) (This)->lpVtbl->get_CurrentFullDescription(This,retVal)
#define IUIAutomationElement8_get_CachedFullDescription(This,retVal) (This)->lpVtbl->get_CachedFullDescription(This,retVal)
/*** IUIAutomationElement7 methods ***/
#define IUIAutomationElement8_FindFirstWithOptions(This,scope,condition,traversalOptions,root,found) (This)->lpVtbl->FindFirstWithOptions(This,scope,condition,traversalOptions,root,found)
#define IUIAutomationElement8_FindAllWithOptions(This,scope,condition,traversalOptions,root,found) (This)->lpVtbl->FindAllWithOptions(This,scope,condition,traversalOptions,root,found)
#define IUIAutomationElement8_FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found) (This)->lpVtbl->FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found)
#define IUIAutomationElement8_FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found) (This)->lpVtbl->FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found)
#define IUIAutomationElement8_GetCurrentMetadataValue(This,targetId,metadataId,returnVal) (This)->lpVtbl->GetCurrentMetadataValue(This,targetId,metadataId,returnVal)
/*** IUIAutomationElement8 methods ***/
#define IUIAutomationElement8_get_CurrentHeadingLevel(This,retVal) (This)->lpVtbl->get_CurrentHeadingLevel(This,retVal)
#define IUIAutomationElement8_get_CachedHeadingLevel(This,retVal) (This)->lpVtbl->get_CachedHeadingLevel(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement8_QueryInterface(IUIAutomationElement8* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement8_AddRef(IUIAutomationElement8* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement8_Release(IUIAutomationElement8* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement8_SetFocus(IUIAutomationElement8* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement8_GetRuntimeId(IUIAutomationElement8* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement8_FindFirst(IUIAutomationElement8* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement8_FindAll(IUIAutomationElement8* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement8_FindFirstBuildCache(IUIAutomationElement8* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement8_FindAllBuildCache(IUIAutomationElement8* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement8_BuildUpdatedCache(IUIAutomationElement8* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement8_GetCurrentPropertyValue(IUIAutomationElement8* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement8_GetCurrentPropertyValueEx(IUIAutomationElement8* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement8_GetCachedPropertyValue(IUIAutomationElement8* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement8_GetCachedPropertyValueEx(IUIAutomationElement8* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement8_GetCurrentPatternAs(IUIAutomationElement8* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement8_GetCachedPatternAs(IUIAutomationElement8* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement8_GetCurrentPattern(IUIAutomationElement8* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement8_GetCachedPattern(IUIAutomationElement8* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement8_GetCachedParent(IUIAutomationElement8* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement8_GetCachedChildren(IUIAutomationElement8* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement8_get_CurrentProcessId(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentControlType(IUIAutomationElement8* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentLocalizedControlType(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentName(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentAcceleratorKey(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentAccessKey(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentHasKeyboardFocus(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsKeyboardFocusable(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsEnabled(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentAutomationId(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentClassName(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentHelpText(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentCulture(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsControlElement(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsContentElement(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsPassword(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentNativeWindowHandle(IUIAutomationElement8* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentItemType(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsOffscreen(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentOrientation(IUIAutomationElement8* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentFrameworkId(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsRequiredForForm(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentItemStatus(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentBoundingRectangle(IUIAutomationElement8* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentLabeledBy(IUIAutomationElement8* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentAriaRole(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentAriaProperties(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsDataValidForForm(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentControllerFor(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentDescribedBy(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentFlowsTo(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentProviderDescription(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedProcessId(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedControlType(IUIAutomationElement8* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedLocalizedControlType(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedName(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedAcceleratorKey(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedAccessKey(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedHasKeyboardFocus(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsKeyboardFocusable(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsEnabled(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedAutomationId(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedClassName(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedHelpText(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedCulture(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsControlElement(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsContentElement(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsPassword(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedNativeWindowHandle(IUIAutomationElement8* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedItemType(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsOffscreen(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedOrientation(IUIAutomationElement8* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedFrameworkId(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsRequiredForForm(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedItemStatus(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedBoundingRectangle(IUIAutomationElement8* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedLabeledBy(IUIAutomationElement8* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedAriaRole(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedAriaProperties(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsDataValidForForm(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedControllerFor(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedDescribedBy(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedFlowsTo(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedProviderDescription(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement8_GetClickablePoint(IUIAutomationElement8* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
/*** IUIAutomationElement2 methods ***/
static inline HRESULT IUIAutomationElement8_get_CurrentOptimizeForVisualContent(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedOptimizeForVisualContent(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentLiveSetting(IUIAutomationElement8* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CurrentLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedLiveSetting(IUIAutomationElement8* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CachedLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentFlowsFrom(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsFrom(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedFlowsFrom(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsFrom(This,retVal);
}
/*** IUIAutomationElement3 methods ***/
static inline HRESULT IUIAutomationElement8_ShowContextMenu(IUIAutomationElement8* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
static inline HRESULT IUIAutomationElement8_get_CurrentIsPeripheral(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPeripheral(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedIsPeripheral(IUIAutomationElement8* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPeripheral(This,retVal);
}
/*** IUIAutomationElement4 methods ***/
static inline HRESULT IUIAutomationElement8_get_CurrentPositionInSet(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CurrentPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentSizeOfSet(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CurrentSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentLevel(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CurrentLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentAnnotationTypes(IUIAutomationElement8* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CurrentAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentAnnotationObjects(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentAnnotationObjects(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedPositionInSet(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CachedPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedSizeOfSet(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CachedSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedLevel(IUIAutomationElement8* This,int *retVal) {
    return This->lpVtbl->get_CachedLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedAnnotationTypes(IUIAutomationElement8* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CachedAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedAnnotationObjects(IUIAutomationElement8* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedAnnotationObjects(This,retVal);
}
/*** IUIAutomationElement5 methods ***/
static inline HRESULT IUIAutomationElement8_get_CurrentLandmarkType(IUIAutomationElement8* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CurrentLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CurrentLocalizedLandmarkType(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedLandmarkType(IUIAutomationElement8* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CachedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedLocalizedLandmarkType(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal);
}
/*** IUIAutomationElement6 methods ***/
static inline HRESULT IUIAutomationElement8_get_CurrentFullDescription(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFullDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedFullDescription(IUIAutomationElement8* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFullDescription(This,retVal);
}
/*** IUIAutomationElement7 methods ***/
static inline HRESULT IUIAutomationElement8_FindFirstWithOptions(IUIAutomationElement8* This,enum TreeScope scope,IUIAutomationCondition *condition,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstWithOptions(This,scope,condition,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement8_FindAllWithOptions(IUIAutomationElement8* This,enum TreeScope scope,IUIAutomationCondition *condition,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllWithOptions(This,scope,condition,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement8_FindFirstWithOptionsBuildCache(IUIAutomationElement8* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement8_FindAllWithOptionsBuildCache(IUIAutomationElement8* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement8_GetCurrentMetadataValue(IUIAutomationElement8* This,int targetId,METADATAID metadataId,VARIANT *returnVal) {
    return This->lpVtbl->GetCurrentMetadataValue(This,targetId,metadataId,returnVal);
}
/*** IUIAutomationElement8 methods ***/
static inline HRESULT IUIAutomationElement8_get_CurrentHeadingLevel(IUIAutomationElement8* This,HEADINGLEVELID *retVal) {
    return This->lpVtbl->get_CurrentHeadingLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement8_get_CachedHeadingLevel(IUIAutomationElement8* This,HEADINGLEVELID *retVal) {
    return This->lpVtbl->get_CachedHeadingLevel(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement8_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElement9 interface
 */
#ifndef __IUIAutomationElement9_INTERFACE_DEFINED__
#define __IUIAutomationElement9_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElement9, 0x39325fac, 0x039d, 0x440e, 0xa3,0xa3, 0x5e,0xb8,0x1a,0x5c,0xec,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("39325fac-039d-440e-a3a3-5eb81a5cecc3")
IUIAutomationElement9 : public IUIAutomationElement8
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentIsDialog(
        WINBOOL *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CachedIsDialog(
        WINBOOL *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElement9, 0x39325fac, 0x039d, 0x440e, 0xa3,0xa3, 0x5e,0xb8,0x1a,0x5c,0xec,0xc3)
#endif
#else
typedef struct IUIAutomationElement9Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElement9 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElement9 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElement9 *This);

    /*** IUIAutomationElement methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IUIAutomationElement9 *This);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IUIAutomationElement9 *This,
        SAFEARRAY **runtimeId);

    HRESULT (STDMETHODCALLTYPE *FindFirst)(
        IUIAutomationElement9 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAll)(
        IUIAutomationElement9 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstBuildCache)(
        IUIAutomationElement9 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllBuildCache)(
        IUIAutomationElement9 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *BuildUpdatedCache)(
        IUIAutomationElement9 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **updatedElement);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValue)(
        IUIAutomationElement9 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPropertyValueEx)(
        IUIAutomationElement9 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValue)(
        IUIAutomationElement9 *This,
        PROPERTYID propertyId,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCachedPropertyValueEx)(
        IUIAutomationElement9 *This,
        PROPERTYID propertyId,
        WINBOOL ignoreDefaultValue,
        VARIANT *retVal);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPatternAs)(
        IUIAutomationElement9 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPatternAs)(
        IUIAutomationElement9 *This,
        PATTERNID patternId,
        REFIID riid,
        void **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCurrentPattern)(
        IUIAutomationElement9 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedPattern)(
        IUIAutomationElement9 *This,
        PATTERNID patternId,
        IUnknown **patternObject);

    HRESULT (STDMETHODCALLTYPE *GetCachedParent)(
        IUIAutomationElement9 *This,
        IUIAutomationElement **parent);

    HRESULT (STDMETHODCALLTYPE *GetCachedChildren)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **children);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProcessId)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControlType)(
        IUIAutomationElement9 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedControlType)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentName)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAcceleratorKey)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAccessKey)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHasKeyboardFocus)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsKeyboardFocusable)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsEnabled)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAutomationId)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentClassName)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentHelpText)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCulture)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsControlElement)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsContentElement)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPassword)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentNativeWindowHandle)(
        IUIAutomationElement9 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemType)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsOffscreen)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentOrientation)(
        IUIAutomationElement9 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFrameworkId)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsRequiredForForm)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentItemStatus)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentBoundingRectangle)(
        IUIAutomationElement9 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLabeledBy)(
        IUIAutomationElement9 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaRole)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAriaProperties)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDataValidForForm)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentControllerFor)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentDescribedBy)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsTo)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentProviderDescription)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProcessId)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControlType)(
        IUIAutomationElement9 *This,
        CONTROLTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedControlType)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedName)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAcceleratorKey)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAccessKey)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHasKeyboardFocus)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsKeyboardFocusable)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsEnabled)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAutomationId)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedClassName)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHelpText)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedCulture)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsControlElement)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsContentElement)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPassword)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedNativeWindowHandle)(
        IUIAutomationElement9 *This,
        UIA_HWND *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemType)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsOffscreen)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOrientation)(
        IUIAutomationElement9 *This,
        enum OrientationType *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFrameworkId)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsRequiredForForm)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedItemStatus)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedBoundingRectangle)(
        IUIAutomationElement9 *This,
        RECT *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLabeledBy)(
        IUIAutomationElement9 *This,
        IUIAutomationElement **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaRole)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAriaProperties)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDataValidForForm)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedControllerFor)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedDescribedBy)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsTo)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedProviderDescription)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *GetClickablePoint)(
        IUIAutomationElement9 *This,
        POINT *clickable,
        WINBOOL *gotClickable);

    /*** IUIAutomationElement2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentOptimizeForVisualContent)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedOptimizeForVisualContent)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLiveSetting)(
        IUIAutomationElement9 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLiveSetting)(
        IUIAutomationElement9 *This,
        enum LiveSetting *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentFlowsFrom)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFlowsFrom)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement3 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IUIAutomationElement9 *This);

    HRESULT (STDMETHODCALLTYPE *get_CurrentIsPeripheral)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsPeripheral)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    /*** IUIAutomationElement4 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentPositionInSet)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSizeOfSet)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLevel)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationTypes)(
        IUIAutomationElement9 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentAnnotationObjects)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedPositionInSet)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedSizeOfSet)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLevel)(
        IUIAutomationElement9 *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationTypes)(
        IUIAutomationElement9 *This,
        SAFEARRAY **retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedAnnotationObjects)(
        IUIAutomationElement9 *This,
        IUIAutomationElementArray **retVal);

    /*** IUIAutomationElement5 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentLandmarkType)(
        IUIAutomationElement9 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CurrentLocalizedLandmarkType)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLandmarkType)(
        IUIAutomationElement9 *This,
        LANDMARKTYPEID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedLocalizedLandmarkType)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    /*** IUIAutomationElement6 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentFullDescription)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedFullDescription)(
        IUIAutomationElement9 *This,
        BSTR *retVal);

    /*** IUIAutomationElement7 methods ***/
    HRESULT (STDMETHODCALLTYPE *FindFirstWithOptions)(
        IUIAutomationElement9 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllWithOptions)(
        IUIAutomationElement9 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *FindFirstWithOptionsBuildCache)(
        IUIAutomationElement9 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElement **found);

    HRESULT (STDMETHODCALLTYPE *FindAllWithOptionsBuildCache)(
        IUIAutomationElement9 *This,
        enum TreeScope scope,
        IUIAutomationCondition *condition,
        IUIAutomationCacheRequest *cacheRequest,
        enum TreeTraversalOptions traversalOptions,
        IUIAutomationElement *root,
        IUIAutomationElementArray **found);

    HRESULT (STDMETHODCALLTYPE *GetCurrentMetadataValue)(
        IUIAutomationElement9 *This,
        int targetId,
        METADATAID metadataId,
        VARIANT *returnVal);

    /*** IUIAutomationElement8 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentHeadingLevel)(
        IUIAutomationElement9 *This,
        HEADINGLEVELID *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedHeadingLevel)(
        IUIAutomationElement9 *This,
        HEADINGLEVELID *retVal);

    /*** IUIAutomationElement9 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentIsDialog)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    HRESULT (STDMETHODCALLTYPE *get_CachedIsDialog)(
        IUIAutomationElement9 *This,
        WINBOOL *retVal);

    END_INTERFACE
} IUIAutomationElement9Vtbl;

interface IUIAutomationElement9 {
    CONST_VTBL IUIAutomationElement9Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElement9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElement9_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElement9_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElement methods ***/
#define IUIAutomationElement9_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IUIAutomationElement9_GetRuntimeId(This,runtimeId) (This)->lpVtbl->GetRuntimeId(This,runtimeId)
#define IUIAutomationElement9_FindFirst(This,scope,condition,found) (This)->lpVtbl->FindFirst(This,scope,condition,found)
#define IUIAutomationElement9_FindAll(This,scope,condition,found) (This)->lpVtbl->FindAll(This,scope,condition,found)
#define IUIAutomationElement9_FindFirstBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement9_FindAllBuildCache(This,scope,condition,cacheRequest,found) (This)->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found)
#define IUIAutomationElement9_BuildUpdatedCache(This,cacheRequest,updatedElement) (This)->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement)
#define IUIAutomationElement9_GetCurrentPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement9_GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement9_GetCachedPropertyValue(This,propertyId,retVal) (This)->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal)
#define IUIAutomationElement9_GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal) (This)->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal)
#define IUIAutomationElement9_GetCurrentPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement9_GetCachedPatternAs(This,patternId,riid,patternObject) (This)->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject)
#define IUIAutomationElement9_GetCurrentPattern(This,patternId,patternObject) (This)->lpVtbl->GetCurrentPattern(This,patternId,patternObject)
#define IUIAutomationElement9_GetCachedPattern(This,patternId,patternObject) (This)->lpVtbl->GetCachedPattern(This,patternId,patternObject)
#define IUIAutomationElement9_GetCachedParent(This,parent) (This)->lpVtbl->GetCachedParent(This,parent)
#define IUIAutomationElement9_GetCachedChildren(This,children) (This)->lpVtbl->GetCachedChildren(This,children)
#define IUIAutomationElement9_get_CurrentProcessId(This,retVal) (This)->lpVtbl->get_CurrentProcessId(This,retVal)
#define IUIAutomationElement9_get_CurrentControlType(This,retVal) (This)->lpVtbl->get_CurrentControlType(This,retVal)
#define IUIAutomationElement9_get_CurrentLocalizedControlType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedControlType(This,retVal)
#define IUIAutomationElement9_get_CurrentName(This,retVal) (This)->lpVtbl->get_CurrentName(This,retVal)
#define IUIAutomationElement9_get_CurrentAcceleratorKey(This,retVal) (This)->lpVtbl->get_CurrentAcceleratorKey(This,retVal)
#define IUIAutomationElement9_get_CurrentAccessKey(This,retVal) (This)->lpVtbl->get_CurrentAccessKey(This,retVal)
#define IUIAutomationElement9_get_CurrentHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal)
#define IUIAutomationElement9_get_CurrentIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement9_get_CurrentIsEnabled(This,retVal) (This)->lpVtbl->get_CurrentIsEnabled(This,retVal)
#define IUIAutomationElement9_get_CurrentAutomationId(This,retVal) (This)->lpVtbl->get_CurrentAutomationId(This,retVal)
#define IUIAutomationElement9_get_CurrentClassName(This,retVal) (This)->lpVtbl->get_CurrentClassName(This,retVal)
#define IUIAutomationElement9_get_CurrentHelpText(This,retVal) (This)->lpVtbl->get_CurrentHelpText(This,retVal)
#define IUIAutomationElement9_get_CurrentCulture(This,retVal) (This)->lpVtbl->get_CurrentCulture(This,retVal)
#define IUIAutomationElement9_get_CurrentIsControlElement(This,retVal) (This)->lpVtbl->get_CurrentIsControlElement(This,retVal)
#define IUIAutomationElement9_get_CurrentIsContentElement(This,retVal) (This)->lpVtbl->get_CurrentIsContentElement(This,retVal)
#define IUIAutomationElement9_get_CurrentIsPassword(This,retVal) (This)->lpVtbl->get_CurrentIsPassword(This,retVal)
#define IUIAutomationElement9_get_CurrentNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CurrentNativeWindowHandle(This,retVal)
#define IUIAutomationElement9_get_CurrentItemType(This,retVal) (This)->lpVtbl->get_CurrentItemType(This,retVal)
#define IUIAutomationElement9_get_CurrentIsOffscreen(This,retVal) (This)->lpVtbl->get_CurrentIsOffscreen(This,retVal)
#define IUIAutomationElement9_get_CurrentOrientation(This,retVal) (This)->lpVtbl->get_CurrentOrientation(This,retVal)
#define IUIAutomationElement9_get_CurrentFrameworkId(This,retVal) (This)->lpVtbl->get_CurrentFrameworkId(This,retVal)
#define IUIAutomationElement9_get_CurrentIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CurrentIsRequiredForForm(This,retVal)
#define IUIAutomationElement9_get_CurrentItemStatus(This,retVal) (This)->lpVtbl->get_CurrentItemStatus(This,retVal)
#define IUIAutomationElement9_get_CurrentBoundingRectangle(This,retVal) (This)->lpVtbl->get_CurrentBoundingRectangle(This,retVal)
#define IUIAutomationElement9_get_CurrentLabeledBy(This,retVal) (This)->lpVtbl->get_CurrentLabeledBy(This,retVal)
#define IUIAutomationElement9_get_CurrentAriaRole(This,retVal) (This)->lpVtbl->get_CurrentAriaRole(This,retVal)
#define IUIAutomationElement9_get_CurrentAriaProperties(This,retVal) (This)->lpVtbl->get_CurrentAriaProperties(This,retVal)
#define IUIAutomationElement9_get_CurrentIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CurrentIsDataValidForForm(This,retVal)
#define IUIAutomationElement9_get_CurrentControllerFor(This,retVal) (This)->lpVtbl->get_CurrentControllerFor(This,retVal)
#define IUIAutomationElement9_get_CurrentDescribedBy(This,retVal) (This)->lpVtbl->get_CurrentDescribedBy(This,retVal)
#define IUIAutomationElement9_get_CurrentFlowsTo(This,retVal) (This)->lpVtbl->get_CurrentFlowsTo(This,retVal)
#define IUIAutomationElement9_get_CurrentProviderDescription(This,retVal) (This)->lpVtbl->get_CurrentProviderDescription(This,retVal)
#define IUIAutomationElement9_get_CachedProcessId(This,retVal) (This)->lpVtbl->get_CachedProcessId(This,retVal)
#define IUIAutomationElement9_get_CachedControlType(This,retVal) (This)->lpVtbl->get_CachedControlType(This,retVal)
#define IUIAutomationElement9_get_CachedLocalizedControlType(This,retVal) (This)->lpVtbl->get_CachedLocalizedControlType(This,retVal)
#define IUIAutomationElement9_get_CachedName(This,retVal) (This)->lpVtbl->get_CachedName(This,retVal)
#define IUIAutomationElement9_get_CachedAcceleratorKey(This,retVal) (This)->lpVtbl->get_CachedAcceleratorKey(This,retVal)
#define IUIAutomationElement9_get_CachedAccessKey(This,retVal) (This)->lpVtbl->get_CachedAccessKey(This,retVal)
#define IUIAutomationElement9_get_CachedHasKeyboardFocus(This,retVal) (This)->lpVtbl->get_CachedHasKeyboardFocus(This,retVal)
#define IUIAutomationElement9_get_CachedIsKeyboardFocusable(This,retVal) (This)->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal)
#define IUIAutomationElement9_get_CachedIsEnabled(This,retVal) (This)->lpVtbl->get_CachedIsEnabled(This,retVal)
#define IUIAutomationElement9_get_CachedAutomationId(This,retVal) (This)->lpVtbl->get_CachedAutomationId(This,retVal)
#define IUIAutomationElement9_get_CachedClassName(This,retVal) (This)->lpVtbl->get_CachedClassName(This,retVal)
#define IUIAutomationElement9_get_CachedHelpText(This,retVal) (This)->lpVtbl->get_CachedHelpText(This,retVal)
#define IUIAutomationElement9_get_CachedCulture(This,retVal) (This)->lpVtbl->get_CachedCulture(This,retVal)
#define IUIAutomationElement9_get_CachedIsControlElement(This,retVal) (This)->lpVtbl->get_CachedIsControlElement(This,retVal)
#define IUIAutomationElement9_get_CachedIsContentElement(This,retVal) (This)->lpVtbl->get_CachedIsContentElement(This,retVal)
#define IUIAutomationElement9_get_CachedIsPassword(This,retVal) (This)->lpVtbl->get_CachedIsPassword(This,retVal)
#define IUIAutomationElement9_get_CachedNativeWindowHandle(This,retVal) (This)->lpVtbl->get_CachedNativeWindowHandle(This,retVal)
#define IUIAutomationElement9_get_CachedItemType(This,retVal) (This)->lpVtbl->get_CachedItemType(This,retVal)
#define IUIAutomationElement9_get_CachedIsOffscreen(This,retVal) (This)->lpVtbl->get_CachedIsOffscreen(This,retVal)
#define IUIAutomationElement9_get_CachedOrientation(This,retVal) (This)->lpVtbl->get_CachedOrientation(This,retVal)
#define IUIAutomationElement9_get_CachedFrameworkId(This,retVal) (This)->lpVtbl->get_CachedFrameworkId(This,retVal)
#define IUIAutomationElement9_get_CachedIsRequiredForForm(This,retVal) (This)->lpVtbl->get_CachedIsRequiredForForm(This,retVal)
#define IUIAutomationElement9_get_CachedItemStatus(This,retVal) (This)->lpVtbl->get_CachedItemStatus(This,retVal)
#define IUIAutomationElement9_get_CachedBoundingRectangle(This,retVal) (This)->lpVtbl->get_CachedBoundingRectangle(This,retVal)
#define IUIAutomationElement9_get_CachedLabeledBy(This,retVal) (This)->lpVtbl->get_CachedLabeledBy(This,retVal)
#define IUIAutomationElement9_get_CachedAriaRole(This,retVal) (This)->lpVtbl->get_CachedAriaRole(This,retVal)
#define IUIAutomationElement9_get_CachedAriaProperties(This,retVal) (This)->lpVtbl->get_CachedAriaProperties(This,retVal)
#define IUIAutomationElement9_get_CachedIsDataValidForForm(This,retVal) (This)->lpVtbl->get_CachedIsDataValidForForm(This,retVal)
#define IUIAutomationElement9_get_CachedControllerFor(This,retVal) (This)->lpVtbl->get_CachedControllerFor(This,retVal)
#define IUIAutomationElement9_get_CachedDescribedBy(This,retVal) (This)->lpVtbl->get_CachedDescribedBy(This,retVal)
#define IUIAutomationElement9_get_CachedFlowsTo(This,retVal) (This)->lpVtbl->get_CachedFlowsTo(This,retVal)
#define IUIAutomationElement9_get_CachedProviderDescription(This,retVal) (This)->lpVtbl->get_CachedProviderDescription(This,retVal)
#define IUIAutomationElement9_GetClickablePoint(This,clickable,gotClickable) (This)->lpVtbl->GetClickablePoint(This,clickable,gotClickable)
/*** IUIAutomationElement2 methods ***/
#define IUIAutomationElement9_get_CurrentOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement9_get_CachedOptimizeForVisualContent(This,retVal) (This)->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal)
#define IUIAutomationElement9_get_CurrentLiveSetting(This,retVal) (This)->lpVtbl->get_CurrentLiveSetting(This,retVal)
#define IUIAutomationElement9_get_CachedLiveSetting(This,retVal) (This)->lpVtbl->get_CachedLiveSetting(This,retVal)
#define IUIAutomationElement9_get_CurrentFlowsFrom(This,retVal) (This)->lpVtbl->get_CurrentFlowsFrom(This,retVal)
#define IUIAutomationElement9_get_CachedFlowsFrom(This,retVal) (This)->lpVtbl->get_CachedFlowsFrom(This,retVal)
/*** IUIAutomationElement3 methods ***/
#define IUIAutomationElement9_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#define IUIAutomationElement9_get_CurrentIsPeripheral(This,retVal) (This)->lpVtbl->get_CurrentIsPeripheral(This,retVal)
#define IUIAutomationElement9_get_CachedIsPeripheral(This,retVal) (This)->lpVtbl->get_CachedIsPeripheral(This,retVal)
/*** IUIAutomationElement4 methods ***/
#define IUIAutomationElement9_get_CurrentPositionInSet(This,retVal) (This)->lpVtbl->get_CurrentPositionInSet(This,retVal)
#define IUIAutomationElement9_get_CurrentSizeOfSet(This,retVal) (This)->lpVtbl->get_CurrentSizeOfSet(This,retVal)
#define IUIAutomationElement9_get_CurrentLevel(This,retVal) (This)->lpVtbl->get_CurrentLevel(This,retVal)
#define IUIAutomationElement9_get_CurrentAnnotationTypes(This,retVal) (This)->lpVtbl->get_CurrentAnnotationTypes(This,retVal)
#define IUIAutomationElement9_get_CurrentAnnotationObjects(This,retVal) (This)->lpVtbl->get_CurrentAnnotationObjects(This,retVal)
#define IUIAutomationElement9_get_CachedPositionInSet(This,retVal) (This)->lpVtbl->get_CachedPositionInSet(This,retVal)
#define IUIAutomationElement9_get_CachedSizeOfSet(This,retVal) (This)->lpVtbl->get_CachedSizeOfSet(This,retVal)
#define IUIAutomationElement9_get_CachedLevel(This,retVal) (This)->lpVtbl->get_CachedLevel(This,retVal)
#define IUIAutomationElement9_get_CachedAnnotationTypes(This,retVal) (This)->lpVtbl->get_CachedAnnotationTypes(This,retVal)
#define IUIAutomationElement9_get_CachedAnnotationObjects(This,retVal) (This)->lpVtbl->get_CachedAnnotationObjects(This,retVal)
/*** IUIAutomationElement5 methods ***/
#define IUIAutomationElement9_get_CurrentLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLandmarkType(This,retVal)
#define IUIAutomationElement9_get_CurrentLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal)
#define IUIAutomationElement9_get_CachedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLandmarkType(This,retVal)
#define IUIAutomationElement9_get_CachedLocalizedLandmarkType(This,retVal) (This)->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal)
/*** IUIAutomationElement6 methods ***/
#define IUIAutomationElement9_get_CurrentFullDescription(This,retVal) (This)->lpVtbl->get_CurrentFullDescription(This,retVal)
#define IUIAutomationElement9_get_CachedFullDescription(This,retVal) (This)->lpVtbl->get_CachedFullDescription(This,retVal)
/*** IUIAutomationElement7 methods ***/
#define IUIAutomationElement9_FindFirstWithOptions(This,scope,condition,traversalOptions,root,found) (This)->lpVtbl->FindFirstWithOptions(This,scope,condition,traversalOptions,root,found)
#define IUIAutomationElement9_FindAllWithOptions(This,scope,condition,traversalOptions,root,found) (This)->lpVtbl->FindAllWithOptions(This,scope,condition,traversalOptions,root,found)
#define IUIAutomationElement9_FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found) (This)->lpVtbl->FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found)
#define IUIAutomationElement9_FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found) (This)->lpVtbl->FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found)
#define IUIAutomationElement9_GetCurrentMetadataValue(This,targetId,metadataId,returnVal) (This)->lpVtbl->GetCurrentMetadataValue(This,targetId,metadataId,returnVal)
/*** IUIAutomationElement8 methods ***/
#define IUIAutomationElement9_get_CurrentHeadingLevel(This,retVal) (This)->lpVtbl->get_CurrentHeadingLevel(This,retVal)
#define IUIAutomationElement9_get_CachedHeadingLevel(This,retVal) (This)->lpVtbl->get_CachedHeadingLevel(This,retVal)
/*** IUIAutomationElement9 methods ***/
#define IUIAutomationElement9_get_CurrentIsDialog(This,retVal) (This)->lpVtbl->get_CurrentIsDialog(This,retVal)
#define IUIAutomationElement9_get_CachedIsDialog(This,retVal) (This)->lpVtbl->get_CachedIsDialog(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElement9_QueryInterface(IUIAutomationElement9* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElement9_AddRef(IUIAutomationElement9* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElement9_Release(IUIAutomationElement9* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElement methods ***/
static inline HRESULT IUIAutomationElement9_SetFocus(IUIAutomationElement9* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IUIAutomationElement9_GetRuntimeId(IUIAutomationElement9* This,SAFEARRAY **runtimeId) {
    return This->lpVtbl->GetRuntimeId(This,runtimeId);
}
static inline HRESULT IUIAutomationElement9_FindFirst(IUIAutomationElement9* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirst(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement9_FindAll(IUIAutomationElement9* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAll(This,scope,condition,found);
}
static inline HRESULT IUIAutomationElement9_FindFirstBuildCache(IUIAutomationElement9* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement9_FindAllBuildCache(IUIAutomationElement9* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllBuildCache(This,scope,condition,cacheRequest,found);
}
static inline HRESULT IUIAutomationElement9_BuildUpdatedCache(IUIAutomationElement9* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **updatedElement) {
    return This->lpVtbl->BuildUpdatedCache(This,cacheRequest,updatedElement);
}
static inline HRESULT IUIAutomationElement9_GetCurrentPropertyValue(IUIAutomationElement9* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement9_GetCurrentPropertyValueEx(IUIAutomationElement9* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCurrentPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement9_GetCachedPropertyValue(IUIAutomationElement9* This,PROPERTYID propertyId,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValue(This,propertyId,retVal);
}
static inline HRESULT IUIAutomationElement9_GetCachedPropertyValueEx(IUIAutomationElement9* This,PROPERTYID propertyId,WINBOOL ignoreDefaultValue,VARIANT *retVal) {
    return This->lpVtbl->GetCachedPropertyValueEx(This,propertyId,ignoreDefaultValue,retVal);
}
static inline HRESULT IUIAutomationElement9_GetCurrentPatternAs(IUIAutomationElement9* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCurrentPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement9_GetCachedPatternAs(IUIAutomationElement9* This,PATTERNID patternId,REFIID riid,void **patternObject) {
    return This->lpVtbl->GetCachedPatternAs(This,patternId,riid,patternObject);
}
static inline HRESULT IUIAutomationElement9_GetCurrentPattern(IUIAutomationElement9* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCurrentPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement9_GetCachedPattern(IUIAutomationElement9* This,PATTERNID patternId,IUnknown **patternObject) {
    return This->lpVtbl->GetCachedPattern(This,patternId,patternObject);
}
static inline HRESULT IUIAutomationElement9_GetCachedParent(IUIAutomationElement9* This,IUIAutomationElement **parent) {
    return This->lpVtbl->GetCachedParent(This,parent);
}
static inline HRESULT IUIAutomationElement9_GetCachedChildren(IUIAutomationElement9* This,IUIAutomationElementArray **children) {
    return This->lpVtbl->GetCachedChildren(This,children);
}
static inline HRESULT IUIAutomationElement9_get_CurrentProcessId(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CurrentProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentControlType(IUIAutomationElement9* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CurrentControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentLocalizedControlType(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentName(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentName(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentAcceleratorKey(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentAccessKey(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentHasKeyboardFocus(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsKeyboardFocusable(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsEnabled(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentAutomationId(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentClassName(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentHelpText(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentCulture(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CurrentCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsControlElement(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsContentElement(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsPassword(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentNativeWindowHandle(IUIAutomationElement9* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CurrentNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentItemType(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsOffscreen(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentOrientation(IUIAutomationElement9* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CurrentOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentFrameworkId(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsRequiredForForm(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentItemStatus(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentBoundingRectangle(IUIAutomationElement9* This,RECT *retVal) {
    return This->lpVtbl->get_CurrentBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentLabeledBy(IUIAutomationElement9* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CurrentLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentAriaRole(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentAriaProperties(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsDataValidForForm(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentControllerFor(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentDescribedBy(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentFlowsTo(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentProviderDescription(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedProcessId(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CachedProcessId(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedControlType(IUIAutomationElement9* This,CONTROLTYPEID *retVal) {
    return This->lpVtbl->get_CachedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedLocalizedControlType(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedControlType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedName(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedName(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedAcceleratorKey(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAcceleratorKey(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedAccessKey(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAccessKey(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedHasKeyboardFocus(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedHasKeyboardFocus(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsKeyboardFocusable(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsKeyboardFocusable(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsEnabled(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsEnabled(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedAutomationId(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAutomationId(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedClassName(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedClassName(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedHelpText(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedHelpText(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedCulture(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CachedCulture(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsControlElement(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsControlElement(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsContentElement(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsContentElement(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsPassword(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPassword(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedNativeWindowHandle(IUIAutomationElement9* This,UIA_HWND *retVal) {
    return This->lpVtbl->get_CachedNativeWindowHandle(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedItemType(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsOffscreen(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsOffscreen(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedOrientation(IUIAutomationElement9* This,enum OrientationType *retVal) {
    return This->lpVtbl->get_CachedOrientation(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedFrameworkId(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFrameworkId(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsRequiredForForm(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsRequiredForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedItemStatus(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedItemStatus(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedBoundingRectangle(IUIAutomationElement9* This,RECT *retVal) {
    return This->lpVtbl->get_CachedBoundingRectangle(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedLabeledBy(IUIAutomationElement9* This,IUIAutomationElement **retVal) {
    return This->lpVtbl->get_CachedLabeledBy(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedAriaRole(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaRole(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedAriaProperties(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedAriaProperties(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsDataValidForForm(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDataValidForForm(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedControllerFor(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedControllerFor(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedDescribedBy(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedDescribedBy(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedFlowsTo(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsTo(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedProviderDescription(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedProviderDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement9_GetClickablePoint(IUIAutomationElement9* This,POINT *clickable,WINBOOL *gotClickable) {
    return This->lpVtbl->GetClickablePoint(This,clickable,gotClickable);
}
/*** IUIAutomationElement2 methods ***/
static inline HRESULT IUIAutomationElement9_get_CurrentOptimizeForVisualContent(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedOptimizeForVisualContent(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedOptimizeForVisualContent(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentLiveSetting(IUIAutomationElement9* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CurrentLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedLiveSetting(IUIAutomationElement9* This,enum LiveSetting *retVal) {
    return This->lpVtbl->get_CachedLiveSetting(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentFlowsFrom(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentFlowsFrom(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedFlowsFrom(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedFlowsFrom(This,retVal);
}
/*** IUIAutomationElement3 methods ***/
static inline HRESULT IUIAutomationElement9_ShowContextMenu(IUIAutomationElement9* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
static inline HRESULT IUIAutomationElement9_get_CurrentIsPeripheral(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsPeripheral(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsPeripheral(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsPeripheral(This,retVal);
}
/*** IUIAutomationElement4 methods ***/
static inline HRESULT IUIAutomationElement9_get_CurrentPositionInSet(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CurrentPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentSizeOfSet(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CurrentSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentLevel(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CurrentLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentAnnotationTypes(IUIAutomationElement9* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CurrentAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentAnnotationObjects(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CurrentAnnotationObjects(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedPositionInSet(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CachedPositionInSet(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedSizeOfSet(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CachedSizeOfSet(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedLevel(IUIAutomationElement9* This,int *retVal) {
    return This->lpVtbl->get_CachedLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedAnnotationTypes(IUIAutomationElement9* This,SAFEARRAY **retVal) {
    return This->lpVtbl->get_CachedAnnotationTypes(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedAnnotationObjects(IUIAutomationElement9* This,IUIAutomationElementArray **retVal) {
    return This->lpVtbl->get_CachedAnnotationObjects(This,retVal);
}
/*** IUIAutomationElement5 methods ***/
static inline HRESULT IUIAutomationElement9_get_CurrentLandmarkType(IUIAutomationElement9* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CurrentLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CurrentLocalizedLandmarkType(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentLocalizedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedLandmarkType(IUIAutomationElement9* This,LANDMARKTYPEID *retVal) {
    return This->lpVtbl->get_CachedLandmarkType(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedLocalizedLandmarkType(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedLocalizedLandmarkType(This,retVal);
}
/*** IUIAutomationElement6 methods ***/
static inline HRESULT IUIAutomationElement9_get_CurrentFullDescription(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CurrentFullDescription(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedFullDescription(IUIAutomationElement9* This,BSTR *retVal) {
    return This->lpVtbl->get_CachedFullDescription(This,retVal);
}
/*** IUIAutomationElement7 methods ***/
static inline HRESULT IUIAutomationElement9_FindFirstWithOptions(IUIAutomationElement9* This,enum TreeScope scope,IUIAutomationCondition *condition,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstWithOptions(This,scope,condition,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement9_FindAllWithOptions(IUIAutomationElement9* This,enum TreeScope scope,IUIAutomationCondition *condition,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllWithOptions(This,scope,condition,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement9_FindFirstWithOptionsBuildCache(IUIAutomationElement9* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElement **found) {
    return This->lpVtbl->FindFirstWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement9_FindAllWithOptionsBuildCache(IUIAutomationElement9* This,enum TreeScope scope,IUIAutomationCondition *condition,IUIAutomationCacheRequest *cacheRequest,enum TreeTraversalOptions traversalOptions,IUIAutomationElement *root,IUIAutomationElementArray **found) {
    return This->lpVtbl->FindAllWithOptionsBuildCache(This,scope,condition,cacheRequest,traversalOptions,root,found);
}
static inline HRESULT IUIAutomationElement9_GetCurrentMetadataValue(IUIAutomationElement9* This,int targetId,METADATAID metadataId,VARIANT *returnVal) {
    return This->lpVtbl->GetCurrentMetadataValue(This,targetId,metadataId,returnVal);
}
/*** IUIAutomationElement8 methods ***/
static inline HRESULT IUIAutomationElement9_get_CurrentHeadingLevel(IUIAutomationElement9* This,HEADINGLEVELID *retVal) {
    return This->lpVtbl->get_CurrentHeadingLevel(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedHeadingLevel(IUIAutomationElement9* This,HEADINGLEVELID *retVal) {
    return This->lpVtbl->get_CachedHeadingLevel(This,retVal);
}
/*** IUIAutomationElement9 methods ***/
static inline HRESULT IUIAutomationElement9_get_CurrentIsDialog(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CurrentIsDialog(This,retVal);
}
static inline HRESULT IUIAutomationElement9_get_CachedIsDialog(IUIAutomationElement9* This,WINBOOL *retVal) {
    return This->lpVtbl->get_CachedIsDialog(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElement9_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationElementArray interface
 */
#ifndef __IUIAutomationElementArray_INTERFACE_DEFINED__
#define __IUIAutomationElementArray_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationElementArray, 0x14314595, 0xb4bc, 0x4055, 0x95,0xf2, 0x58,0xf2,0xe4,0x2c,0x98,0x55);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("14314595-b4bc-4055-95f2-58f2e42c9855")
IUIAutomationElementArray : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_Length(
        int *length) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetElement(
        int index,
        IUIAutomationElement **element) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationElementArray, 0x14314595, 0xb4bc, 0x4055, 0x95,0xf2, 0x58,0xf2,0xe4,0x2c,0x98,0x55)
#endif
#else
typedef struct IUIAutomationElementArrayVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationElementArray *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationElementArray *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationElementArray *This);

    /*** IUIAutomationElementArray methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Length)(
        IUIAutomationElementArray *This,
        int *length);

    HRESULT (STDMETHODCALLTYPE *GetElement)(
        IUIAutomationElementArray *This,
        int index,
        IUIAutomationElement **element);

    END_INTERFACE
} IUIAutomationElementArrayVtbl;

interface IUIAutomationElementArray {
    CONST_VTBL IUIAutomationElementArrayVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationElementArray_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationElementArray_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationElementArray_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationElementArray methods ***/
#define IUIAutomationElementArray_get_Length(This,length) (This)->lpVtbl->get_Length(This,length)
#define IUIAutomationElementArray_GetElement(This,index,element) (This)->lpVtbl->GetElement(This,index,element)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationElementArray_QueryInterface(IUIAutomationElementArray* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationElementArray_AddRef(IUIAutomationElementArray* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationElementArray_Release(IUIAutomationElementArray* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationElementArray methods ***/
static inline HRESULT IUIAutomationElementArray_get_Length(IUIAutomationElementArray* This,int *length) {
    return This->lpVtbl->get_Length(This,length);
}
static inline HRESULT IUIAutomationElementArray_GetElement(IUIAutomationElementArray* This,int index,IUIAutomationElement **element) {
    return This->lpVtbl->GetElement(This,index,element);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationElementArray_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationProxyFactory interface
 */
#ifndef __IUIAutomationProxyFactory_INTERFACE_DEFINED__
#define __IUIAutomationProxyFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationProxyFactory, 0x85b94ecd, 0x849d, 0x42b6, 0xb9,0x4d, 0xd6,0xdb,0x23,0xfd,0xf5,0xa4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("85b94ecd-849d-42b6-b94d-d6db23fdf5a4")
IUIAutomationProxyFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateProvider(
        UIA_HWND hwnd,
        LONG idObject,
        LONG idChild,
        IRawElementProviderSimple **provider) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ProxyFactoryId(
        BSTR *factoryId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationProxyFactory, 0x85b94ecd, 0x849d, 0x42b6, 0xb9,0x4d, 0xd6,0xdb,0x23,0xfd,0xf5,0xa4)
#endif
#else
typedef struct IUIAutomationProxyFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationProxyFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationProxyFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationProxyFactory *This);

    /*** IUIAutomationProxyFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateProvider)(
        IUIAutomationProxyFactory *This,
        UIA_HWND hwnd,
        LONG idObject,
        LONG idChild,
        IRawElementProviderSimple **provider);

    HRESULT (STDMETHODCALLTYPE *get_ProxyFactoryId)(
        IUIAutomationProxyFactory *This,
        BSTR *factoryId);

    END_INTERFACE
} IUIAutomationProxyFactoryVtbl;

interface IUIAutomationProxyFactory {
    CONST_VTBL IUIAutomationProxyFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationProxyFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationProxyFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationProxyFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationProxyFactory methods ***/
#define IUIAutomationProxyFactory_CreateProvider(This,hwnd,idObject,idChild,provider) (This)->lpVtbl->CreateProvider(This,hwnd,idObject,idChild,provider)
#define IUIAutomationProxyFactory_get_ProxyFactoryId(This,factoryId) (This)->lpVtbl->get_ProxyFactoryId(This,factoryId)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationProxyFactory_QueryInterface(IUIAutomationProxyFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationProxyFactory_AddRef(IUIAutomationProxyFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationProxyFactory_Release(IUIAutomationProxyFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationProxyFactory methods ***/
static inline HRESULT IUIAutomationProxyFactory_CreateProvider(IUIAutomationProxyFactory* This,UIA_HWND hwnd,LONG idObject,LONG idChild,IRawElementProviderSimple **provider) {
    return This->lpVtbl->CreateProvider(This,hwnd,idObject,idChild,provider);
}
static inline HRESULT IUIAutomationProxyFactory_get_ProxyFactoryId(IUIAutomationProxyFactory* This,BSTR *factoryId) {
    return This->lpVtbl->get_ProxyFactoryId(This,factoryId);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationProxyFactory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationProxyFactoryEntry interface
 */
#ifndef __IUIAutomationProxyFactoryEntry_INTERFACE_DEFINED__
#define __IUIAutomationProxyFactoryEntry_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationProxyFactoryEntry, 0xd50e472e, 0xb64b, 0x490c, 0xbc,0xa1, 0xd3,0x06,0x96,0xf9,0xf2,0x89);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d50e472e-b64b-490c-bca1-d30696f9f289")
IUIAutomationProxyFactoryEntry : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_ProxyFactory(
        IUIAutomationProxyFactory **factory) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ClassName(
        BSTR *className) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ImageName(
        BSTR *imageName) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AllowSubstringMatch(
        WINBOOL *allowSubstringMatch) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CanCheckBaseClass(
        WINBOOL *canCheckBaseClass) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NeedsAdviseEvents(
        WINBOOL *adviseEvents) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ClassName(
        LPCWSTR className) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ImageName(
        LPCWSTR imageName) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AllowSubstringMatch(
        WINBOOL allowSubstringMatch) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CanCheckBaseClass(
        WINBOOL canCheckBaseClass) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_NeedsAdviseEvents(
        WINBOOL adviseEvents) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWinEventsForAutomationEvent(
        EVENTID eventId,
        PROPERTYID propertyId,
        SAFEARRAY *winEvents) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWinEventsForAutomationEvent(
        EVENTID eventId,
        PROPERTYID propertyId,
        SAFEARRAY **winEvents) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationProxyFactoryEntry, 0xd50e472e, 0xb64b, 0x490c, 0xbc,0xa1, 0xd3,0x06,0x96,0xf9,0xf2,0x89)
#endif
#else
typedef struct IUIAutomationProxyFactoryEntryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationProxyFactoryEntry *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationProxyFactoryEntry *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationProxyFactoryEntry *This);

    /*** IUIAutomationProxyFactoryEntry methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ProxyFactory)(
        IUIAutomationProxyFactoryEntry *This,
        IUIAutomationProxyFactory **factory);

    HRESULT (STDMETHODCALLTYPE *get_ClassName)(
        IUIAutomationProxyFactoryEntry *This,
        BSTR *className);

    HRESULT (STDMETHODCALLTYPE *get_ImageName)(
        IUIAutomationProxyFactoryEntry *This,
        BSTR *imageName);

    HRESULT (STDMETHODCALLTYPE *get_AllowSubstringMatch)(
        IUIAutomationProxyFactoryEntry *This,
        WINBOOL *allowSubstringMatch);

    HRESULT (STDMETHODCALLTYPE *get_CanCheckBaseClass)(
        IUIAutomationProxyFactoryEntry *This,
        WINBOOL *canCheckBaseClass);

    HRESULT (STDMETHODCALLTYPE *get_NeedsAdviseEvents)(
        IUIAutomationProxyFactoryEntry *This,
        WINBOOL *adviseEvents);

    HRESULT (STDMETHODCALLTYPE *put_ClassName)(
        IUIAutomationProxyFactoryEntry *This,
        LPCWSTR className);

    HRESULT (STDMETHODCALLTYPE *put_ImageName)(
        IUIAutomationProxyFactoryEntry *This,
        LPCWSTR imageName);

    HRESULT (STDMETHODCALLTYPE *put_AllowSubstringMatch)(
        IUIAutomationProxyFactoryEntry *This,
        WINBOOL allowSubstringMatch);

    HRESULT (STDMETHODCALLTYPE *put_CanCheckBaseClass)(
        IUIAutomationProxyFactoryEntry *This,
        WINBOOL canCheckBaseClass);

    HRESULT (STDMETHODCALLTYPE *put_NeedsAdviseEvents)(
        IUIAutomationProxyFactoryEntry *This,
        WINBOOL adviseEvents);

    HRESULT (STDMETHODCALLTYPE *SetWinEventsForAutomationEvent)(
        IUIAutomationProxyFactoryEntry *This,
        EVENTID eventId,
        PROPERTYID propertyId,
        SAFEARRAY *winEvents);

    HRESULT (STDMETHODCALLTYPE *GetWinEventsForAutomationEvent)(
        IUIAutomationProxyFactoryEntry *This,
        EVENTID eventId,
        PROPERTYID propertyId,
        SAFEARRAY **winEvents);

    END_INTERFACE
} IUIAutomationProxyFactoryEntryVtbl;

interface IUIAutomationProxyFactoryEntry {
    CONST_VTBL IUIAutomationProxyFactoryEntryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationProxyFactoryEntry_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationProxyFactoryEntry_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationProxyFactoryEntry_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationProxyFactoryEntry methods ***/
#define IUIAutomationProxyFactoryEntry_get_ProxyFactory(This,factory) (This)->lpVtbl->get_ProxyFactory(This,factory)
#define IUIAutomationProxyFactoryEntry_get_ClassName(This,className) (This)->lpVtbl->get_ClassName(This,className)
#define IUIAutomationProxyFactoryEntry_get_ImageName(This,imageName) (This)->lpVtbl->get_ImageName(This,imageName)
#define IUIAutomationProxyFactoryEntry_get_AllowSubstringMatch(This,allowSubstringMatch) (This)->lpVtbl->get_AllowSubstringMatch(This,allowSubstringMatch)
#define IUIAutomationProxyFactoryEntry_get_CanCheckBaseClass(This,canCheckBaseClass) (This)->lpVtbl->get_CanCheckBaseClass(This,canCheckBaseClass)
#define IUIAutomationProxyFactoryEntry_get_NeedsAdviseEvents(This,adviseEvents) (This)->lpVtbl->get_NeedsAdviseEvents(This,adviseEvents)
#define IUIAutomationProxyFactoryEntry_put_ClassName(This,className) (This)->lpVtbl->put_ClassName(This,className)
#define IUIAutomationProxyFactoryEntry_put_ImageName(This,imageName) (This)->lpVtbl->put_ImageName(This,imageName)
#define IUIAutomationProxyFactoryEntry_put_AllowSubstringMatch(This,allowSubstringMatch) (This)->lpVtbl->put_AllowSubstringMatch(This,allowSubstringMatch)
#define IUIAutomationProxyFactoryEntry_put_CanCheckBaseClass(This,canCheckBaseClass) (This)->lpVtbl->put_CanCheckBaseClass(This,canCheckBaseClass)
#define IUIAutomationProxyFactoryEntry_put_NeedsAdviseEvents(This,adviseEvents) (This)->lpVtbl->put_NeedsAdviseEvents(This,adviseEvents)
#define IUIAutomationProxyFactoryEntry_SetWinEventsForAutomationEvent(This,eventId,propertyId,winEvents) (This)->lpVtbl->SetWinEventsForAutomationEvent(This,eventId,propertyId,winEvents)
#define IUIAutomationProxyFactoryEntry_GetWinEventsForAutomationEvent(This,eventId,propertyId,winEvents) (This)->lpVtbl->GetWinEventsForAutomationEvent(This,eventId,propertyId,winEvents)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationProxyFactoryEntry_QueryInterface(IUIAutomationProxyFactoryEntry* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationProxyFactoryEntry_AddRef(IUIAutomationProxyFactoryEntry* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationProxyFactoryEntry_Release(IUIAutomationProxyFactoryEntry* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationProxyFactoryEntry methods ***/
static inline HRESULT IUIAutomationProxyFactoryEntry_get_ProxyFactory(IUIAutomationProxyFactoryEntry* This,IUIAutomationProxyFactory **factory) {
    return This->lpVtbl->get_ProxyFactory(This,factory);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_get_ClassName(IUIAutomationProxyFactoryEntry* This,BSTR *className) {
    return This->lpVtbl->get_ClassName(This,className);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_get_ImageName(IUIAutomationProxyFactoryEntry* This,BSTR *imageName) {
    return This->lpVtbl->get_ImageName(This,imageName);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_get_AllowSubstringMatch(IUIAutomationProxyFactoryEntry* This,WINBOOL *allowSubstringMatch) {
    return This->lpVtbl->get_AllowSubstringMatch(This,allowSubstringMatch);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_get_CanCheckBaseClass(IUIAutomationProxyFactoryEntry* This,WINBOOL *canCheckBaseClass) {
    return This->lpVtbl->get_CanCheckBaseClass(This,canCheckBaseClass);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_get_NeedsAdviseEvents(IUIAutomationProxyFactoryEntry* This,WINBOOL *adviseEvents) {
    return This->lpVtbl->get_NeedsAdviseEvents(This,adviseEvents);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_put_ClassName(IUIAutomationProxyFactoryEntry* This,LPCWSTR className) {
    return This->lpVtbl->put_ClassName(This,className);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_put_ImageName(IUIAutomationProxyFactoryEntry* This,LPCWSTR imageName) {
    return This->lpVtbl->put_ImageName(This,imageName);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_put_AllowSubstringMatch(IUIAutomationProxyFactoryEntry* This,WINBOOL allowSubstringMatch) {
    return This->lpVtbl->put_AllowSubstringMatch(This,allowSubstringMatch);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_put_CanCheckBaseClass(IUIAutomationProxyFactoryEntry* This,WINBOOL canCheckBaseClass) {
    return This->lpVtbl->put_CanCheckBaseClass(This,canCheckBaseClass);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_put_NeedsAdviseEvents(IUIAutomationProxyFactoryEntry* This,WINBOOL adviseEvents) {
    return This->lpVtbl->put_NeedsAdviseEvents(This,adviseEvents);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_SetWinEventsForAutomationEvent(IUIAutomationProxyFactoryEntry* This,EVENTID eventId,PROPERTYID propertyId,SAFEARRAY *winEvents) {
    return This->lpVtbl->SetWinEventsForAutomationEvent(This,eventId,propertyId,winEvents);
}
static inline HRESULT IUIAutomationProxyFactoryEntry_GetWinEventsForAutomationEvent(IUIAutomationProxyFactoryEntry* This,EVENTID eventId,PROPERTYID propertyId,SAFEARRAY **winEvents) {
    return This->lpVtbl->GetWinEventsForAutomationEvent(This,eventId,propertyId,winEvents);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationProxyFactoryEntry_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationProxyFactoryMapping interface
 */
#ifndef __IUIAutomationProxyFactoryMapping_INTERFACE_DEFINED__
#define __IUIAutomationProxyFactoryMapping_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationProxyFactoryMapping, 0x09e31e18, 0x872d, 0x4873, 0x93,0xd1, 0x1e,0x54,0x1e,0xc1,0x33,0xfd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("09e31e18-872d-4873-93d1-1e541ec133fd")
IUIAutomationProxyFactoryMapping : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        UINT *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTable(
        SAFEARRAY **table) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEntry(
        UINT index,
        IUIAutomationProxyFactoryEntry **entry) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTable(
        SAFEARRAY *factoryList) = 0;

    virtual HRESULT STDMETHODCALLTYPE InsertEntries(
        UINT before,
        SAFEARRAY *factoryList) = 0;

    virtual HRESULT STDMETHODCALLTYPE InsertEntry(
        UINT before,
        IUIAutomationProxyFactoryEntry *factory) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveEntry(
        UINT index) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearTable(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestoreDefaultTable(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationProxyFactoryMapping, 0x09e31e18, 0x872d, 0x4873, 0x93,0xd1, 0x1e,0x54,0x1e,0xc1,0x33,0xfd)
#endif
#else
typedef struct IUIAutomationProxyFactoryMappingVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationProxyFactoryMapping *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationProxyFactoryMapping *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationProxyFactoryMapping *This);

    /*** IUIAutomationProxyFactoryMapping methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IUIAutomationProxyFactoryMapping *This,
        UINT *count);

    HRESULT (STDMETHODCALLTYPE *GetTable)(
        IUIAutomationProxyFactoryMapping *This,
        SAFEARRAY **table);

    HRESULT (STDMETHODCALLTYPE *GetEntry)(
        IUIAutomationProxyFactoryMapping *This,
        UINT index,
        IUIAutomationProxyFactoryEntry **entry);

    HRESULT (STDMETHODCALLTYPE *SetTable)(
        IUIAutomationProxyFactoryMapping *This,
        SAFEARRAY *factoryList);

    HRESULT (STDMETHODCALLTYPE *InsertEntries)(
        IUIAutomationProxyFactoryMapping *This,
        UINT before,
        SAFEARRAY *factoryList);

    HRESULT (STDMETHODCALLTYPE *InsertEntry)(
        IUIAutomationProxyFactoryMapping *This,
        UINT before,
        IUIAutomationProxyFactoryEntry *factory);

    HRESULT (STDMETHODCALLTYPE *RemoveEntry)(
        IUIAutomationProxyFactoryMapping *This,
        UINT index);

    HRESULT (STDMETHODCALLTYPE *ClearTable)(
        IUIAutomationProxyFactoryMapping *This);

    HRESULT (STDMETHODCALLTYPE *RestoreDefaultTable)(
        IUIAutomationProxyFactoryMapping *This);

    END_INTERFACE
} IUIAutomationProxyFactoryMappingVtbl;

interface IUIAutomationProxyFactoryMapping {
    CONST_VTBL IUIAutomationProxyFactoryMappingVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationProxyFactoryMapping_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationProxyFactoryMapping_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationProxyFactoryMapping_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationProxyFactoryMapping methods ***/
#define IUIAutomationProxyFactoryMapping_get_Count(This,count) (This)->lpVtbl->get_Count(This,count)
#define IUIAutomationProxyFactoryMapping_GetTable(This,table) (This)->lpVtbl->GetTable(This,table)
#define IUIAutomationProxyFactoryMapping_GetEntry(This,index,entry) (This)->lpVtbl->GetEntry(This,index,entry)
#define IUIAutomationProxyFactoryMapping_SetTable(This,factoryList) (This)->lpVtbl->SetTable(This,factoryList)
#define IUIAutomationProxyFactoryMapping_InsertEntries(This,before,factoryList) (This)->lpVtbl->InsertEntries(This,before,factoryList)
#define IUIAutomationProxyFactoryMapping_InsertEntry(This,before,factory) (This)->lpVtbl->InsertEntry(This,before,factory)
#define IUIAutomationProxyFactoryMapping_RemoveEntry(This,index) (This)->lpVtbl->RemoveEntry(This,index)
#define IUIAutomationProxyFactoryMapping_ClearTable(This) (This)->lpVtbl->ClearTable(This)
#define IUIAutomationProxyFactoryMapping_RestoreDefaultTable(This) (This)->lpVtbl->RestoreDefaultTable(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationProxyFactoryMapping_QueryInterface(IUIAutomationProxyFactoryMapping* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationProxyFactoryMapping_AddRef(IUIAutomationProxyFactoryMapping* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationProxyFactoryMapping_Release(IUIAutomationProxyFactoryMapping* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationProxyFactoryMapping methods ***/
static inline HRESULT IUIAutomationProxyFactoryMapping_get_Count(IUIAutomationProxyFactoryMapping* This,UINT *count) {
    return This->lpVtbl->get_Count(This,count);
}
static inline HRESULT IUIAutomationProxyFactoryMapping_GetTable(IUIAutomationProxyFactoryMapping* This,SAFEARRAY **table) {
    return This->lpVtbl->GetTable(This,table);
}
static inline HRESULT IUIAutomationProxyFactoryMapping_GetEntry(IUIAutomationProxyFactoryMapping* This,UINT index,IUIAutomationProxyFactoryEntry **entry) {
    return This->lpVtbl->GetEntry(This,index,entry);
}
static inline HRESULT IUIAutomationProxyFactoryMapping_SetTable(IUIAutomationProxyFactoryMapping* This,SAFEARRAY *factoryList) {
    return This->lpVtbl->SetTable(This,factoryList);
}
static inline HRESULT IUIAutomationProxyFactoryMapping_InsertEntries(IUIAutomationProxyFactoryMapping* This,UINT before,SAFEARRAY *factoryList) {
    return This->lpVtbl->InsertEntries(This,before,factoryList);
}
static inline HRESULT IUIAutomationProxyFactoryMapping_InsertEntry(IUIAutomationProxyFactoryMapping* This,UINT before,IUIAutomationProxyFactoryEntry *factory) {
    return This->lpVtbl->InsertEntry(This,before,factory);
}
static inline HRESULT IUIAutomationProxyFactoryMapping_RemoveEntry(IUIAutomationProxyFactoryMapping* This,UINT index) {
    return This->lpVtbl->RemoveEntry(This,index);
}
static inline HRESULT IUIAutomationProxyFactoryMapping_ClearTable(IUIAutomationProxyFactoryMapping* This) {
    return This->lpVtbl->ClearTable(This);
}
static inline HRESULT IUIAutomationProxyFactoryMapping_RestoreDefaultTable(IUIAutomationProxyFactoryMapping* This) {
    return This->lpVtbl->RestoreDefaultTable(This);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationProxyFactoryMapping_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationEventHandlerGroup interface
 */
#ifndef __IUIAutomationEventHandlerGroup_INTERFACE_DEFINED__
#define __IUIAutomationEventHandlerGroup_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationEventHandlerGroup, 0xc9ee12f2, 0xc13b, 0x4408, 0x99,0x7c, 0x63,0x99,0x14,0x37,0x7f,0x4e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c9ee12f2-c13b-4408-997c-639914377f4e")
IUIAutomationEventHandlerGroup : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddActiveTextPositionChangedEventHandler(
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationActiveTextPositionChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddAutomationEventHandler(
        EVENTID eventId,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddChangesEventHandler(
        enum TreeScope scope,
        int *changeTypes,
        int changesCount,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationChangesEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddNotificationEventHandler(
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationNotificationEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPropertyChangedEventHandler(
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddStructureChangedEventHandler(
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddTextEditTextChangedEventHandler(
        enum TreeScope scope,
        enum TextEditChangeType textEditChangeType,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationTextEditTextChangedEventHandler *handler) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationEventHandlerGroup, 0xc9ee12f2, 0xc13b, 0x4408, 0x99,0x7c, 0x63,0x99,0x14,0x37,0x7f,0x4e)
#endif
#else
typedef struct IUIAutomationEventHandlerGroupVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationEventHandlerGroup *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationEventHandlerGroup *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationEventHandlerGroup *This);

    /*** IUIAutomationEventHandlerGroup methods ***/
    HRESULT (STDMETHODCALLTYPE *AddActiveTextPositionChangedEventHandler)(
        IUIAutomationEventHandlerGroup *This,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationActiveTextPositionChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddAutomationEventHandler)(
        IUIAutomationEventHandlerGroup *This,
        EVENTID eventId,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddChangesEventHandler)(
        IUIAutomationEventHandlerGroup *This,
        enum TreeScope scope,
        int *changeTypes,
        int changesCount,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationChangesEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddNotificationEventHandler)(
        IUIAutomationEventHandlerGroup *This,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationNotificationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandler)(
        IUIAutomationEventHandlerGroup *This,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount);

    HRESULT (STDMETHODCALLTYPE *AddStructureChangedEventHandler)(
        IUIAutomationEventHandlerGroup *This,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddTextEditTextChangedEventHandler)(
        IUIAutomationEventHandlerGroup *This,
        enum TreeScope scope,
        enum TextEditChangeType textEditChangeType,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    END_INTERFACE
} IUIAutomationEventHandlerGroupVtbl;

interface IUIAutomationEventHandlerGroup {
    CONST_VTBL IUIAutomationEventHandlerGroupVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationEventHandlerGroup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationEventHandlerGroup_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationEventHandlerGroup_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationEventHandlerGroup methods ***/
#define IUIAutomationEventHandlerGroup_AddActiveTextPositionChangedEventHandler(This,scope,cacheRequest,handler) (This)->lpVtbl->AddActiveTextPositionChangedEventHandler(This,scope,cacheRequest,handler)
#define IUIAutomationEventHandlerGroup_AddAutomationEventHandler(This,eventId,scope,cacheRequest,handler) (This)->lpVtbl->AddAutomationEventHandler(This,eventId,scope,cacheRequest,handler)
#define IUIAutomationEventHandlerGroup_AddChangesEventHandler(This,scope,changeTypes,changesCount,cacheRequest,handler) (This)->lpVtbl->AddChangesEventHandler(This,scope,changeTypes,changesCount,cacheRequest,handler)
#define IUIAutomationEventHandlerGroup_AddNotificationEventHandler(This,scope,cacheRequest,handler) (This)->lpVtbl->AddNotificationEventHandler(This,scope,cacheRequest,handler)
#define IUIAutomationEventHandlerGroup_AddPropertyChangedEventHandler(This,scope,cacheRequest,handler,propertyArray,propertyCount) (This)->lpVtbl->AddPropertyChangedEventHandler(This,scope,cacheRequest,handler,propertyArray,propertyCount)
#define IUIAutomationEventHandlerGroup_AddStructureChangedEventHandler(This,scope,cacheRequest,handler) (This)->lpVtbl->AddStructureChangedEventHandler(This,scope,cacheRequest,handler)
#define IUIAutomationEventHandlerGroup_AddTextEditTextChangedEventHandler(This,scope,textEditChangeType,cacheRequest,handler) (This)->lpVtbl->AddTextEditTextChangedEventHandler(This,scope,textEditChangeType,cacheRequest,handler)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationEventHandlerGroup_QueryInterface(IUIAutomationEventHandlerGroup* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationEventHandlerGroup_AddRef(IUIAutomationEventHandlerGroup* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationEventHandlerGroup_Release(IUIAutomationEventHandlerGroup* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationEventHandlerGroup methods ***/
static inline HRESULT IUIAutomationEventHandlerGroup_AddActiveTextPositionChangedEventHandler(IUIAutomationEventHandlerGroup* This,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationActiveTextPositionChangedEventHandler *handler) {
    return This->lpVtbl->AddActiveTextPositionChangedEventHandler(This,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomationEventHandlerGroup_AddAutomationEventHandler(IUIAutomationEventHandlerGroup* This,EVENTID eventId,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->AddAutomationEventHandler(This,eventId,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomationEventHandlerGroup_AddChangesEventHandler(IUIAutomationEventHandlerGroup* This,enum TreeScope scope,int *changeTypes,int changesCount,IUIAutomationCacheRequest *cacheRequest,IUIAutomationChangesEventHandler *handler) {
    return This->lpVtbl->AddChangesEventHandler(This,scope,changeTypes,changesCount,cacheRequest,handler);
}
static inline HRESULT IUIAutomationEventHandlerGroup_AddNotificationEventHandler(IUIAutomationEventHandlerGroup* This,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationNotificationEventHandler *handler) {
    return This->lpVtbl->AddNotificationEventHandler(This,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomationEventHandlerGroup_AddPropertyChangedEventHandler(IUIAutomationEventHandlerGroup* This,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,PROPERTYID *propertyArray,int propertyCount) {
    return This->lpVtbl->AddPropertyChangedEventHandler(This,scope,cacheRequest,handler,propertyArray,propertyCount);
}
static inline HRESULT IUIAutomationEventHandlerGroup_AddStructureChangedEventHandler(IUIAutomationEventHandlerGroup* This,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->AddStructureChangedEventHandler(This,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomationEventHandlerGroup_AddTextEditTextChangedEventHandler(IUIAutomationEventHandlerGroup* This,enum TreeScope scope,enum TextEditChangeType textEditChangeType,IUIAutomationCacheRequest *cacheRequest,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->AddTextEditTextChangedEventHandler(This,scope,textEditChangeType,cacheRequest,handler);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationEventHandlerGroup_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomation interface
 */
#ifndef __IUIAutomation_INTERFACE_DEFINED__
#define __IUIAutomation_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomation, 0x30cbe57d, 0xd9d0, 0x452a, 0xab,0x13, 0x7a,0xc5,0xac,0x48,0x25,0xee);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("30cbe57d-d9d0-452a-ab13-7ac5ac4825ee")
IUIAutomation : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CompareElements(
        IUIAutomationElement *el1,
        IUIAutomationElement *el2,
        WINBOOL *areSame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CompareRuntimeIds(
        SAFEARRAY *runtimeId1,
        SAFEARRAY *runtimeId2,
        WINBOOL *areSame) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRootElement(
        IUIAutomationElement **root) = 0;

    virtual HRESULT STDMETHODCALLTYPE ElementFromHandle(
        UIA_HWND hwnd,
        IUIAutomationElement **element) = 0;

    virtual HRESULT STDMETHODCALLTYPE ElementFromPoint(
        POINT pt,
        IUIAutomationElement **element) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFocusedElement(
        IUIAutomationElement **element) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRootElementBuildCache(
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **root) = 0;

    virtual HRESULT STDMETHODCALLTYPE ElementFromHandleBuildCache(
        UIA_HWND hwnd,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element) = 0;

    virtual HRESULT STDMETHODCALLTYPE ElementFromPointBuildCache(
        POINT pt,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFocusedElementBuildCache(
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTreeWalker(
        IUIAutomationCondition *pCondition,
        IUIAutomationTreeWalker **walker) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ControlViewWalker(
        IUIAutomationTreeWalker **walker) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ContentViewWalker(
        IUIAutomationTreeWalker **walker) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RawViewWalker(
        IUIAutomationTreeWalker **walker) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RawViewCondition(
        IUIAutomationCondition **condition) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ControlViewCondition(
        IUIAutomationCondition **condition) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ContentViewCondition(
        IUIAutomationCondition **condition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateCacheRequest(
        IUIAutomationCacheRequest **cacheRequest) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTrueCondition(
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateFalseCondition(
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePropertyCondition(
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePropertyConditionEx(
        PROPERTYID propertyId,
        VARIANT value,
        enum PropertyConditionFlags flags,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAndCondition(
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAndConditionFromArray(
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAndConditionFromNativeArray(
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateOrCondition(
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateOrConditionFromArray(
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateOrConditionFromNativeArray(
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateNotCondition(
        IUIAutomationCondition *condition,
        IUIAutomationCondition **newCondition) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddAutomationEventHandler(
        EVENTID eventId,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAutomationEventHandler(
        EVENTID eventId,
        IUIAutomationElement *element,
        IUIAutomationEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPropertyChangedEventHandlerNativeArray(
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPropertyChangedEventHandler(
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        SAFEARRAY *propertyArray) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemovePropertyChangedEventHandler(
        IUIAutomationElement *element,
        IUIAutomationPropertyChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddStructureChangedEventHandler(
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveStructureChangedEventHandler(
        IUIAutomationElement *element,
        IUIAutomationStructureChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddFocusChangedEventHandler(
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationFocusChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveFocusChangedEventHandler(
        IUIAutomationFocusChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAllEventHandlers(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE IntNativeArrayToSafeArray(
        int *array,
        int arrayCount,
        SAFEARRAY **safeArray) = 0;

    virtual HRESULT STDMETHODCALLTYPE IntSafeArrayToNativeArray(
        SAFEARRAY *intArray,
        int **array,
        int *arrayCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE RectToVariant(
        RECT rc,
        VARIANT *var) = 0;

    virtual HRESULT STDMETHODCALLTYPE VariantToRect(
        VARIANT var,
        RECT *rc) = 0;

    virtual HRESULT STDMETHODCALLTYPE SafeArrayToRectNativeArray(
        SAFEARRAY *rects,
        RECT **rectArray,
        int *rectArrayCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateProxyFactoryEntry(
        IUIAutomationProxyFactory *factory,
        IUIAutomationProxyFactoryEntry **factoryEntry) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ProxyFactoryMapping(
        IUIAutomationProxyFactoryMapping **factoryMapping) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyProgrammaticName(
        PROPERTYID property,
        BSTR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPatternProgrammaticName(
        PATTERNID pattern,
        BSTR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE PollForPotentialSupportedPatterns(
        IUIAutomationElement *pElement,
        SAFEARRAY **patternIds,
        SAFEARRAY **patternNames) = 0;

    virtual HRESULT STDMETHODCALLTYPE PollForPotentialSupportedProperties(
        IUIAutomationElement *pElement,
        SAFEARRAY **propertyIds,
        SAFEARRAY **propertyNames) = 0;

    virtual HRESULT STDMETHODCALLTYPE CheckNotSupported(
        VARIANT value,
        WINBOOL *isNotSupported) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ReservedNotSupportedValue(
        IUnknown **notSupportedValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ReservedMixedAttributeValue(
        IUnknown **mixedAttributeValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE ElementFromIAccessible(
        IAccessible *accessible,
        int childId,
        IUIAutomationElement **element) = 0;

    virtual HRESULT STDMETHODCALLTYPE ElementFromIAccessibleBuildCache(
        IAccessible *accessible,
        int childId,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomation, 0x30cbe57d, 0xd9d0, 0x452a, 0xab,0x13, 0x7a,0xc5,0xac,0x48,0x25,0xee)
#endif
#else
typedef struct IUIAutomationVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomation *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomation *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomation *This);

    /*** IUIAutomation methods ***/
    HRESULT (STDMETHODCALLTYPE *CompareElements)(
        IUIAutomation *This,
        IUIAutomationElement *el1,
        IUIAutomationElement *el2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *CompareRuntimeIds)(
        IUIAutomation *This,
        SAFEARRAY *runtimeId1,
        SAFEARRAY *runtimeId2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *GetRootElement)(
        IUIAutomation *This,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandle)(
        IUIAutomation *This,
        UIA_HWND hwnd,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPoint)(
        IUIAutomation *This,
        POINT pt,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElement)(
        IUIAutomation *This,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetRootElementBuildCache)(
        IUIAutomation *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandleBuildCache)(
        IUIAutomation *This,
        UIA_HWND hwnd,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPointBuildCache)(
        IUIAutomation *This,
        POINT pt,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElementBuildCache)(
        IUIAutomation *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *CreateTreeWalker)(
        IUIAutomation *This,
        IUIAutomationCondition *pCondition,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewWalker)(
        IUIAutomation *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewWalker)(
        IUIAutomation *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewWalker)(
        IUIAutomation *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewCondition)(
        IUIAutomation *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewCondition)(
        IUIAutomation *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewCondition)(
        IUIAutomation *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *CreateCacheRequest)(
        IUIAutomation *This,
        IUIAutomationCacheRequest **cacheRequest);

    HRESULT (STDMETHODCALLTYPE *CreateTrueCondition)(
        IUIAutomation *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateFalseCondition)(
        IUIAutomation *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyCondition)(
        IUIAutomation *This,
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyConditionEx)(
        IUIAutomation *This,
        PROPERTYID propertyId,
        VARIANT value,
        enum PropertyConditionFlags flags,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndCondition)(
        IUIAutomation *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromArray)(
        IUIAutomation *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromNativeArray)(
        IUIAutomation *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrCondition)(
        IUIAutomation *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromArray)(
        IUIAutomation *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromNativeArray)(
        IUIAutomation *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateNotCondition)(
        IUIAutomation *This,
        IUIAutomationCondition *condition,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *AddAutomationEventHandler)(
        IUIAutomation *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAutomationEventHandler)(
        IUIAutomation *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandlerNativeArray)(
        IUIAutomation *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandler)(
        IUIAutomation *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        SAFEARRAY *propertyArray);

    HRESULT (STDMETHODCALLTYPE *RemovePropertyChangedEventHandler)(
        IUIAutomation *This,
        IUIAutomationElement *element,
        IUIAutomationPropertyChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddStructureChangedEventHandler)(
        IUIAutomation *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveStructureChangedEventHandler)(
        IUIAutomation *This,
        IUIAutomationElement *element,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddFocusChangedEventHandler)(
        IUIAutomation *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveFocusChangedEventHandler)(
        IUIAutomation *This,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAllEventHandlers)(
        IUIAutomation *This);

    HRESULT (STDMETHODCALLTYPE *IntNativeArrayToSafeArray)(
        IUIAutomation *This,
        int *array,
        int arrayCount,
        SAFEARRAY **safeArray);

    HRESULT (STDMETHODCALLTYPE *IntSafeArrayToNativeArray)(
        IUIAutomation *This,
        SAFEARRAY *intArray,
        int **array,
        int *arrayCount);

    HRESULT (STDMETHODCALLTYPE *RectToVariant)(
        IUIAutomation *This,
        RECT rc,
        VARIANT *var);

    HRESULT (STDMETHODCALLTYPE *VariantToRect)(
        IUIAutomation *This,
        VARIANT var,
        RECT *rc);

    HRESULT (STDMETHODCALLTYPE *SafeArrayToRectNativeArray)(
        IUIAutomation *This,
        SAFEARRAY *rects,
        RECT **rectArray,
        int *rectArrayCount);

    HRESULT (STDMETHODCALLTYPE *CreateProxyFactoryEntry)(
        IUIAutomation *This,
        IUIAutomationProxyFactory *factory,
        IUIAutomationProxyFactoryEntry **factoryEntry);

    HRESULT (STDMETHODCALLTYPE *get_ProxyFactoryMapping)(
        IUIAutomation *This,
        IUIAutomationProxyFactoryMapping **factoryMapping);

    HRESULT (STDMETHODCALLTYPE *GetPropertyProgrammaticName)(
        IUIAutomation *This,
        PROPERTYID property,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *GetPatternProgrammaticName)(
        IUIAutomation *This,
        PATTERNID pattern,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedPatterns)(
        IUIAutomation *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **patternIds,
        SAFEARRAY **patternNames);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedProperties)(
        IUIAutomation *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **propertyIds,
        SAFEARRAY **propertyNames);

    HRESULT (STDMETHODCALLTYPE *CheckNotSupported)(
        IUIAutomation *This,
        VARIANT value,
        WINBOOL *isNotSupported);

    HRESULT (STDMETHODCALLTYPE *get_ReservedNotSupportedValue)(
        IUIAutomation *This,
        IUnknown **notSupportedValue);

    HRESULT (STDMETHODCALLTYPE *get_ReservedMixedAttributeValue)(
        IUIAutomation *This,
        IUnknown **mixedAttributeValue);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessible)(
        IUIAutomation *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessibleBuildCache)(
        IUIAutomation *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    END_INTERFACE
} IUIAutomationVtbl;

interface IUIAutomation {
    CONST_VTBL IUIAutomationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomation_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomation_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomation methods ***/
#define IUIAutomation_CompareElements(This,el1,el2,areSame) (This)->lpVtbl->CompareElements(This,el1,el2,areSame)
#define IUIAutomation_CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame) (This)->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame)
#define IUIAutomation_GetRootElement(This,root) (This)->lpVtbl->GetRootElement(This,root)
#define IUIAutomation_ElementFromHandle(This,hwnd,element) (This)->lpVtbl->ElementFromHandle(This,hwnd,element)
#define IUIAutomation_ElementFromPoint(This,pt,element) (This)->lpVtbl->ElementFromPoint(This,pt,element)
#define IUIAutomation_GetFocusedElement(This,element) (This)->lpVtbl->GetFocusedElement(This,element)
#define IUIAutomation_GetRootElementBuildCache(This,cacheRequest,root) (This)->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root)
#define IUIAutomation_ElementFromHandleBuildCache(This,hwnd,cacheRequest,element) (This)->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element)
#define IUIAutomation_ElementFromPointBuildCache(This,pt,cacheRequest,element) (This)->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element)
#define IUIAutomation_GetFocusedElementBuildCache(This,cacheRequest,element) (This)->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element)
#define IUIAutomation_CreateTreeWalker(This,pCondition,walker) (This)->lpVtbl->CreateTreeWalker(This,pCondition,walker)
#define IUIAutomation_get_ControlViewWalker(This,walker) (This)->lpVtbl->get_ControlViewWalker(This,walker)
#define IUIAutomation_get_ContentViewWalker(This,walker) (This)->lpVtbl->get_ContentViewWalker(This,walker)
#define IUIAutomation_get_RawViewWalker(This,walker) (This)->lpVtbl->get_RawViewWalker(This,walker)
#define IUIAutomation_get_RawViewCondition(This,condition) (This)->lpVtbl->get_RawViewCondition(This,condition)
#define IUIAutomation_get_ControlViewCondition(This,condition) (This)->lpVtbl->get_ControlViewCondition(This,condition)
#define IUIAutomation_get_ContentViewCondition(This,condition) (This)->lpVtbl->get_ContentViewCondition(This,condition)
#define IUIAutomation_CreateCacheRequest(This,cacheRequest) (This)->lpVtbl->CreateCacheRequest(This,cacheRequest)
#define IUIAutomation_CreateTrueCondition(This,newCondition) (This)->lpVtbl->CreateTrueCondition(This,newCondition)
#define IUIAutomation_CreateFalseCondition(This,newCondition) (This)->lpVtbl->CreateFalseCondition(This,newCondition)
#define IUIAutomation_CreatePropertyCondition(This,propertyId,value,newCondition) (This)->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition)
#define IUIAutomation_CreatePropertyConditionEx(This,propertyId,value,flags,newCondition) (This)->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition)
#define IUIAutomation_CreateAndCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition)
#define IUIAutomation_CreateAndConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition)
#define IUIAutomation_CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation_CreateOrCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition)
#define IUIAutomation_CreateOrConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition)
#define IUIAutomation_CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation_CreateNotCondition(This,condition,newCondition) (This)->lpVtbl->CreateNotCondition(This,condition,newCondition)
#define IUIAutomation_AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler) (This)->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler)
#define IUIAutomation_RemoveAutomationEventHandler(This,eventId,element,handler) (This)->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler)
#define IUIAutomation_AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount) (This)->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount)
#define IUIAutomation_AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray) (This)->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray)
#define IUIAutomation_RemovePropertyChangedEventHandler(This,element,handler) (This)->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler)
#define IUIAutomation_AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation_RemoveStructureChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler)
#define IUIAutomation_AddFocusChangedEventHandler(This,cacheRequest,handler) (This)->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler)
#define IUIAutomation_RemoveFocusChangedEventHandler(This,handler) (This)->lpVtbl->RemoveFocusChangedEventHandler(This,handler)
#define IUIAutomation_RemoveAllEventHandlers(This) (This)->lpVtbl->RemoveAllEventHandlers(This)
#define IUIAutomation_IntNativeArrayToSafeArray(This,array,arrayCount,safeArray) (This)->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray)
#define IUIAutomation_IntSafeArrayToNativeArray(This,intArray,array,arrayCount) (This)->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount)
#define IUIAutomation_RectToVariant(This,rc,var) (This)->lpVtbl->RectToVariant(This,rc,var)
#define IUIAutomation_VariantToRect(This,var,rc) (This)->lpVtbl->VariantToRect(This,var,rc)
#define IUIAutomation_SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount) (This)->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount)
#define IUIAutomation_CreateProxyFactoryEntry(This,factory,factoryEntry) (This)->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry)
#define IUIAutomation_get_ProxyFactoryMapping(This,factoryMapping) (This)->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping)
#define IUIAutomation_GetPropertyProgrammaticName(This,property,name) (This)->lpVtbl->GetPropertyProgrammaticName(This,property,name)
#define IUIAutomation_GetPatternProgrammaticName(This,pattern,name) (This)->lpVtbl->GetPatternProgrammaticName(This,pattern,name)
#define IUIAutomation_PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames) (This)->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames)
#define IUIAutomation_PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames) (This)->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames)
#define IUIAutomation_CheckNotSupported(This,value,isNotSupported) (This)->lpVtbl->CheckNotSupported(This,value,isNotSupported)
#define IUIAutomation_get_ReservedNotSupportedValue(This,notSupportedValue) (This)->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue)
#define IUIAutomation_get_ReservedMixedAttributeValue(This,mixedAttributeValue) (This)->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue)
#define IUIAutomation_ElementFromIAccessible(This,accessible,childId,element) (This)->lpVtbl->ElementFromIAccessible(This,accessible,childId,element)
#define IUIAutomation_ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element) (This)->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomation_QueryInterface(IUIAutomation* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomation_AddRef(IUIAutomation* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomation_Release(IUIAutomation* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomation methods ***/
static inline HRESULT IUIAutomation_CompareElements(IUIAutomation* This,IUIAutomationElement *el1,IUIAutomationElement *el2,WINBOOL *areSame) {
    return This->lpVtbl->CompareElements(This,el1,el2,areSame);
}
static inline HRESULT IUIAutomation_CompareRuntimeIds(IUIAutomation* This,SAFEARRAY *runtimeId1,SAFEARRAY *runtimeId2,WINBOOL *areSame) {
    return This->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame);
}
static inline HRESULT IUIAutomation_GetRootElement(IUIAutomation* This,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElement(This,root);
}
static inline HRESULT IUIAutomation_ElementFromHandle(IUIAutomation* This,UIA_HWND hwnd,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandle(This,hwnd,element);
}
static inline HRESULT IUIAutomation_ElementFromPoint(IUIAutomation* This,POINT pt,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPoint(This,pt,element);
}
static inline HRESULT IUIAutomation_GetFocusedElement(IUIAutomation* This,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElement(This,element);
}
static inline HRESULT IUIAutomation_GetRootElementBuildCache(IUIAutomation* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root);
}
static inline HRESULT IUIAutomation_ElementFromHandleBuildCache(IUIAutomation* This,UIA_HWND hwnd,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element);
}
static inline HRESULT IUIAutomation_ElementFromPointBuildCache(IUIAutomation* This,POINT pt,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element);
}
static inline HRESULT IUIAutomation_GetFocusedElementBuildCache(IUIAutomation* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element);
}
static inline HRESULT IUIAutomation_CreateTreeWalker(IUIAutomation* This,IUIAutomationCondition *pCondition,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->CreateTreeWalker(This,pCondition,walker);
}
static inline HRESULT IUIAutomation_get_ControlViewWalker(IUIAutomation* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ControlViewWalker(This,walker);
}
static inline HRESULT IUIAutomation_get_ContentViewWalker(IUIAutomation* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ContentViewWalker(This,walker);
}
static inline HRESULT IUIAutomation_get_RawViewWalker(IUIAutomation* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_RawViewWalker(This,walker);
}
static inline HRESULT IUIAutomation_get_RawViewCondition(IUIAutomation* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_RawViewCondition(This,condition);
}
static inline HRESULT IUIAutomation_get_ControlViewCondition(IUIAutomation* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ControlViewCondition(This,condition);
}
static inline HRESULT IUIAutomation_get_ContentViewCondition(IUIAutomation* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ContentViewCondition(This,condition);
}
static inline HRESULT IUIAutomation_CreateCacheRequest(IUIAutomation* This,IUIAutomationCacheRequest **cacheRequest) {
    return This->lpVtbl->CreateCacheRequest(This,cacheRequest);
}
static inline HRESULT IUIAutomation_CreateTrueCondition(IUIAutomation* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateTrueCondition(This,newCondition);
}
static inline HRESULT IUIAutomation_CreateFalseCondition(IUIAutomation* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateFalseCondition(This,newCondition);
}
static inline HRESULT IUIAutomation_CreatePropertyCondition(IUIAutomation* This,PROPERTYID propertyId,VARIANT value,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition);
}
static inline HRESULT IUIAutomation_CreatePropertyConditionEx(IUIAutomation* This,PROPERTYID propertyId,VARIANT value,enum PropertyConditionFlags flags,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition);
}
static inline HRESULT IUIAutomation_CreateAndCondition(IUIAutomation* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation_CreateAndConditionFromArray(IUIAutomation* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation_CreateAndConditionFromNativeArray(IUIAutomation* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation_CreateOrCondition(IUIAutomation* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation_CreateOrConditionFromArray(IUIAutomation* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation_CreateOrConditionFromNativeArray(IUIAutomation* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation_CreateNotCondition(IUIAutomation* This,IUIAutomationCondition *condition,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateNotCondition(This,condition,newCondition);
}
static inline HRESULT IUIAutomation_AddAutomationEventHandler(IUIAutomation* This,EVENTID eventId,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation_RemoveAutomationEventHandler(IUIAutomation* This,EVENTID eventId,IUIAutomationElement *element,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler);
}
static inline HRESULT IUIAutomation_AddPropertyChangedEventHandlerNativeArray(IUIAutomation* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,PROPERTYID *propertyArray,int propertyCount) {
    return This->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount);
}
static inline HRESULT IUIAutomation_AddPropertyChangedEventHandler(IUIAutomation* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,SAFEARRAY *propertyArray) {
    return This->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray);
}
static inline HRESULT IUIAutomation_RemovePropertyChangedEventHandler(IUIAutomation* This,IUIAutomationElement *element,IUIAutomationPropertyChangedEventHandler *handler) {
    return This->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation_AddStructureChangedEventHandler(IUIAutomation* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation_RemoveStructureChangedEventHandler(IUIAutomation* This,IUIAutomationElement *element,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation_AddFocusChangedEventHandler(IUIAutomation* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler);
}
static inline HRESULT IUIAutomation_RemoveFocusChangedEventHandler(IUIAutomation* This,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->RemoveFocusChangedEventHandler(This,handler);
}
static inline HRESULT IUIAutomation_RemoveAllEventHandlers(IUIAutomation* This) {
    return This->lpVtbl->RemoveAllEventHandlers(This);
}
static inline HRESULT IUIAutomation_IntNativeArrayToSafeArray(IUIAutomation* This,int *array,int arrayCount,SAFEARRAY **safeArray) {
    return This->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray);
}
static inline HRESULT IUIAutomation_IntSafeArrayToNativeArray(IUIAutomation* This,SAFEARRAY *intArray,int **array,int *arrayCount) {
    return This->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount);
}
static inline HRESULT IUIAutomation_RectToVariant(IUIAutomation* This,RECT rc,VARIANT *var) {
    return This->lpVtbl->RectToVariant(This,rc,var);
}
static inline HRESULT IUIAutomation_VariantToRect(IUIAutomation* This,VARIANT var,RECT *rc) {
    return This->lpVtbl->VariantToRect(This,var,rc);
}
static inline HRESULT IUIAutomation_SafeArrayToRectNativeArray(IUIAutomation* This,SAFEARRAY *rects,RECT **rectArray,int *rectArrayCount) {
    return This->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount);
}
static inline HRESULT IUIAutomation_CreateProxyFactoryEntry(IUIAutomation* This,IUIAutomationProxyFactory *factory,IUIAutomationProxyFactoryEntry **factoryEntry) {
    return This->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry);
}
static inline HRESULT IUIAutomation_get_ProxyFactoryMapping(IUIAutomation* This,IUIAutomationProxyFactoryMapping **factoryMapping) {
    return This->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping);
}
static inline HRESULT IUIAutomation_GetPropertyProgrammaticName(IUIAutomation* This,PROPERTYID property,BSTR *name) {
    return This->lpVtbl->GetPropertyProgrammaticName(This,property,name);
}
static inline HRESULT IUIAutomation_GetPatternProgrammaticName(IUIAutomation* This,PATTERNID pattern,BSTR *name) {
    return This->lpVtbl->GetPatternProgrammaticName(This,pattern,name);
}
static inline HRESULT IUIAutomation_PollForPotentialSupportedPatterns(IUIAutomation* This,IUIAutomationElement *pElement,SAFEARRAY **patternIds,SAFEARRAY **patternNames) {
    return This->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames);
}
static inline HRESULT IUIAutomation_PollForPotentialSupportedProperties(IUIAutomation* This,IUIAutomationElement *pElement,SAFEARRAY **propertyIds,SAFEARRAY **propertyNames) {
    return This->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames);
}
static inline HRESULT IUIAutomation_CheckNotSupported(IUIAutomation* This,VARIANT value,WINBOOL *isNotSupported) {
    return This->lpVtbl->CheckNotSupported(This,value,isNotSupported);
}
static inline HRESULT IUIAutomation_get_ReservedNotSupportedValue(IUIAutomation* This,IUnknown **notSupportedValue) {
    return This->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue);
}
static inline HRESULT IUIAutomation_get_ReservedMixedAttributeValue(IUIAutomation* This,IUnknown **mixedAttributeValue) {
    return This->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue);
}
static inline HRESULT IUIAutomation_ElementFromIAccessible(IUIAutomation* This,IAccessible *accessible,int childId,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessible(This,accessible,childId,element);
}
static inline HRESULT IUIAutomation_ElementFromIAccessibleBuildCache(IUIAutomation* This,IAccessible *accessible,int childId,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element);
}
#endif
#endif

#endif


#endif  /* __IUIAutomation_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomation2 interface
 */
#ifndef __IUIAutomation2_INTERFACE_DEFINED__
#define __IUIAutomation2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomation2, 0x34723aff, 0x0c9d, 0x49d0, 0x98,0x96, 0x7a,0xb5,0x2d,0xf8,0xcd,0x8a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("34723aff-0c9d-49d0-9896-7ab52df8cd8a")
IUIAutomation2 : public IUIAutomation
{
    virtual HRESULT STDMETHODCALLTYPE get_AutoSetFocus(
        WINBOOL *autoSetFocus) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AutoSetFocus(
        WINBOOL autoSetFocus) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ConnectionTimeout(
        DWORD *timeout) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ConnectionTimeout(
        DWORD timeout) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TransactionTimeout(
        DWORD *timeout) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TransactionTimeout(
        DWORD timeout) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomation2, 0x34723aff, 0x0c9d, 0x49d0, 0x98,0x96, 0x7a,0xb5,0x2d,0xf8,0xcd,0x8a)
#endif
#else
typedef struct IUIAutomation2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomation2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomation2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomation2 *This);

    /*** IUIAutomation methods ***/
    HRESULT (STDMETHODCALLTYPE *CompareElements)(
        IUIAutomation2 *This,
        IUIAutomationElement *el1,
        IUIAutomationElement *el2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *CompareRuntimeIds)(
        IUIAutomation2 *This,
        SAFEARRAY *runtimeId1,
        SAFEARRAY *runtimeId2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *GetRootElement)(
        IUIAutomation2 *This,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandle)(
        IUIAutomation2 *This,
        UIA_HWND hwnd,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPoint)(
        IUIAutomation2 *This,
        POINT pt,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElement)(
        IUIAutomation2 *This,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetRootElementBuildCache)(
        IUIAutomation2 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandleBuildCache)(
        IUIAutomation2 *This,
        UIA_HWND hwnd,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPointBuildCache)(
        IUIAutomation2 *This,
        POINT pt,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElementBuildCache)(
        IUIAutomation2 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *CreateTreeWalker)(
        IUIAutomation2 *This,
        IUIAutomationCondition *pCondition,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewWalker)(
        IUIAutomation2 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewWalker)(
        IUIAutomation2 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewWalker)(
        IUIAutomation2 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewCondition)(
        IUIAutomation2 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewCondition)(
        IUIAutomation2 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewCondition)(
        IUIAutomation2 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *CreateCacheRequest)(
        IUIAutomation2 *This,
        IUIAutomationCacheRequest **cacheRequest);

    HRESULT (STDMETHODCALLTYPE *CreateTrueCondition)(
        IUIAutomation2 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateFalseCondition)(
        IUIAutomation2 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyCondition)(
        IUIAutomation2 *This,
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyConditionEx)(
        IUIAutomation2 *This,
        PROPERTYID propertyId,
        VARIANT value,
        enum PropertyConditionFlags flags,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndCondition)(
        IUIAutomation2 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromArray)(
        IUIAutomation2 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromNativeArray)(
        IUIAutomation2 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrCondition)(
        IUIAutomation2 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromArray)(
        IUIAutomation2 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromNativeArray)(
        IUIAutomation2 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateNotCondition)(
        IUIAutomation2 *This,
        IUIAutomationCondition *condition,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *AddAutomationEventHandler)(
        IUIAutomation2 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAutomationEventHandler)(
        IUIAutomation2 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandlerNativeArray)(
        IUIAutomation2 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandler)(
        IUIAutomation2 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        SAFEARRAY *propertyArray);

    HRESULT (STDMETHODCALLTYPE *RemovePropertyChangedEventHandler)(
        IUIAutomation2 *This,
        IUIAutomationElement *element,
        IUIAutomationPropertyChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddStructureChangedEventHandler)(
        IUIAutomation2 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveStructureChangedEventHandler)(
        IUIAutomation2 *This,
        IUIAutomationElement *element,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddFocusChangedEventHandler)(
        IUIAutomation2 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveFocusChangedEventHandler)(
        IUIAutomation2 *This,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAllEventHandlers)(
        IUIAutomation2 *This);

    HRESULT (STDMETHODCALLTYPE *IntNativeArrayToSafeArray)(
        IUIAutomation2 *This,
        int *array,
        int arrayCount,
        SAFEARRAY **safeArray);

    HRESULT (STDMETHODCALLTYPE *IntSafeArrayToNativeArray)(
        IUIAutomation2 *This,
        SAFEARRAY *intArray,
        int **array,
        int *arrayCount);

    HRESULT (STDMETHODCALLTYPE *RectToVariant)(
        IUIAutomation2 *This,
        RECT rc,
        VARIANT *var);

    HRESULT (STDMETHODCALLTYPE *VariantToRect)(
        IUIAutomation2 *This,
        VARIANT var,
        RECT *rc);

    HRESULT (STDMETHODCALLTYPE *SafeArrayToRectNativeArray)(
        IUIAutomation2 *This,
        SAFEARRAY *rects,
        RECT **rectArray,
        int *rectArrayCount);

    HRESULT (STDMETHODCALLTYPE *CreateProxyFactoryEntry)(
        IUIAutomation2 *This,
        IUIAutomationProxyFactory *factory,
        IUIAutomationProxyFactoryEntry **factoryEntry);

    HRESULT (STDMETHODCALLTYPE *get_ProxyFactoryMapping)(
        IUIAutomation2 *This,
        IUIAutomationProxyFactoryMapping **factoryMapping);

    HRESULT (STDMETHODCALLTYPE *GetPropertyProgrammaticName)(
        IUIAutomation2 *This,
        PROPERTYID property,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *GetPatternProgrammaticName)(
        IUIAutomation2 *This,
        PATTERNID pattern,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedPatterns)(
        IUIAutomation2 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **patternIds,
        SAFEARRAY **patternNames);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedProperties)(
        IUIAutomation2 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **propertyIds,
        SAFEARRAY **propertyNames);

    HRESULT (STDMETHODCALLTYPE *CheckNotSupported)(
        IUIAutomation2 *This,
        VARIANT value,
        WINBOOL *isNotSupported);

    HRESULT (STDMETHODCALLTYPE *get_ReservedNotSupportedValue)(
        IUIAutomation2 *This,
        IUnknown **notSupportedValue);

    HRESULT (STDMETHODCALLTYPE *get_ReservedMixedAttributeValue)(
        IUIAutomation2 *This,
        IUnknown **mixedAttributeValue);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessible)(
        IUIAutomation2 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessibleBuildCache)(
        IUIAutomation2 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    /*** IUIAutomation2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AutoSetFocus)(
        IUIAutomation2 *This,
        WINBOOL *autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *put_AutoSetFocus)(
        IUIAutomation2 *This,
        WINBOOL autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *get_ConnectionTimeout)(
        IUIAutomation2 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_ConnectionTimeout)(
        IUIAutomation2 *This,
        DWORD timeout);

    HRESULT (STDMETHODCALLTYPE *get_TransactionTimeout)(
        IUIAutomation2 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_TransactionTimeout)(
        IUIAutomation2 *This,
        DWORD timeout);

    END_INTERFACE
} IUIAutomation2Vtbl;

interface IUIAutomation2 {
    CONST_VTBL IUIAutomation2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomation2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomation2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomation2_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomation methods ***/
#define IUIAutomation2_CompareElements(This,el1,el2,areSame) (This)->lpVtbl->CompareElements(This,el1,el2,areSame)
#define IUIAutomation2_CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame) (This)->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame)
#define IUIAutomation2_GetRootElement(This,root) (This)->lpVtbl->GetRootElement(This,root)
#define IUIAutomation2_ElementFromHandle(This,hwnd,element) (This)->lpVtbl->ElementFromHandle(This,hwnd,element)
#define IUIAutomation2_ElementFromPoint(This,pt,element) (This)->lpVtbl->ElementFromPoint(This,pt,element)
#define IUIAutomation2_GetFocusedElement(This,element) (This)->lpVtbl->GetFocusedElement(This,element)
#define IUIAutomation2_GetRootElementBuildCache(This,cacheRequest,root) (This)->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root)
#define IUIAutomation2_ElementFromHandleBuildCache(This,hwnd,cacheRequest,element) (This)->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element)
#define IUIAutomation2_ElementFromPointBuildCache(This,pt,cacheRequest,element) (This)->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element)
#define IUIAutomation2_GetFocusedElementBuildCache(This,cacheRequest,element) (This)->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element)
#define IUIAutomation2_CreateTreeWalker(This,pCondition,walker) (This)->lpVtbl->CreateTreeWalker(This,pCondition,walker)
#define IUIAutomation2_get_ControlViewWalker(This,walker) (This)->lpVtbl->get_ControlViewWalker(This,walker)
#define IUIAutomation2_get_ContentViewWalker(This,walker) (This)->lpVtbl->get_ContentViewWalker(This,walker)
#define IUIAutomation2_get_RawViewWalker(This,walker) (This)->lpVtbl->get_RawViewWalker(This,walker)
#define IUIAutomation2_get_RawViewCondition(This,condition) (This)->lpVtbl->get_RawViewCondition(This,condition)
#define IUIAutomation2_get_ControlViewCondition(This,condition) (This)->lpVtbl->get_ControlViewCondition(This,condition)
#define IUIAutomation2_get_ContentViewCondition(This,condition) (This)->lpVtbl->get_ContentViewCondition(This,condition)
#define IUIAutomation2_CreateCacheRequest(This,cacheRequest) (This)->lpVtbl->CreateCacheRequest(This,cacheRequest)
#define IUIAutomation2_CreateTrueCondition(This,newCondition) (This)->lpVtbl->CreateTrueCondition(This,newCondition)
#define IUIAutomation2_CreateFalseCondition(This,newCondition) (This)->lpVtbl->CreateFalseCondition(This,newCondition)
#define IUIAutomation2_CreatePropertyCondition(This,propertyId,value,newCondition) (This)->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition)
#define IUIAutomation2_CreatePropertyConditionEx(This,propertyId,value,flags,newCondition) (This)->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition)
#define IUIAutomation2_CreateAndCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition)
#define IUIAutomation2_CreateAndConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition)
#define IUIAutomation2_CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation2_CreateOrCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition)
#define IUIAutomation2_CreateOrConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition)
#define IUIAutomation2_CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation2_CreateNotCondition(This,condition,newCondition) (This)->lpVtbl->CreateNotCondition(This,condition,newCondition)
#define IUIAutomation2_AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler) (This)->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler)
#define IUIAutomation2_RemoveAutomationEventHandler(This,eventId,element,handler) (This)->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler)
#define IUIAutomation2_AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount) (This)->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount)
#define IUIAutomation2_AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray) (This)->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray)
#define IUIAutomation2_RemovePropertyChangedEventHandler(This,element,handler) (This)->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler)
#define IUIAutomation2_AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation2_RemoveStructureChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler)
#define IUIAutomation2_AddFocusChangedEventHandler(This,cacheRequest,handler) (This)->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler)
#define IUIAutomation2_RemoveFocusChangedEventHandler(This,handler) (This)->lpVtbl->RemoveFocusChangedEventHandler(This,handler)
#define IUIAutomation2_RemoveAllEventHandlers(This) (This)->lpVtbl->RemoveAllEventHandlers(This)
#define IUIAutomation2_IntNativeArrayToSafeArray(This,array,arrayCount,safeArray) (This)->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray)
#define IUIAutomation2_IntSafeArrayToNativeArray(This,intArray,array,arrayCount) (This)->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount)
#define IUIAutomation2_RectToVariant(This,rc,var) (This)->lpVtbl->RectToVariant(This,rc,var)
#define IUIAutomation2_VariantToRect(This,var,rc) (This)->lpVtbl->VariantToRect(This,var,rc)
#define IUIAutomation2_SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount) (This)->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount)
#define IUIAutomation2_CreateProxyFactoryEntry(This,factory,factoryEntry) (This)->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry)
#define IUIAutomation2_get_ProxyFactoryMapping(This,factoryMapping) (This)->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping)
#define IUIAutomation2_GetPropertyProgrammaticName(This,property,name) (This)->lpVtbl->GetPropertyProgrammaticName(This,property,name)
#define IUIAutomation2_GetPatternProgrammaticName(This,pattern,name) (This)->lpVtbl->GetPatternProgrammaticName(This,pattern,name)
#define IUIAutomation2_PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames) (This)->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames)
#define IUIAutomation2_PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames) (This)->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames)
#define IUIAutomation2_CheckNotSupported(This,value,isNotSupported) (This)->lpVtbl->CheckNotSupported(This,value,isNotSupported)
#define IUIAutomation2_get_ReservedNotSupportedValue(This,notSupportedValue) (This)->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue)
#define IUIAutomation2_get_ReservedMixedAttributeValue(This,mixedAttributeValue) (This)->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue)
#define IUIAutomation2_ElementFromIAccessible(This,accessible,childId,element) (This)->lpVtbl->ElementFromIAccessible(This,accessible,childId,element)
#define IUIAutomation2_ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element) (This)->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element)
/*** IUIAutomation2 methods ***/
#define IUIAutomation2_get_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->get_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation2_put_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->put_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation2_get_ConnectionTimeout(This,timeout) (This)->lpVtbl->get_ConnectionTimeout(This,timeout)
#define IUIAutomation2_put_ConnectionTimeout(This,timeout) (This)->lpVtbl->put_ConnectionTimeout(This,timeout)
#define IUIAutomation2_get_TransactionTimeout(This,timeout) (This)->lpVtbl->get_TransactionTimeout(This,timeout)
#define IUIAutomation2_put_TransactionTimeout(This,timeout) (This)->lpVtbl->put_TransactionTimeout(This,timeout)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomation2_QueryInterface(IUIAutomation2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomation2_AddRef(IUIAutomation2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomation2_Release(IUIAutomation2* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomation methods ***/
static inline HRESULT IUIAutomation2_CompareElements(IUIAutomation2* This,IUIAutomationElement *el1,IUIAutomationElement *el2,WINBOOL *areSame) {
    return This->lpVtbl->CompareElements(This,el1,el2,areSame);
}
static inline HRESULT IUIAutomation2_CompareRuntimeIds(IUIAutomation2* This,SAFEARRAY *runtimeId1,SAFEARRAY *runtimeId2,WINBOOL *areSame) {
    return This->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame);
}
static inline HRESULT IUIAutomation2_GetRootElement(IUIAutomation2* This,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElement(This,root);
}
static inline HRESULT IUIAutomation2_ElementFromHandle(IUIAutomation2* This,UIA_HWND hwnd,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandle(This,hwnd,element);
}
static inline HRESULT IUIAutomation2_ElementFromPoint(IUIAutomation2* This,POINT pt,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPoint(This,pt,element);
}
static inline HRESULT IUIAutomation2_GetFocusedElement(IUIAutomation2* This,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElement(This,element);
}
static inline HRESULT IUIAutomation2_GetRootElementBuildCache(IUIAutomation2* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root);
}
static inline HRESULT IUIAutomation2_ElementFromHandleBuildCache(IUIAutomation2* This,UIA_HWND hwnd,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element);
}
static inline HRESULT IUIAutomation2_ElementFromPointBuildCache(IUIAutomation2* This,POINT pt,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element);
}
static inline HRESULT IUIAutomation2_GetFocusedElementBuildCache(IUIAutomation2* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element);
}
static inline HRESULT IUIAutomation2_CreateTreeWalker(IUIAutomation2* This,IUIAutomationCondition *pCondition,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->CreateTreeWalker(This,pCondition,walker);
}
static inline HRESULT IUIAutomation2_get_ControlViewWalker(IUIAutomation2* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ControlViewWalker(This,walker);
}
static inline HRESULT IUIAutomation2_get_ContentViewWalker(IUIAutomation2* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ContentViewWalker(This,walker);
}
static inline HRESULT IUIAutomation2_get_RawViewWalker(IUIAutomation2* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_RawViewWalker(This,walker);
}
static inline HRESULT IUIAutomation2_get_RawViewCondition(IUIAutomation2* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_RawViewCondition(This,condition);
}
static inline HRESULT IUIAutomation2_get_ControlViewCondition(IUIAutomation2* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ControlViewCondition(This,condition);
}
static inline HRESULT IUIAutomation2_get_ContentViewCondition(IUIAutomation2* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ContentViewCondition(This,condition);
}
static inline HRESULT IUIAutomation2_CreateCacheRequest(IUIAutomation2* This,IUIAutomationCacheRequest **cacheRequest) {
    return This->lpVtbl->CreateCacheRequest(This,cacheRequest);
}
static inline HRESULT IUIAutomation2_CreateTrueCondition(IUIAutomation2* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateTrueCondition(This,newCondition);
}
static inline HRESULT IUIAutomation2_CreateFalseCondition(IUIAutomation2* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateFalseCondition(This,newCondition);
}
static inline HRESULT IUIAutomation2_CreatePropertyCondition(IUIAutomation2* This,PROPERTYID propertyId,VARIANT value,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition);
}
static inline HRESULT IUIAutomation2_CreatePropertyConditionEx(IUIAutomation2* This,PROPERTYID propertyId,VARIANT value,enum PropertyConditionFlags flags,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition);
}
static inline HRESULT IUIAutomation2_CreateAndCondition(IUIAutomation2* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation2_CreateAndConditionFromArray(IUIAutomation2* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation2_CreateAndConditionFromNativeArray(IUIAutomation2* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation2_CreateOrCondition(IUIAutomation2* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation2_CreateOrConditionFromArray(IUIAutomation2* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation2_CreateOrConditionFromNativeArray(IUIAutomation2* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation2_CreateNotCondition(IUIAutomation2* This,IUIAutomationCondition *condition,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateNotCondition(This,condition,newCondition);
}
static inline HRESULT IUIAutomation2_AddAutomationEventHandler(IUIAutomation2* This,EVENTID eventId,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation2_RemoveAutomationEventHandler(IUIAutomation2* This,EVENTID eventId,IUIAutomationElement *element,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler);
}
static inline HRESULT IUIAutomation2_AddPropertyChangedEventHandlerNativeArray(IUIAutomation2* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,PROPERTYID *propertyArray,int propertyCount) {
    return This->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount);
}
static inline HRESULT IUIAutomation2_AddPropertyChangedEventHandler(IUIAutomation2* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,SAFEARRAY *propertyArray) {
    return This->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray);
}
static inline HRESULT IUIAutomation2_RemovePropertyChangedEventHandler(IUIAutomation2* This,IUIAutomationElement *element,IUIAutomationPropertyChangedEventHandler *handler) {
    return This->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation2_AddStructureChangedEventHandler(IUIAutomation2* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation2_RemoveStructureChangedEventHandler(IUIAutomation2* This,IUIAutomationElement *element,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation2_AddFocusChangedEventHandler(IUIAutomation2* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler);
}
static inline HRESULT IUIAutomation2_RemoveFocusChangedEventHandler(IUIAutomation2* This,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->RemoveFocusChangedEventHandler(This,handler);
}
static inline HRESULT IUIAutomation2_RemoveAllEventHandlers(IUIAutomation2* This) {
    return This->lpVtbl->RemoveAllEventHandlers(This);
}
static inline HRESULT IUIAutomation2_IntNativeArrayToSafeArray(IUIAutomation2* This,int *array,int arrayCount,SAFEARRAY **safeArray) {
    return This->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray);
}
static inline HRESULT IUIAutomation2_IntSafeArrayToNativeArray(IUIAutomation2* This,SAFEARRAY *intArray,int **array,int *arrayCount) {
    return This->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount);
}
static inline HRESULT IUIAutomation2_RectToVariant(IUIAutomation2* This,RECT rc,VARIANT *var) {
    return This->lpVtbl->RectToVariant(This,rc,var);
}
static inline HRESULT IUIAutomation2_VariantToRect(IUIAutomation2* This,VARIANT var,RECT *rc) {
    return This->lpVtbl->VariantToRect(This,var,rc);
}
static inline HRESULT IUIAutomation2_SafeArrayToRectNativeArray(IUIAutomation2* This,SAFEARRAY *rects,RECT **rectArray,int *rectArrayCount) {
    return This->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount);
}
static inline HRESULT IUIAutomation2_CreateProxyFactoryEntry(IUIAutomation2* This,IUIAutomationProxyFactory *factory,IUIAutomationProxyFactoryEntry **factoryEntry) {
    return This->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry);
}
static inline HRESULT IUIAutomation2_get_ProxyFactoryMapping(IUIAutomation2* This,IUIAutomationProxyFactoryMapping **factoryMapping) {
    return This->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping);
}
static inline HRESULT IUIAutomation2_GetPropertyProgrammaticName(IUIAutomation2* This,PROPERTYID property,BSTR *name) {
    return This->lpVtbl->GetPropertyProgrammaticName(This,property,name);
}
static inline HRESULT IUIAutomation2_GetPatternProgrammaticName(IUIAutomation2* This,PATTERNID pattern,BSTR *name) {
    return This->lpVtbl->GetPatternProgrammaticName(This,pattern,name);
}
static inline HRESULT IUIAutomation2_PollForPotentialSupportedPatterns(IUIAutomation2* This,IUIAutomationElement *pElement,SAFEARRAY **patternIds,SAFEARRAY **patternNames) {
    return This->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames);
}
static inline HRESULT IUIAutomation2_PollForPotentialSupportedProperties(IUIAutomation2* This,IUIAutomationElement *pElement,SAFEARRAY **propertyIds,SAFEARRAY **propertyNames) {
    return This->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames);
}
static inline HRESULT IUIAutomation2_CheckNotSupported(IUIAutomation2* This,VARIANT value,WINBOOL *isNotSupported) {
    return This->lpVtbl->CheckNotSupported(This,value,isNotSupported);
}
static inline HRESULT IUIAutomation2_get_ReservedNotSupportedValue(IUIAutomation2* This,IUnknown **notSupportedValue) {
    return This->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue);
}
static inline HRESULT IUIAutomation2_get_ReservedMixedAttributeValue(IUIAutomation2* This,IUnknown **mixedAttributeValue) {
    return This->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue);
}
static inline HRESULT IUIAutomation2_ElementFromIAccessible(IUIAutomation2* This,IAccessible *accessible,int childId,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessible(This,accessible,childId,element);
}
static inline HRESULT IUIAutomation2_ElementFromIAccessibleBuildCache(IUIAutomation2* This,IAccessible *accessible,int childId,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element);
}
/*** IUIAutomation2 methods ***/
static inline HRESULT IUIAutomation2_get_AutoSetFocus(IUIAutomation2* This,WINBOOL *autoSetFocus) {
    return This->lpVtbl->get_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation2_put_AutoSetFocus(IUIAutomation2* This,WINBOOL autoSetFocus) {
    return This->lpVtbl->put_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation2_get_ConnectionTimeout(IUIAutomation2* This,DWORD *timeout) {
    return This->lpVtbl->get_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation2_put_ConnectionTimeout(IUIAutomation2* This,DWORD timeout) {
    return This->lpVtbl->put_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation2_get_TransactionTimeout(IUIAutomation2* This,DWORD *timeout) {
    return This->lpVtbl->get_TransactionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation2_put_TransactionTimeout(IUIAutomation2* This,DWORD timeout) {
    return This->lpVtbl->put_TransactionTimeout(This,timeout);
}
#endif
#endif

#endif


#endif  /* __IUIAutomation2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomation3 interface
 */
#ifndef __IUIAutomation3_INTERFACE_DEFINED__
#define __IUIAutomation3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomation3, 0x73d768da, 0x9b51, 0x4b89, 0x93,0x6e, 0xc2,0x09,0x29,0x09,0x73,0xe7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("73d768da-9b51-4b89-936e-c209290973e7")
IUIAutomation3 : public IUIAutomation2
{
    virtual HRESULT STDMETHODCALLTYPE AddTextEditTextChangedEventHandler(
        IUIAutomationElement *element,
        enum TreeScope scope,
        enum TextEditChangeType textEditChangeType,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationTextEditTextChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveTextEditTextChangedEventHandler(
        IUIAutomationElement *element,
        IUIAutomationTextEditTextChangedEventHandler *handler) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomation3, 0x73d768da, 0x9b51, 0x4b89, 0x93,0x6e, 0xc2,0x09,0x29,0x09,0x73,0xe7)
#endif
#else
typedef struct IUIAutomation3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomation3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomation3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomation3 *This);

    /*** IUIAutomation methods ***/
    HRESULT (STDMETHODCALLTYPE *CompareElements)(
        IUIAutomation3 *This,
        IUIAutomationElement *el1,
        IUIAutomationElement *el2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *CompareRuntimeIds)(
        IUIAutomation3 *This,
        SAFEARRAY *runtimeId1,
        SAFEARRAY *runtimeId2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *GetRootElement)(
        IUIAutomation3 *This,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandle)(
        IUIAutomation3 *This,
        UIA_HWND hwnd,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPoint)(
        IUIAutomation3 *This,
        POINT pt,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElement)(
        IUIAutomation3 *This,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetRootElementBuildCache)(
        IUIAutomation3 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandleBuildCache)(
        IUIAutomation3 *This,
        UIA_HWND hwnd,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPointBuildCache)(
        IUIAutomation3 *This,
        POINT pt,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElementBuildCache)(
        IUIAutomation3 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *CreateTreeWalker)(
        IUIAutomation3 *This,
        IUIAutomationCondition *pCondition,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewWalker)(
        IUIAutomation3 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewWalker)(
        IUIAutomation3 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewWalker)(
        IUIAutomation3 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewCondition)(
        IUIAutomation3 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewCondition)(
        IUIAutomation3 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewCondition)(
        IUIAutomation3 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *CreateCacheRequest)(
        IUIAutomation3 *This,
        IUIAutomationCacheRequest **cacheRequest);

    HRESULT (STDMETHODCALLTYPE *CreateTrueCondition)(
        IUIAutomation3 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateFalseCondition)(
        IUIAutomation3 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyCondition)(
        IUIAutomation3 *This,
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyConditionEx)(
        IUIAutomation3 *This,
        PROPERTYID propertyId,
        VARIANT value,
        enum PropertyConditionFlags flags,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndCondition)(
        IUIAutomation3 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromArray)(
        IUIAutomation3 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromNativeArray)(
        IUIAutomation3 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrCondition)(
        IUIAutomation3 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromArray)(
        IUIAutomation3 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromNativeArray)(
        IUIAutomation3 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateNotCondition)(
        IUIAutomation3 *This,
        IUIAutomationCondition *condition,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *AddAutomationEventHandler)(
        IUIAutomation3 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAutomationEventHandler)(
        IUIAutomation3 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandlerNativeArray)(
        IUIAutomation3 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandler)(
        IUIAutomation3 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        SAFEARRAY *propertyArray);

    HRESULT (STDMETHODCALLTYPE *RemovePropertyChangedEventHandler)(
        IUIAutomation3 *This,
        IUIAutomationElement *element,
        IUIAutomationPropertyChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddStructureChangedEventHandler)(
        IUIAutomation3 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveStructureChangedEventHandler)(
        IUIAutomation3 *This,
        IUIAutomationElement *element,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddFocusChangedEventHandler)(
        IUIAutomation3 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveFocusChangedEventHandler)(
        IUIAutomation3 *This,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAllEventHandlers)(
        IUIAutomation3 *This);

    HRESULT (STDMETHODCALLTYPE *IntNativeArrayToSafeArray)(
        IUIAutomation3 *This,
        int *array,
        int arrayCount,
        SAFEARRAY **safeArray);

    HRESULT (STDMETHODCALLTYPE *IntSafeArrayToNativeArray)(
        IUIAutomation3 *This,
        SAFEARRAY *intArray,
        int **array,
        int *arrayCount);

    HRESULT (STDMETHODCALLTYPE *RectToVariant)(
        IUIAutomation3 *This,
        RECT rc,
        VARIANT *var);

    HRESULT (STDMETHODCALLTYPE *VariantToRect)(
        IUIAutomation3 *This,
        VARIANT var,
        RECT *rc);

    HRESULT (STDMETHODCALLTYPE *SafeArrayToRectNativeArray)(
        IUIAutomation3 *This,
        SAFEARRAY *rects,
        RECT **rectArray,
        int *rectArrayCount);

    HRESULT (STDMETHODCALLTYPE *CreateProxyFactoryEntry)(
        IUIAutomation3 *This,
        IUIAutomationProxyFactory *factory,
        IUIAutomationProxyFactoryEntry **factoryEntry);

    HRESULT (STDMETHODCALLTYPE *get_ProxyFactoryMapping)(
        IUIAutomation3 *This,
        IUIAutomationProxyFactoryMapping **factoryMapping);

    HRESULT (STDMETHODCALLTYPE *GetPropertyProgrammaticName)(
        IUIAutomation3 *This,
        PROPERTYID property,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *GetPatternProgrammaticName)(
        IUIAutomation3 *This,
        PATTERNID pattern,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedPatterns)(
        IUIAutomation3 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **patternIds,
        SAFEARRAY **patternNames);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedProperties)(
        IUIAutomation3 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **propertyIds,
        SAFEARRAY **propertyNames);

    HRESULT (STDMETHODCALLTYPE *CheckNotSupported)(
        IUIAutomation3 *This,
        VARIANT value,
        WINBOOL *isNotSupported);

    HRESULT (STDMETHODCALLTYPE *get_ReservedNotSupportedValue)(
        IUIAutomation3 *This,
        IUnknown **notSupportedValue);

    HRESULT (STDMETHODCALLTYPE *get_ReservedMixedAttributeValue)(
        IUIAutomation3 *This,
        IUnknown **mixedAttributeValue);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessible)(
        IUIAutomation3 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessibleBuildCache)(
        IUIAutomation3 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    /*** IUIAutomation2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AutoSetFocus)(
        IUIAutomation3 *This,
        WINBOOL *autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *put_AutoSetFocus)(
        IUIAutomation3 *This,
        WINBOOL autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *get_ConnectionTimeout)(
        IUIAutomation3 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_ConnectionTimeout)(
        IUIAutomation3 *This,
        DWORD timeout);

    HRESULT (STDMETHODCALLTYPE *get_TransactionTimeout)(
        IUIAutomation3 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_TransactionTimeout)(
        IUIAutomation3 *This,
        DWORD timeout);

    /*** IUIAutomation3 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddTextEditTextChangedEventHandler)(
        IUIAutomation3 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        enum TextEditChangeType textEditChangeType,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveTextEditTextChangedEventHandler)(
        IUIAutomation3 *This,
        IUIAutomationElement *element,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    END_INTERFACE
} IUIAutomation3Vtbl;

interface IUIAutomation3 {
    CONST_VTBL IUIAutomation3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomation3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomation3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomation3_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomation methods ***/
#define IUIAutomation3_CompareElements(This,el1,el2,areSame) (This)->lpVtbl->CompareElements(This,el1,el2,areSame)
#define IUIAutomation3_CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame) (This)->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame)
#define IUIAutomation3_GetRootElement(This,root) (This)->lpVtbl->GetRootElement(This,root)
#define IUIAutomation3_ElementFromHandle(This,hwnd,element) (This)->lpVtbl->ElementFromHandle(This,hwnd,element)
#define IUIAutomation3_ElementFromPoint(This,pt,element) (This)->lpVtbl->ElementFromPoint(This,pt,element)
#define IUIAutomation3_GetFocusedElement(This,element) (This)->lpVtbl->GetFocusedElement(This,element)
#define IUIAutomation3_GetRootElementBuildCache(This,cacheRequest,root) (This)->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root)
#define IUIAutomation3_ElementFromHandleBuildCache(This,hwnd,cacheRequest,element) (This)->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element)
#define IUIAutomation3_ElementFromPointBuildCache(This,pt,cacheRequest,element) (This)->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element)
#define IUIAutomation3_GetFocusedElementBuildCache(This,cacheRequest,element) (This)->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element)
#define IUIAutomation3_CreateTreeWalker(This,pCondition,walker) (This)->lpVtbl->CreateTreeWalker(This,pCondition,walker)
#define IUIAutomation3_get_ControlViewWalker(This,walker) (This)->lpVtbl->get_ControlViewWalker(This,walker)
#define IUIAutomation3_get_ContentViewWalker(This,walker) (This)->lpVtbl->get_ContentViewWalker(This,walker)
#define IUIAutomation3_get_RawViewWalker(This,walker) (This)->lpVtbl->get_RawViewWalker(This,walker)
#define IUIAutomation3_get_RawViewCondition(This,condition) (This)->lpVtbl->get_RawViewCondition(This,condition)
#define IUIAutomation3_get_ControlViewCondition(This,condition) (This)->lpVtbl->get_ControlViewCondition(This,condition)
#define IUIAutomation3_get_ContentViewCondition(This,condition) (This)->lpVtbl->get_ContentViewCondition(This,condition)
#define IUIAutomation3_CreateCacheRequest(This,cacheRequest) (This)->lpVtbl->CreateCacheRequest(This,cacheRequest)
#define IUIAutomation3_CreateTrueCondition(This,newCondition) (This)->lpVtbl->CreateTrueCondition(This,newCondition)
#define IUIAutomation3_CreateFalseCondition(This,newCondition) (This)->lpVtbl->CreateFalseCondition(This,newCondition)
#define IUIAutomation3_CreatePropertyCondition(This,propertyId,value,newCondition) (This)->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition)
#define IUIAutomation3_CreatePropertyConditionEx(This,propertyId,value,flags,newCondition) (This)->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition)
#define IUIAutomation3_CreateAndCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition)
#define IUIAutomation3_CreateAndConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition)
#define IUIAutomation3_CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation3_CreateOrCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition)
#define IUIAutomation3_CreateOrConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition)
#define IUIAutomation3_CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation3_CreateNotCondition(This,condition,newCondition) (This)->lpVtbl->CreateNotCondition(This,condition,newCondition)
#define IUIAutomation3_AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler) (This)->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler)
#define IUIAutomation3_RemoveAutomationEventHandler(This,eventId,element,handler) (This)->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler)
#define IUIAutomation3_AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount) (This)->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount)
#define IUIAutomation3_AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray) (This)->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray)
#define IUIAutomation3_RemovePropertyChangedEventHandler(This,element,handler) (This)->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler)
#define IUIAutomation3_AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation3_RemoveStructureChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler)
#define IUIAutomation3_AddFocusChangedEventHandler(This,cacheRequest,handler) (This)->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler)
#define IUIAutomation3_RemoveFocusChangedEventHandler(This,handler) (This)->lpVtbl->RemoveFocusChangedEventHandler(This,handler)
#define IUIAutomation3_RemoveAllEventHandlers(This) (This)->lpVtbl->RemoveAllEventHandlers(This)
#define IUIAutomation3_IntNativeArrayToSafeArray(This,array,arrayCount,safeArray) (This)->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray)
#define IUIAutomation3_IntSafeArrayToNativeArray(This,intArray,array,arrayCount) (This)->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount)
#define IUIAutomation3_RectToVariant(This,rc,var) (This)->lpVtbl->RectToVariant(This,rc,var)
#define IUIAutomation3_VariantToRect(This,var,rc) (This)->lpVtbl->VariantToRect(This,var,rc)
#define IUIAutomation3_SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount) (This)->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount)
#define IUIAutomation3_CreateProxyFactoryEntry(This,factory,factoryEntry) (This)->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry)
#define IUIAutomation3_get_ProxyFactoryMapping(This,factoryMapping) (This)->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping)
#define IUIAutomation3_GetPropertyProgrammaticName(This,property,name) (This)->lpVtbl->GetPropertyProgrammaticName(This,property,name)
#define IUIAutomation3_GetPatternProgrammaticName(This,pattern,name) (This)->lpVtbl->GetPatternProgrammaticName(This,pattern,name)
#define IUIAutomation3_PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames) (This)->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames)
#define IUIAutomation3_PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames) (This)->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames)
#define IUIAutomation3_CheckNotSupported(This,value,isNotSupported) (This)->lpVtbl->CheckNotSupported(This,value,isNotSupported)
#define IUIAutomation3_get_ReservedNotSupportedValue(This,notSupportedValue) (This)->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue)
#define IUIAutomation3_get_ReservedMixedAttributeValue(This,mixedAttributeValue) (This)->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue)
#define IUIAutomation3_ElementFromIAccessible(This,accessible,childId,element) (This)->lpVtbl->ElementFromIAccessible(This,accessible,childId,element)
#define IUIAutomation3_ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element) (This)->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element)
/*** IUIAutomation2 methods ***/
#define IUIAutomation3_get_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->get_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation3_put_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->put_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation3_get_ConnectionTimeout(This,timeout) (This)->lpVtbl->get_ConnectionTimeout(This,timeout)
#define IUIAutomation3_put_ConnectionTimeout(This,timeout) (This)->lpVtbl->put_ConnectionTimeout(This,timeout)
#define IUIAutomation3_get_TransactionTimeout(This,timeout) (This)->lpVtbl->get_TransactionTimeout(This,timeout)
#define IUIAutomation3_put_TransactionTimeout(This,timeout) (This)->lpVtbl->put_TransactionTimeout(This,timeout)
/*** IUIAutomation3 methods ***/
#define IUIAutomation3_AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler) (This)->lpVtbl->AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler)
#define IUIAutomation3_RemoveTextEditTextChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveTextEditTextChangedEventHandler(This,element,handler)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomation3_QueryInterface(IUIAutomation3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomation3_AddRef(IUIAutomation3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomation3_Release(IUIAutomation3* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomation methods ***/
static inline HRESULT IUIAutomation3_CompareElements(IUIAutomation3* This,IUIAutomationElement *el1,IUIAutomationElement *el2,WINBOOL *areSame) {
    return This->lpVtbl->CompareElements(This,el1,el2,areSame);
}
static inline HRESULT IUIAutomation3_CompareRuntimeIds(IUIAutomation3* This,SAFEARRAY *runtimeId1,SAFEARRAY *runtimeId2,WINBOOL *areSame) {
    return This->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame);
}
static inline HRESULT IUIAutomation3_GetRootElement(IUIAutomation3* This,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElement(This,root);
}
static inline HRESULT IUIAutomation3_ElementFromHandle(IUIAutomation3* This,UIA_HWND hwnd,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandle(This,hwnd,element);
}
static inline HRESULT IUIAutomation3_ElementFromPoint(IUIAutomation3* This,POINT pt,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPoint(This,pt,element);
}
static inline HRESULT IUIAutomation3_GetFocusedElement(IUIAutomation3* This,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElement(This,element);
}
static inline HRESULT IUIAutomation3_GetRootElementBuildCache(IUIAutomation3* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root);
}
static inline HRESULT IUIAutomation3_ElementFromHandleBuildCache(IUIAutomation3* This,UIA_HWND hwnd,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element);
}
static inline HRESULT IUIAutomation3_ElementFromPointBuildCache(IUIAutomation3* This,POINT pt,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element);
}
static inline HRESULT IUIAutomation3_GetFocusedElementBuildCache(IUIAutomation3* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element);
}
static inline HRESULT IUIAutomation3_CreateTreeWalker(IUIAutomation3* This,IUIAutomationCondition *pCondition,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->CreateTreeWalker(This,pCondition,walker);
}
static inline HRESULT IUIAutomation3_get_ControlViewWalker(IUIAutomation3* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ControlViewWalker(This,walker);
}
static inline HRESULT IUIAutomation3_get_ContentViewWalker(IUIAutomation3* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ContentViewWalker(This,walker);
}
static inline HRESULT IUIAutomation3_get_RawViewWalker(IUIAutomation3* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_RawViewWalker(This,walker);
}
static inline HRESULT IUIAutomation3_get_RawViewCondition(IUIAutomation3* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_RawViewCondition(This,condition);
}
static inline HRESULT IUIAutomation3_get_ControlViewCondition(IUIAutomation3* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ControlViewCondition(This,condition);
}
static inline HRESULT IUIAutomation3_get_ContentViewCondition(IUIAutomation3* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ContentViewCondition(This,condition);
}
static inline HRESULT IUIAutomation3_CreateCacheRequest(IUIAutomation3* This,IUIAutomationCacheRequest **cacheRequest) {
    return This->lpVtbl->CreateCacheRequest(This,cacheRequest);
}
static inline HRESULT IUIAutomation3_CreateTrueCondition(IUIAutomation3* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateTrueCondition(This,newCondition);
}
static inline HRESULT IUIAutomation3_CreateFalseCondition(IUIAutomation3* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateFalseCondition(This,newCondition);
}
static inline HRESULT IUIAutomation3_CreatePropertyCondition(IUIAutomation3* This,PROPERTYID propertyId,VARIANT value,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition);
}
static inline HRESULT IUIAutomation3_CreatePropertyConditionEx(IUIAutomation3* This,PROPERTYID propertyId,VARIANT value,enum PropertyConditionFlags flags,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition);
}
static inline HRESULT IUIAutomation3_CreateAndCondition(IUIAutomation3* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation3_CreateAndConditionFromArray(IUIAutomation3* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation3_CreateAndConditionFromNativeArray(IUIAutomation3* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation3_CreateOrCondition(IUIAutomation3* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation3_CreateOrConditionFromArray(IUIAutomation3* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation3_CreateOrConditionFromNativeArray(IUIAutomation3* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation3_CreateNotCondition(IUIAutomation3* This,IUIAutomationCondition *condition,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateNotCondition(This,condition,newCondition);
}
static inline HRESULT IUIAutomation3_AddAutomationEventHandler(IUIAutomation3* This,EVENTID eventId,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation3_RemoveAutomationEventHandler(IUIAutomation3* This,EVENTID eventId,IUIAutomationElement *element,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler);
}
static inline HRESULT IUIAutomation3_AddPropertyChangedEventHandlerNativeArray(IUIAutomation3* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,PROPERTYID *propertyArray,int propertyCount) {
    return This->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount);
}
static inline HRESULT IUIAutomation3_AddPropertyChangedEventHandler(IUIAutomation3* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,SAFEARRAY *propertyArray) {
    return This->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray);
}
static inline HRESULT IUIAutomation3_RemovePropertyChangedEventHandler(IUIAutomation3* This,IUIAutomationElement *element,IUIAutomationPropertyChangedEventHandler *handler) {
    return This->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation3_AddStructureChangedEventHandler(IUIAutomation3* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation3_RemoveStructureChangedEventHandler(IUIAutomation3* This,IUIAutomationElement *element,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation3_AddFocusChangedEventHandler(IUIAutomation3* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler);
}
static inline HRESULT IUIAutomation3_RemoveFocusChangedEventHandler(IUIAutomation3* This,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->RemoveFocusChangedEventHandler(This,handler);
}
static inline HRESULT IUIAutomation3_RemoveAllEventHandlers(IUIAutomation3* This) {
    return This->lpVtbl->RemoveAllEventHandlers(This);
}
static inline HRESULT IUIAutomation3_IntNativeArrayToSafeArray(IUIAutomation3* This,int *array,int arrayCount,SAFEARRAY **safeArray) {
    return This->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray);
}
static inline HRESULT IUIAutomation3_IntSafeArrayToNativeArray(IUIAutomation3* This,SAFEARRAY *intArray,int **array,int *arrayCount) {
    return This->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount);
}
static inline HRESULT IUIAutomation3_RectToVariant(IUIAutomation3* This,RECT rc,VARIANT *var) {
    return This->lpVtbl->RectToVariant(This,rc,var);
}
static inline HRESULT IUIAutomation3_VariantToRect(IUIAutomation3* This,VARIANT var,RECT *rc) {
    return This->lpVtbl->VariantToRect(This,var,rc);
}
static inline HRESULT IUIAutomation3_SafeArrayToRectNativeArray(IUIAutomation3* This,SAFEARRAY *rects,RECT **rectArray,int *rectArrayCount) {
    return This->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount);
}
static inline HRESULT IUIAutomation3_CreateProxyFactoryEntry(IUIAutomation3* This,IUIAutomationProxyFactory *factory,IUIAutomationProxyFactoryEntry **factoryEntry) {
    return This->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry);
}
static inline HRESULT IUIAutomation3_get_ProxyFactoryMapping(IUIAutomation3* This,IUIAutomationProxyFactoryMapping **factoryMapping) {
    return This->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping);
}
static inline HRESULT IUIAutomation3_GetPropertyProgrammaticName(IUIAutomation3* This,PROPERTYID property,BSTR *name) {
    return This->lpVtbl->GetPropertyProgrammaticName(This,property,name);
}
static inline HRESULT IUIAutomation3_GetPatternProgrammaticName(IUIAutomation3* This,PATTERNID pattern,BSTR *name) {
    return This->lpVtbl->GetPatternProgrammaticName(This,pattern,name);
}
static inline HRESULT IUIAutomation3_PollForPotentialSupportedPatterns(IUIAutomation3* This,IUIAutomationElement *pElement,SAFEARRAY **patternIds,SAFEARRAY **patternNames) {
    return This->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames);
}
static inline HRESULT IUIAutomation3_PollForPotentialSupportedProperties(IUIAutomation3* This,IUIAutomationElement *pElement,SAFEARRAY **propertyIds,SAFEARRAY **propertyNames) {
    return This->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames);
}
static inline HRESULT IUIAutomation3_CheckNotSupported(IUIAutomation3* This,VARIANT value,WINBOOL *isNotSupported) {
    return This->lpVtbl->CheckNotSupported(This,value,isNotSupported);
}
static inline HRESULT IUIAutomation3_get_ReservedNotSupportedValue(IUIAutomation3* This,IUnknown **notSupportedValue) {
    return This->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue);
}
static inline HRESULT IUIAutomation3_get_ReservedMixedAttributeValue(IUIAutomation3* This,IUnknown **mixedAttributeValue) {
    return This->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue);
}
static inline HRESULT IUIAutomation3_ElementFromIAccessible(IUIAutomation3* This,IAccessible *accessible,int childId,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessible(This,accessible,childId,element);
}
static inline HRESULT IUIAutomation3_ElementFromIAccessibleBuildCache(IUIAutomation3* This,IAccessible *accessible,int childId,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element);
}
/*** IUIAutomation2 methods ***/
static inline HRESULT IUIAutomation3_get_AutoSetFocus(IUIAutomation3* This,WINBOOL *autoSetFocus) {
    return This->lpVtbl->get_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation3_put_AutoSetFocus(IUIAutomation3* This,WINBOOL autoSetFocus) {
    return This->lpVtbl->put_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation3_get_ConnectionTimeout(IUIAutomation3* This,DWORD *timeout) {
    return This->lpVtbl->get_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation3_put_ConnectionTimeout(IUIAutomation3* This,DWORD timeout) {
    return This->lpVtbl->put_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation3_get_TransactionTimeout(IUIAutomation3* This,DWORD *timeout) {
    return This->lpVtbl->get_TransactionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation3_put_TransactionTimeout(IUIAutomation3* This,DWORD timeout) {
    return This->lpVtbl->put_TransactionTimeout(This,timeout);
}
/*** IUIAutomation3 methods ***/
static inline HRESULT IUIAutomation3_AddTextEditTextChangedEventHandler(IUIAutomation3* This,IUIAutomationElement *element,enum TreeScope scope,enum TextEditChangeType textEditChangeType,IUIAutomationCacheRequest *cacheRequest,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler);
}
static inline HRESULT IUIAutomation3_RemoveTextEditTextChangedEventHandler(IUIAutomation3* This,IUIAutomationElement *element,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->RemoveTextEditTextChangedEventHandler(This,element,handler);
}
#endif
#endif

#endif


#endif  /* __IUIAutomation3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomation4 interface
 */
#ifndef __IUIAutomation4_INTERFACE_DEFINED__
#define __IUIAutomation4_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomation4, 0x1189c02a, 0x05f8, 0x4319, 0x8e,0x21, 0xe8,0x17,0xe3,0xdb,0x28,0x60);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1189c02a-05f8-4319-8e21-e817e3db2860")
IUIAutomation4 : public IUIAutomation3
{
    virtual HRESULT STDMETHODCALLTYPE AddChangesEventHandler(
        IUIAutomationElement *element,
        enum TreeScope scope,
        int *changeTypes,
        int changesCount,
        IUIAutomationCacheRequest *pCacheRequest,
        IUIAutomationChangesEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveChangesEventHandler(
        IUIAutomationElement *element,
        IUIAutomationChangesEventHandler *handler) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomation4, 0x1189c02a, 0x05f8, 0x4319, 0x8e,0x21, 0xe8,0x17,0xe3,0xdb,0x28,0x60)
#endif
#else
typedef struct IUIAutomation4Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomation4 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomation4 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomation4 *This);

    /*** IUIAutomation methods ***/
    HRESULT (STDMETHODCALLTYPE *CompareElements)(
        IUIAutomation4 *This,
        IUIAutomationElement *el1,
        IUIAutomationElement *el2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *CompareRuntimeIds)(
        IUIAutomation4 *This,
        SAFEARRAY *runtimeId1,
        SAFEARRAY *runtimeId2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *GetRootElement)(
        IUIAutomation4 *This,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandle)(
        IUIAutomation4 *This,
        UIA_HWND hwnd,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPoint)(
        IUIAutomation4 *This,
        POINT pt,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElement)(
        IUIAutomation4 *This,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetRootElementBuildCache)(
        IUIAutomation4 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandleBuildCache)(
        IUIAutomation4 *This,
        UIA_HWND hwnd,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPointBuildCache)(
        IUIAutomation4 *This,
        POINT pt,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElementBuildCache)(
        IUIAutomation4 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *CreateTreeWalker)(
        IUIAutomation4 *This,
        IUIAutomationCondition *pCondition,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewWalker)(
        IUIAutomation4 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewWalker)(
        IUIAutomation4 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewWalker)(
        IUIAutomation4 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewCondition)(
        IUIAutomation4 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewCondition)(
        IUIAutomation4 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewCondition)(
        IUIAutomation4 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *CreateCacheRequest)(
        IUIAutomation4 *This,
        IUIAutomationCacheRequest **cacheRequest);

    HRESULT (STDMETHODCALLTYPE *CreateTrueCondition)(
        IUIAutomation4 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateFalseCondition)(
        IUIAutomation4 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyCondition)(
        IUIAutomation4 *This,
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyConditionEx)(
        IUIAutomation4 *This,
        PROPERTYID propertyId,
        VARIANT value,
        enum PropertyConditionFlags flags,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndCondition)(
        IUIAutomation4 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromArray)(
        IUIAutomation4 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromNativeArray)(
        IUIAutomation4 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrCondition)(
        IUIAutomation4 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromArray)(
        IUIAutomation4 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromNativeArray)(
        IUIAutomation4 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateNotCondition)(
        IUIAutomation4 *This,
        IUIAutomationCondition *condition,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *AddAutomationEventHandler)(
        IUIAutomation4 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAutomationEventHandler)(
        IUIAutomation4 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandlerNativeArray)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        SAFEARRAY *propertyArray);

    HRESULT (STDMETHODCALLTYPE *RemovePropertyChangedEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        IUIAutomationPropertyChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddStructureChangedEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveStructureChangedEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddFocusChangedEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveFocusChangedEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAllEventHandlers)(
        IUIAutomation4 *This);

    HRESULT (STDMETHODCALLTYPE *IntNativeArrayToSafeArray)(
        IUIAutomation4 *This,
        int *array,
        int arrayCount,
        SAFEARRAY **safeArray);

    HRESULT (STDMETHODCALLTYPE *IntSafeArrayToNativeArray)(
        IUIAutomation4 *This,
        SAFEARRAY *intArray,
        int **array,
        int *arrayCount);

    HRESULT (STDMETHODCALLTYPE *RectToVariant)(
        IUIAutomation4 *This,
        RECT rc,
        VARIANT *var);

    HRESULT (STDMETHODCALLTYPE *VariantToRect)(
        IUIAutomation4 *This,
        VARIANT var,
        RECT *rc);

    HRESULT (STDMETHODCALLTYPE *SafeArrayToRectNativeArray)(
        IUIAutomation4 *This,
        SAFEARRAY *rects,
        RECT **rectArray,
        int *rectArrayCount);

    HRESULT (STDMETHODCALLTYPE *CreateProxyFactoryEntry)(
        IUIAutomation4 *This,
        IUIAutomationProxyFactory *factory,
        IUIAutomationProxyFactoryEntry **factoryEntry);

    HRESULT (STDMETHODCALLTYPE *get_ProxyFactoryMapping)(
        IUIAutomation4 *This,
        IUIAutomationProxyFactoryMapping **factoryMapping);

    HRESULT (STDMETHODCALLTYPE *GetPropertyProgrammaticName)(
        IUIAutomation4 *This,
        PROPERTYID property,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *GetPatternProgrammaticName)(
        IUIAutomation4 *This,
        PATTERNID pattern,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedPatterns)(
        IUIAutomation4 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **patternIds,
        SAFEARRAY **patternNames);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedProperties)(
        IUIAutomation4 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **propertyIds,
        SAFEARRAY **propertyNames);

    HRESULT (STDMETHODCALLTYPE *CheckNotSupported)(
        IUIAutomation4 *This,
        VARIANT value,
        WINBOOL *isNotSupported);

    HRESULT (STDMETHODCALLTYPE *get_ReservedNotSupportedValue)(
        IUIAutomation4 *This,
        IUnknown **notSupportedValue);

    HRESULT (STDMETHODCALLTYPE *get_ReservedMixedAttributeValue)(
        IUIAutomation4 *This,
        IUnknown **mixedAttributeValue);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessible)(
        IUIAutomation4 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessibleBuildCache)(
        IUIAutomation4 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    /*** IUIAutomation2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AutoSetFocus)(
        IUIAutomation4 *This,
        WINBOOL *autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *put_AutoSetFocus)(
        IUIAutomation4 *This,
        WINBOOL autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *get_ConnectionTimeout)(
        IUIAutomation4 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_ConnectionTimeout)(
        IUIAutomation4 *This,
        DWORD timeout);

    HRESULT (STDMETHODCALLTYPE *get_TransactionTimeout)(
        IUIAutomation4 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_TransactionTimeout)(
        IUIAutomation4 *This,
        DWORD timeout);

    /*** IUIAutomation3 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddTextEditTextChangedEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        enum TextEditChangeType textEditChangeType,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveTextEditTextChangedEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    /*** IUIAutomation4 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddChangesEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        int *changeTypes,
        int changesCount,
        IUIAutomationCacheRequest *pCacheRequest,
        IUIAutomationChangesEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveChangesEventHandler)(
        IUIAutomation4 *This,
        IUIAutomationElement *element,
        IUIAutomationChangesEventHandler *handler);

    END_INTERFACE
} IUIAutomation4Vtbl;

interface IUIAutomation4 {
    CONST_VTBL IUIAutomation4Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomation4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomation4_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomation4_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomation methods ***/
#define IUIAutomation4_CompareElements(This,el1,el2,areSame) (This)->lpVtbl->CompareElements(This,el1,el2,areSame)
#define IUIAutomation4_CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame) (This)->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame)
#define IUIAutomation4_GetRootElement(This,root) (This)->lpVtbl->GetRootElement(This,root)
#define IUIAutomation4_ElementFromHandle(This,hwnd,element) (This)->lpVtbl->ElementFromHandle(This,hwnd,element)
#define IUIAutomation4_ElementFromPoint(This,pt,element) (This)->lpVtbl->ElementFromPoint(This,pt,element)
#define IUIAutomation4_GetFocusedElement(This,element) (This)->lpVtbl->GetFocusedElement(This,element)
#define IUIAutomation4_GetRootElementBuildCache(This,cacheRequest,root) (This)->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root)
#define IUIAutomation4_ElementFromHandleBuildCache(This,hwnd,cacheRequest,element) (This)->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element)
#define IUIAutomation4_ElementFromPointBuildCache(This,pt,cacheRequest,element) (This)->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element)
#define IUIAutomation4_GetFocusedElementBuildCache(This,cacheRequest,element) (This)->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element)
#define IUIAutomation4_CreateTreeWalker(This,pCondition,walker) (This)->lpVtbl->CreateTreeWalker(This,pCondition,walker)
#define IUIAutomation4_get_ControlViewWalker(This,walker) (This)->lpVtbl->get_ControlViewWalker(This,walker)
#define IUIAutomation4_get_ContentViewWalker(This,walker) (This)->lpVtbl->get_ContentViewWalker(This,walker)
#define IUIAutomation4_get_RawViewWalker(This,walker) (This)->lpVtbl->get_RawViewWalker(This,walker)
#define IUIAutomation4_get_RawViewCondition(This,condition) (This)->lpVtbl->get_RawViewCondition(This,condition)
#define IUIAutomation4_get_ControlViewCondition(This,condition) (This)->lpVtbl->get_ControlViewCondition(This,condition)
#define IUIAutomation4_get_ContentViewCondition(This,condition) (This)->lpVtbl->get_ContentViewCondition(This,condition)
#define IUIAutomation4_CreateCacheRequest(This,cacheRequest) (This)->lpVtbl->CreateCacheRequest(This,cacheRequest)
#define IUIAutomation4_CreateTrueCondition(This,newCondition) (This)->lpVtbl->CreateTrueCondition(This,newCondition)
#define IUIAutomation4_CreateFalseCondition(This,newCondition) (This)->lpVtbl->CreateFalseCondition(This,newCondition)
#define IUIAutomation4_CreatePropertyCondition(This,propertyId,value,newCondition) (This)->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition)
#define IUIAutomation4_CreatePropertyConditionEx(This,propertyId,value,flags,newCondition) (This)->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition)
#define IUIAutomation4_CreateAndCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition)
#define IUIAutomation4_CreateAndConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition)
#define IUIAutomation4_CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation4_CreateOrCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition)
#define IUIAutomation4_CreateOrConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition)
#define IUIAutomation4_CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation4_CreateNotCondition(This,condition,newCondition) (This)->lpVtbl->CreateNotCondition(This,condition,newCondition)
#define IUIAutomation4_AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler) (This)->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler)
#define IUIAutomation4_RemoveAutomationEventHandler(This,eventId,element,handler) (This)->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler)
#define IUIAutomation4_AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount) (This)->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount)
#define IUIAutomation4_AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray) (This)->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray)
#define IUIAutomation4_RemovePropertyChangedEventHandler(This,element,handler) (This)->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler)
#define IUIAutomation4_AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation4_RemoveStructureChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler)
#define IUIAutomation4_AddFocusChangedEventHandler(This,cacheRequest,handler) (This)->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler)
#define IUIAutomation4_RemoveFocusChangedEventHandler(This,handler) (This)->lpVtbl->RemoveFocusChangedEventHandler(This,handler)
#define IUIAutomation4_RemoveAllEventHandlers(This) (This)->lpVtbl->RemoveAllEventHandlers(This)
#define IUIAutomation4_IntNativeArrayToSafeArray(This,array,arrayCount,safeArray) (This)->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray)
#define IUIAutomation4_IntSafeArrayToNativeArray(This,intArray,array,arrayCount) (This)->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount)
#define IUIAutomation4_RectToVariant(This,rc,var) (This)->lpVtbl->RectToVariant(This,rc,var)
#define IUIAutomation4_VariantToRect(This,var,rc) (This)->lpVtbl->VariantToRect(This,var,rc)
#define IUIAutomation4_SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount) (This)->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount)
#define IUIAutomation4_CreateProxyFactoryEntry(This,factory,factoryEntry) (This)->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry)
#define IUIAutomation4_get_ProxyFactoryMapping(This,factoryMapping) (This)->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping)
#define IUIAutomation4_GetPropertyProgrammaticName(This,property,name) (This)->lpVtbl->GetPropertyProgrammaticName(This,property,name)
#define IUIAutomation4_GetPatternProgrammaticName(This,pattern,name) (This)->lpVtbl->GetPatternProgrammaticName(This,pattern,name)
#define IUIAutomation4_PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames) (This)->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames)
#define IUIAutomation4_PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames) (This)->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames)
#define IUIAutomation4_CheckNotSupported(This,value,isNotSupported) (This)->lpVtbl->CheckNotSupported(This,value,isNotSupported)
#define IUIAutomation4_get_ReservedNotSupportedValue(This,notSupportedValue) (This)->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue)
#define IUIAutomation4_get_ReservedMixedAttributeValue(This,mixedAttributeValue) (This)->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue)
#define IUIAutomation4_ElementFromIAccessible(This,accessible,childId,element) (This)->lpVtbl->ElementFromIAccessible(This,accessible,childId,element)
#define IUIAutomation4_ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element) (This)->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element)
/*** IUIAutomation2 methods ***/
#define IUIAutomation4_get_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->get_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation4_put_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->put_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation4_get_ConnectionTimeout(This,timeout) (This)->lpVtbl->get_ConnectionTimeout(This,timeout)
#define IUIAutomation4_put_ConnectionTimeout(This,timeout) (This)->lpVtbl->put_ConnectionTimeout(This,timeout)
#define IUIAutomation4_get_TransactionTimeout(This,timeout) (This)->lpVtbl->get_TransactionTimeout(This,timeout)
#define IUIAutomation4_put_TransactionTimeout(This,timeout) (This)->lpVtbl->put_TransactionTimeout(This,timeout)
/*** IUIAutomation3 methods ***/
#define IUIAutomation4_AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler) (This)->lpVtbl->AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler)
#define IUIAutomation4_RemoveTextEditTextChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveTextEditTextChangedEventHandler(This,element,handler)
/*** IUIAutomation4 methods ***/
#define IUIAutomation4_AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler) (This)->lpVtbl->AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler)
#define IUIAutomation4_RemoveChangesEventHandler(This,element,handler) (This)->lpVtbl->RemoveChangesEventHandler(This,element,handler)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomation4_QueryInterface(IUIAutomation4* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomation4_AddRef(IUIAutomation4* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomation4_Release(IUIAutomation4* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomation methods ***/
static inline HRESULT IUIAutomation4_CompareElements(IUIAutomation4* This,IUIAutomationElement *el1,IUIAutomationElement *el2,WINBOOL *areSame) {
    return This->lpVtbl->CompareElements(This,el1,el2,areSame);
}
static inline HRESULT IUIAutomation4_CompareRuntimeIds(IUIAutomation4* This,SAFEARRAY *runtimeId1,SAFEARRAY *runtimeId2,WINBOOL *areSame) {
    return This->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame);
}
static inline HRESULT IUIAutomation4_GetRootElement(IUIAutomation4* This,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElement(This,root);
}
static inline HRESULT IUIAutomation4_ElementFromHandle(IUIAutomation4* This,UIA_HWND hwnd,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandle(This,hwnd,element);
}
static inline HRESULT IUIAutomation4_ElementFromPoint(IUIAutomation4* This,POINT pt,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPoint(This,pt,element);
}
static inline HRESULT IUIAutomation4_GetFocusedElement(IUIAutomation4* This,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElement(This,element);
}
static inline HRESULT IUIAutomation4_GetRootElementBuildCache(IUIAutomation4* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root);
}
static inline HRESULT IUIAutomation4_ElementFromHandleBuildCache(IUIAutomation4* This,UIA_HWND hwnd,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element);
}
static inline HRESULT IUIAutomation4_ElementFromPointBuildCache(IUIAutomation4* This,POINT pt,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element);
}
static inline HRESULT IUIAutomation4_GetFocusedElementBuildCache(IUIAutomation4* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element);
}
static inline HRESULT IUIAutomation4_CreateTreeWalker(IUIAutomation4* This,IUIAutomationCondition *pCondition,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->CreateTreeWalker(This,pCondition,walker);
}
static inline HRESULT IUIAutomation4_get_ControlViewWalker(IUIAutomation4* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ControlViewWalker(This,walker);
}
static inline HRESULT IUIAutomation4_get_ContentViewWalker(IUIAutomation4* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ContentViewWalker(This,walker);
}
static inline HRESULT IUIAutomation4_get_RawViewWalker(IUIAutomation4* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_RawViewWalker(This,walker);
}
static inline HRESULT IUIAutomation4_get_RawViewCondition(IUIAutomation4* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_RawViewCondition(This,condition);
}
static inline HRESULT IUIAutomation4_get_ControlViewCondition(IUIAutomation4* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ControlViewCondition(This,condition);
}
static inline HRESULT IUIAutomation4_get_ContentViewCondition(IUIAutomation4* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ContentViewCondition(This,condition);
}
static inline HRESULT IUIAutomation4_CreateCacheRequest(IUIAutomation4* This,IUIAutomationCacheRequest **cacheRequest) {
    return This->lpVtbl->CreateCacheRequest(This,cacheRequest);
}
static inline HRESULT IUIAutomation4_CreateTrueCondition(IUIAutomation4* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateTrueCondition(This,newCondition);
}
static inline HRESULT IUIAutomation4_CreateFalseCondition(IUIAutomation4* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateFalseCondition(This,newCondition);
}
static inline HRESULT IUIAutomation4_CreatePropertyCondition(IUIAutomation4* This,PROPERTYID propertyId,VARIANT value,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition);
}
static inline HRESULT IUIAutomation4_CreatePropertyConditionEx(IUIAutomation4* This,PROPERTYID propertyId,VARIANT value,enum PropertyConditionFlags flags,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition);
}
static inline HRESULT IUIAutomation4_CreateAndCondition(IUIAutomation4* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation4_CreateAndConditionFromArray(IUIAutomation4* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation4_CreateAndConditionFromNativeArray(IUIAutomation4* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation4_CreateOrCondition(IUIAutomation4* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation4_CreateOrConditionFromArray(IUIAutomation4* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation4_CreateOrConditionFromNativeArray(IUIAutomation4* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation4_CreateNotCondition(IUIAutomation4* This,IUIAutomationCondition *condition,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateNotCondition(This,condition,newCondition);
}
static inline HRESULT IUIAutomation4_AddAutomationEventHandler(IUIAutomation4* This,EVENTID eventId,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation4_RemoveAutomationEventHandler(IUIAutomation4* This,EVENTID eventId,IUIAutomationElement *element,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler);
}
static inline HRESULT IUIAutomation4_AddPropertyChangedEventHandlerNativeArray(IUIAutomation4* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,PROPERTYID *propertyArray,int propertyCount) {
    return This->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount);
}
static inline HRESULT IUIAutomation4_AddPropertyChangedEventHandler(IUIAutomation4* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,SAFEARRAY *propertyArray) {
    return This->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray);
}
static inline HRESULT IUIAutomation4_RemovePropertyChangedEventHandler(IUIAutomation4* This,IUIAutomationElement *element,IUIAutomationPropertyChangedEventHandler *handler) {
    return This->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation4_AddStructureChangedEventHandler(IUIAutomation4* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation4_RemoveStructureChangedEventHandler(IUIAutomation4* This,IUIAutomationElement *element,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation4_AddFocusChangedEventHandler(IUIAutomation4* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler);
}
static inline HRESULT IUIAutomation4_RemoveFocusChangedEventHandler(IUIAutomation4* This,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->RemoveFocusChangedEventHandler(This,handler);
}
static inline HRESULT IUIAutomation4_RemoveAllEventHandlers(IUIAutomation4* This) {
    return This->lpVtbl->RemoveAllEventHandlers(This);
}
static inline HRESULT IUIAutomation4_IntNativeArrayToSafeArray(IUIAutomation4* This,int *array,int arrayCount,SAFEARRAY **safeArray) {
    return This->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray);
}
static inline HRESULT IUIAutomation4_IntSafeArrayToNativeArray(IUIAutomation4* This,SAFEARRAY *intArray,int **array,int *arrayCount) {
    return This->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount);
}
static inline HRESULT IUIAutomation4_RectToVariant(IUIAutomation4* This,RECT rc,VARIANT *var) {
    return This->lpVtbl->RectToVariant(This,rc,var);
}
static inline HRESULT IUIAutomation4_VariantToRect(IUIAutomation4* This,VARIANT var,RECT *rc) {
    return This->lpVtbl->VariantToRect(This,var,rc);
}
static inline HRESULT IUIAutomation4_SafeArrayToRectNativeArray(IUIAutomation4* This,SAFEARRAY *rects,RECT **rectArray,int *rectArrayCount) {
    return This->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount);
}
static inline HRESULT IUIAutomation4_CreateProxyFactoryEntry(IUIAutomation4* This,IUIAutomationProxyFactory *factory,IUIAutomationProxyFactoryEntry **factoryEntry) {
    return This->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry);
}
static inline HRESULT IUIAutomation4_get_ProxyFactoryMapping(IUIAutomation4* This,IUIAutomationProxyFactoryMapping **factoryMapping) {
    return This->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping);
}
static inline HRESULT IUIAutomation4_GetPropertyProgrammaticName(IUIAutomation4* This,PROPERTYID property,BSTR *name) {
    return This->lpVtbl->GetPropertyProgrammaticName(This,property,name);
}
static inline HRESULT IUIAutomation4_GetPatternProgrammaticName(IUIAutomation4* This,PATTERNID pattern,BSTR *name) {
    return This->lpVtbl->GetPatternProgrammaticName(This,pattern,name);
}
static inline HRESULT IUIAutomation4_PollForPotentialSupportedPatterns(IUIAutomation4* This,IUIAutomationElement *pElement,SAFEARRAY **patternIds,SAFEARRAY **patternNames) {
    return This->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames);
}
static inline HRESULT IUIAutomation4_PollForPotentialSupportedProperties(IUIAutomation4* This,IUIAutomationElement *pElement,SAFEARRAY **propertyIds,SAFEARRAY **propertyNames) {
    return This->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames);
}
static inline HRESULT IUIAutomation4_CheckNotSupported(IUIAutomation4* This,VARIANT value,WINBOOL *isNotSupported) {
    return This->lpVtbl->CheckNotSupported(This,value,isNotSupported);
}
static inline HRESULT IUIAutomation4_get_ReservedNotSupportedValue(IUIAutomation4* This,IUnknown **notSupportedValue) {
    return This->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue);
}
static inline HRESULT IUIAutomation4_get_ReservedMixedAttributeValue(IUIAutomation4* This,IUnknown **mixedAttributeValue) {
    return This->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue);
}
static inline HRESULT IUIAutomation4_ElementFromIAccessible(IUIAutomation4* This,IAccessible *accessible,int childId,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessible(This,accessible,childId,element);
}
static inline HRESULT IUIAutomation4_ElementFromIAccessibleBuildCache(IUIAutomation4* This,IAccessible *accessible,int childId,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element);
}
/*** IUIAutomation2 methods ***/
static inline HRESULT IUIAutomation4_get_AutoSetFocus(IUIAutomation4* This,WINBOOL *autoSetFocus) {
    return This->lpVtbl->get_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation4_put_AutoSetFocus(IUIAutomation4* This,WINBOOL autoSetFocus) {
    return This->lpVtbl->put_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation4_get_ConnectionTimeout(IUIAutomation4* This,DWORD *timeout) {
    return This->lpVtbl->get_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation4_put_ConnectionTimeout(IUIAutomation4* This,DWORD timeout) {
    return This->lpVtbl->put_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation4_get_TransactionTimeout(IUIAutomation4* This,DWORD *timeout) {
    return This->lpVtbl->get_TransactionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation4_put_TransactionTimeout(IUIAutomation4* This,DWORD timeout) {
    return This->lpVtbl->put_TransactionTimeout(This,timeout);
}
/*** IUIAutomation3 methods ***/
static inline HRESULT IUIAutomation4_AddTextEditTextChangedEventHandler(IUIAutomation4* This,IUIAutomationElement *element,enum TreeScope scope,enum TextEditChangeType textEditChangeType,IUIAutomationCacheRequest *cacheRequest,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler);
}
static inline HRESULT IUIAutomation4_RemoveTextEditTextChangedEventHandler(IUIAutomation4* This,IUIAutomationElement *element,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->RemoveTextEditTextChangedEventHandler(This,element,handler);
}
/*** IUIAutomation4 methods ***/
static inline HRESULT IUIAutomation4_AddChangesEventHandler(IUIAutomation4* This,IUIAutomationElement *element,enum TreeScope scope,int *changeTypes,int changesCount,IUIAutomationCacheRequest *pCacheRequest,IUIAutomationChangesEventHandler *handler) {
    return This->lpVtbl->AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler);
}
static inline HRESULT IUIAutomation4_RemoveChangesEventHandler(IUIAutomation4* This,IUIAutomationElement *element,IUIAutomationChangesEventHandler *handler) {
    return This->lpVtbl->RemoveChangesEventHandler(This,element,handler);
}
#endif
#endif

#endif


#endif  /* __IUIAutomation4_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomation5 interface
 */
#ifndef __IUIAutomation5_INTERFACE_DEFINED__
#define __IUIAutomation5_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomation5, 0x25f700c8, 0xd816, 0x4057, 0xa9,0xdc, 0x3c,0xbd,0xee,0x77,0xe2,0x56);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("25f700c8-d816-4057-a9dc-3cbdee77e256")
IUIAutomation5 : public IUIAutomation4
{
    virtual HRESULT STDMETHODCALLTYPE AddNotificationEventHandler(
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationNotificationEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveNotificationEventHandler(
        IUIAutomationElement *element,
        IUIAutomationNotificationEventHandler *handler) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomation5, 0x25f700c8, 0xd816, 0x4057, 0xa9,0xdc, 0x3c,0xbd,0xee,0x77,0xe2,0x56)
#endif
#else
typedef struct IUIAutomation5Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomation5 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomation5 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomation5 *This);

    /*** IUIAutomation methods ***/
    HRESULT (STDMETHODCALLTYPE *CompareElements)(
        IUIAutomation5 *This,
        IUIAutomationElement *el1,
        IUIAutomationElement *el2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *CompareRuntimeIds)(
        IUIAutomation5 *This,
        SAFEARRAY *runtimeId1,
        SAFEARRAY *runtimeId2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *GetRootElement)(
        IUIAutomation5 *This,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandle)(
        IUIAutomation5 *This,
        UIA_HWND hwnd,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPoint)(
        IUIAutomation5 *This,
        POINT pt,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElement)(
        IUIAutomation5 *This,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetRootElementBuildCache)(
        IUIAutomation5 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandleBuildCache)(
        IUIAutomation5 *This,
        UIA_HWND hwnd,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPointBuildCache)(
        IUIAutomation5 *This,
        POINT pt,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElementBuildCache)(
        IUIAutomation5 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *CreateTreeWalker)(
        IUIAutomation5 *This,
        IUIAutomationCondition *pCondition,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewWalker)(
        IUIAutomation5 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewWalker)(
        IUIAutomation5 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewWalker)(
        IUIAutomation5 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewCondition)(
        IUIAutomation5 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewCondition)(
        IUIAutomation5 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewCondition)(
        IUIAutomation5 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *CreateCacheRequest)(
        IUIAutomation5 *This,
        IUIAutomationCacheRequest **cacheRequest);

    HRESULT (STDMETHODCALLTYPE *CreateTrueCondition)(
        IUIAutomation5 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateFalseCondition)(
        IUIAutomation5 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyCondition)(
        IUIAutomation5 *This,
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyConditionEx)(
        IUIAutomation5 *This,
        PROPERTYID propertyId,
        VARIANT value,
        enum PropertyConditionFlags flags,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndCondition)(
        IUIAutomation5 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromArray)(
        IUIAutomation5 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromNativeArray)(
        IUIAutomation5 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrCondition)(
        IUIAutomation5 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromArray)(
        IUIAutomation5 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromNativeArray)(
        IUIAutomation5 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateNotCondition)(
        IUIAutomation5 *This,
        IUIAutomationCondition *condition,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *AddAutomationEventHandler)(
        IUIAutomation5 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAutomationEventHandler)(
        IUIAutomation5 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandlerNativeArray)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        SAFEARRAY *propertyArray);

    HRESULT (STDMETHODCALLTYPE *RemovePropertyChangedEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        IUIAutomationPropertyChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddStructureChangedEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveStructureChangedEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddFocusChangedEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveFocusChangedEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAllEventHandlers)(
        IUIAutomation5 *This);

    HRESULT (STDMETHODCALLTYPE *IntNativeArrayToSafeArray)(
        IUIAutomation5 *This,
        int *array,
        int arrayCount,
        SAFEARRAY **safeArray);

    HRESULT (STDMETHODCALLTYPE *IntSafeArrayToNativeArray)(
        IUIAutomation5 *This,
        SAFEARRAY *intArray,
        int **array,
        int *arrayCount);

    HRESULT (STDMETHODCALLTYPE *RectToVariant)(
        IUIAutomation5 *This,
        RECT rc,
        VARIANT *var);

    HRESULT (STDMETHODCALLTYPE *VariantToRect)(
        IUIAutomation5 *This,
        VARIANT var,
        RECT *rc);

    HRESULT (STDMETHODCALLTYPE *SafeArrayToRectNativeArray)(
        IUIAutomation5 *This,
        SAFEARRAY *rects,
        RECT **rectArray,
        int *rectArrayCount);

    HRESULT (STDMETHODCALLTYPE *CreateProxyFactoryEntry)(
        IUIAutomation5 *This,
        IUIAutomationProxyFactory *factory,
        IUIAutomationProxyFactoryEntry **factoryEntry);

    HRESULT (STDMETHODCALLTYPE *get_ProxyFactoryMapping)(
        IUIAutomation5 *This,
        IUIAutomationProxyFactoryMapping **factoryMapping);

    HRESULT (STDMETHODCALLTYPE *GetPropertyProgrammaticName)(
        IUIAutomation5 *This,
        PROPERTYID property,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *GetPatternProgrammaticName)(
        IUIAutomation5 *This,
        PATTERNID pattern,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedPatterns)(
        IUIAutomation5 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **patternIds,
        SAFEARRAY **patternNames);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedProperties)(
        IUIAutomation5 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **propertyIds,
        SAFEARRAY **propertyNames);

    HRESULT (STDMETHODCALLTYPE *CheckNotSupported)(
        IUIAutomation5 *This,
        VARIANT value,
        WINBOOL *isNotSupported);

    HRESULT (STDMETHODCALLTYPE *get_ReservedNotSupportedValue)(
        IUIAutomation5 *This,
        IUnknown **notSupportedValue);

    HRESULT (STDMETHODCALLTYPE *get_ReservedMixedAttributeValue)(
        IUIAutomation5 *This,
        IUnknown **mixedAttributeValue);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessible)(
        IUIAutomation5 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessibleBuildCache)(
        IUIAutomation5 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    /*** IUIAutomation2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AutoSetFocus)(
        IUIAutomation5 *This,
        WINBOOL *autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *put_AutoSetFocus)(
        IUIAutomation5 *This,
        WINBOOL autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *get_ConnectionTimeout)(
        IUIAutomation5 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_ConnectionTimeout)(
        IUIAutomation5 *This,
        DWORD timeout);

    HRESULT (STDMETHODCALLTYPE *get_TransactionTimeout)(
        IUIAutomation5 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_TransactionTimeout)(
        IUIAutomation5 *This,
        DWORD timeout);

    /*** IUIAutomation3 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddTextEditTextChangedEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        enum TextEditChangeType textEditChangeType,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveTextEditTextChangedEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    /*** IUIAutomation4 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddChangesEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        int *changeTypes,
        int changesCount,
        IUIAutomationCacheRequest *pCacheRequest,
        IUIAutomationChangesEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveChangesEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        IUIAutomationChangesEventHandler *handler);

    /*** IUIAutomation5 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddNotificationEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationNotificationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveNotificationEventHandler)(
        IUIAutomation5 *This,
        IUIAutomationElement *element,
        IUIAutomationNotificationEventHandler *handler);

    END_INTERFACE
} IUIAutomation5Vtbl;

interface IUIAutomation5 {
    CONST_VTBL IUIAutomation5Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomation5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomation5_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomation5_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomation methods ***/
#define IUIAutomation5_CompareElements(This,el1,el2,areSame) (This)->lpVtbl->CompareElements(This,el1,el2,areSame)
#define IUIAutomation5_CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame) (This)->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame)
#define IUIAutomation5_GetRootElement(This,root) (This)->lpVtbl->GetRootElement(This,root)
#define IUIAutomation5_ElementFromHandle(This,hwnd,element) (This)->lpVtbl->ElementFromHandle(This,hwnd,element)
#define IUIAutomation5_ElementFromPoint(This,pt,element) (This)->lpVtbl->ElementFromPoint(This,pt,element)
#define IUIAutomation5_GetFocusedElement(This,element) (This)->lpVtbl->GetFocusedElement(This,element)
#define IUIAutomation5_GetRootElementBuildCache(This,cacheRequest,root) (This)->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root)
#define IUIAutomation5_ElementFromHandleBuildCache(This,hwnd,cacheRequest,element) (This)->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element)
#define IUIAutomation5_ElementFromPointBuildCache(This,pt,cacheRequest,element) (This)->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element)
#define IUIAutomation5_GetFocusedElementBuildCache(This,cacheRequest,element) (This)->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element)
#define IUIAutomation5_CreateTreeWalker(This,pCondition,walker) (This)->lpVtbl->CreateTreeWalker(This,pCondition,walker)
#define IUIAutomation5_get_ControlViewWalker(This,walker) (This)->lpVtbl->get_ControlViewWalker(This,walker)
#define IUIAutomation5_get_ContentViewWalker(This,walker) (This)->lpVtbl->get_ContentViewWalker(This,walker)
#define IUIAutomation5_get_RawViewWalker(This,walker) (This)->lpVtbl->get_RawViewWalker(This,walker)
#define IUIAutomation5_get_RawViewCondition(This,condition) (This)->lpVtbl->get_RawViewCondition(This,condition)
#define IUIAutomation5_get_ControlViewCondition(This,condition) (This)->lpVtbl->get_ControlViewCondition(This,condition)
#define IUIAutomation5_get_ContentViewCondition(This,condition) (This)->lpVtbl->get_ContentViewCondition(This,condition)
#define IUIAutomation5_CreateCacheRequest(This,cacheRequest) (This)->lpVtbl->CreateCacheRequest(This,cacheRequest)
#define IUIAutomation5_CreateTrueCondition(This,newCondition) (This)->lpVtbl->CreateTrueCondition(This,newCondition)
#define IUIAutomation5_CreateFalseCondition(This,newCondition) (This)->lpVtbl->CreateFalseCondition(This,newCondition)
#define IUIAutomation5_CreatePropertyCondition(This,propertyId,value,newCondition) (This)->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition)
#define IUIAutomation5_CreatePropertyConditionEx(This,propertyId,value,flags,newCondition) (This)->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition)
#define IUIAutomation5_CreateAndCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition)
#define IUIAutomation5_CreateAndConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition)
#define IUIAutomation5_CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation5_CreateOrCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition)
#define IUIAutomation5_CreateOrConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition)
#define IUIAutomation5_CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation5_CreateNotCondition(This,condition,newCondition) (This)->lpVtbl->CreateNotCondition(This,condition,newCondition)
#define IUIAutomation5_AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler) (This)->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler)
#define IUIAutomation5_RemoveAutomationEventHandler(This,eventId,element,handler) (This)->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler)
#define IUIAutomation5_AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount) (This)->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount)
#define IUIAutomation5_AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray) (This)->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray)
#define IUIAutomation5_RemovePropertyChangedEventHandler(This,element,handler) (This)->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler)
#define IUIAutomation5_AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation5_RemoveStructureChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler)
#define IUIAutomation5_AddFocusChangedEventHandler(This,cacheRequest,handler) (This)->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler)
#define IUIAutomation5_RemoveFocusChangedEventHandler(This,handler) (This)->lpVtbl->RemoveFocusChangedEventHandler(This,handler)
#define IUIAutomation5_RemoveAllEventHandlers(This) (This)->lpVtbl->RemoveAllEventHandlers(This)
#define IUIAutomation5_IntNativeArrayToSafeArray(This,array,arrayCount,safeArray) (This)->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray)
#define IUIAutomation5_IntSafeArrayToNativeArray(This,intArray,array,arrayCount) (This)->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount)
#define IUIAutomation5_RectToVariant(This,rc,var) (This)->lpVtbl->RectToVariant(This,rc,var)
#define IUIAutomation5_VariantToRect(This,var,rc) (This)->lpVtbl->VariantToRect(This,var,rc)
#define IUIAutomation5_SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount) (This)->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount)
#define IUIAutomation5_CreateProxyFactoryEntry(This,factory,factoryEntry) (This)->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry)
#define IUIAutomation5_get_ProxyFactoryMapping(This,factoryMapping) (This)->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping)
#define IUIAutomation5_GetPropertyProgrammaticName(This,property,name) (This)->lpVtbl->GetPropertyProgrammaticName(This,property,name)
#define IUIAutomation5_GetPatternProgrammaticName(This,pattern,name) (This)->lpVtbl->GetPatternProgrammaticName(This,pattern,name)
#define IUIAutomation5_PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames) (This)->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames)
#define IUIAutomation5_PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames) (This)->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames)
#define IUIAutomation5_CheckNotSupported(This,value,isNotSupported) (This)->lpVtbl->CheckNotSupported(This,value,isNotSupported)
#define IUIAutomation5_get_ReservedNotSupportedValue(This,notSupportedValue) (This)->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue)
#define IUIAutomation5_get_ReservedMixedAttributeValue(This,mixedAttributeValue) (This)->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue)
#define IUIAutomation5_ElementFromIAccessible(This,accessible,childId,element) (This)->lpVtbl->ElementFromIAccessible(This,accessible,childId,element)
#define IUIAutomation5_ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element) (This)->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element)
/*** IUIAutomation2 methods ***/
#define IUIAutomation5_get_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->get_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation5_put_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->put_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation5_get_ConnectionTimeout(This,timeout) (This)->lpVtbl->get_ConnectionTimeout(This,timeout)
#define IUIAutomation5_put_ConnectionTimeout(This,timeout) (This)->lpVtbl->put_ConnectionTimeout(This,timeout)
#define IUIAutomation5_get_TransactionTimeout(This,timeout) (This)->lpVtbl->get_TransactionTimeout(This,timeout)
#define IUIAutomation5_put_TransactionTimeout(This,timeout) (This)->lpVtbl->put_TransactionTimeout(This,timeout)
/*** IUIAutomation3 methods ***/
#define IUIAutomation5_AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler) (This)->lpVtbl->AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler)
#define IUIAutomation5_RemoveTextEditTextChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveTextEditTextChangedEventHandler(This,element,handler)
/*** IUIAutomation4 methods ***/
#define IUIAutomation5_AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler) (This)->lpVtbl->AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler)
#define IUIAutomation5_RemoveChangesEventHandler(This,element,handler) (This)->lpVtbl->RemoveChangesEventHandler(This,element,handler)
/*** IUIAutomation5 methods ***/
#define IUIAutomation5_AddNotificationEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddNotificationEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation5_RemoveNotificationEventHandler(This,element,handler) (This)->lpVtbl->RemoveNotificationEventHandler(This,element,handler)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomation5_QueryInterface(IUIAutomation5* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomation5_AddRef(IUIAutomation5* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomation5_Release(IUIAutomation5* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomation methods ***/
static inline HRESULT IUIAutomation5_CompareElements(IUIAutomation5* This,IUIAutomationElement *el1,IUIAutomationElement *el2,WINBOOL *areSame) {
    return This->lpVtbl->CompareElements(This,el1,el2,areSame);
}
static inline HRESULT IUIAutomation5_CompareRuntimeIds(IUIAutomation5* This,SAFEARRAY *runtimeId1,SAFEARRAY *runtimeId2,WINBOOL *areSame) {
    return This->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame);
}
static inline HRESULT IUIAutomation5_GetRootElement(IUIAutomation5* This,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElement(This,root);
}
static inline HRESULT IUIAutomation5_ElementFromHandle(IUIAutomation5* This,UIA_HWND hwnd,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandle(This,hwnd,element);
}
static inline HRESULT IUIAutomation5_ElementFromPoint(IUIAutomation5* This,POINT pt,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPoint(This,pt,element);
}
static inline HRESULT IUIAutomation5_GetFocusedElement(IUIAutomation5* This,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElement(This,element);
}
static inline HRESULT IUIAutomation5_GetRootElementBuildCache(IUIAutomation5* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root);
}
static inline HRESULT IUIAutomation5_ElementFromHandleBuildCache(IUIAutomation5* This,UIA_HWND hwnd,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element);
}
static inline HRESULT IUIAutomation5_ElementFromPointBuildCache(IUIAutomation5* This,POINT pt,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element);
}
static inline HRESULT IUIAutomation5_GetFocusedElementBuildCache(IUIAutomation5* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element);
}
static inline HRESULT IUIAutomation5_CreateTreeWalker(IUIAutomation5* This,IUIAutomationCondition *pCondition,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->CreateTreeWalker(This,pCondition,walker);
}
static inline HRESULT IUIAutomation5_get_ControlViewWalker(IUIAutomation5* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ControlViewWalker(This,walker);
}
static inline HRESULT IUIAutomation5_get_ContentViewWalker(IUIAutomation5* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ContentViewWalker(This,walker);
}
static inline HRESULT IUIAutomation5_get_RawViewWalker(IUIAutomation5* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_RawViewWalker(This,walker);
}
static inline HRESULT IUIAutomation5_get_RawViewCondition(IUIAutomation5* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_RawViewCondition(This,condition);
}
static inline HRESULT IUIAutomation5_get_ControlViewCondition(IUIAutomation5* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ControlViewCondition(This,condition);
}
static inline HRESULT IUIAutomation5_get_ContentViewCondition(IUIAutomation5* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ContentViewCondition(This,condition);
}
static inline HRESULT IUIAutomation5_CreateCacheRequest(IUIAutomation5* This,IUIAutomationCacheRequest **cacheRequest) {
    return This->lpVtbl->CreateCacheRequest(This,cacheRequest);
}
static inline HRESULT IUIAutomation5_CreateTrueCondition(IUIAutomation5* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateTrueCondition(This,newCondition);
}
static inline HRESULT IUIAutomation5_CreateFalseCondition(IUIAutomation5* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateFalseCondition(This,newCondition);
}
static inline HRESULT IUIAutomation5_CreatePropertyCondition(IUIAutomation5* This,PROPERTYID propertyId,VARIANT value,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition);
}
static inline HRESULT IUIAutomation5_CreatePropertyConditionEx(IUIAutomation5* This,PROPERTYID propertyId,VARIANT value,enum PropertyConditionFlags flags,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition);
}
static inline HRESULT IUIAutomation5_CreateAndCondition(IUIAutomation5* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation5_CreateAndConditionFromArray(IUIAutomation5* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation5_CreateAndConditionFromNativeArray(IUIAutomation5* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation5_CreateOrCondition(IUIAutomation5* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation5_CreateOrConditionFromArray(IUIAutomation5* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation5_CreateOrConditionFromNativeArray(IUIAutomation5* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation5_CreateNotCondition(IUIAutomation5* This,IUIAutomationCondition *condition,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateNotCondition(This,condition,newCondition);
}
static inline HRESULT IUIAutomation5_AddAutomationEventHandler(IUIAutomation5* This,EVENTID eventId,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation5_RemoveAutomationEventHandler(IUIAutomation5* This,EVENTID eventId,IUIAutomationElement *element,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler);
}
static inline HRESULT IUIAutomation5_AddPropertyChangedEventHandlerNativeArray(IUIAutomation5* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,PROPERTYID *propertyArray,int propertyCount) {
    return This->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount);
}
static inline HRESULT IUIAutomation5_AddPropertyChangedEventHandler(IUIAutomation5* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,SAFEARRAY *propertyArray) {
    return This->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray);
}
static inline HRESULT IUIAutomation5_RemovePropertyChangedEventHandler(IUIAutomation5* This,IUIAutomationElement *element,IUIAutomationPropertyChangedEventHandler *handler) {
    return This->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation5_AddStructureChangedEventHandler(IUIAutomation5* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation5_RemoveStructureChangedEventHandler(IUIAutomation5* This,IUIAutomationElement *element,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation5_AddFocusChangedEventHandler(IUIAutomation5* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler);
}
static inline HRESULT IUIAutomation5_RemoveFocusChangedEventHandler(IUIAutomation5* This,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->RemoveFocusChangedEventHandler(This,handler);
}
static inline HRESULT IUIAutomation5_RemoveAllEventHandlers(IUIAutomation5* This) {
    return This->lpVtbl->RemoveAllEventHandlers(This);
}
static inline HRESULT IUIAutomation5_IntNativeArrayToSafeArray(IUIAutomation5* This,int *array,int arrayCount,SAFEARRAY **safeArray) {
    return This->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray);
}
static inline HRESULT IUIAutomation5_IntSafeArrayToNativeArray(IUIAutomation5* This,SAFEARRAY *intArray,int **array,int *arrayCount) {
    return This->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount);
}
static inline HRESULT IUIAutomation5_RectToVariant(IUIAutomation5* This,RECT rc,VARIANT *var) {
    return This->lpVtbl->RectToVariant(This,rc,var);
}
static inline HRESULT IUIAutomation5_VariantToRect(IUIAutomation5* This,VARIANT var,RECT *rc) {
    return This->lpVtbl->VariantToRect(This,var,rc);
}
static inline HRESULT IUIAutomation5_SafeArrayToRectNativeArray(IUIAutomation5* This,SAFEARRAY *rects,RECT **rectArray,int *rectArrayCount) {
    return This->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount);
}
static inline HRESULT IUIAutomation5_CreateProxyFactoryEntry(IUIAutomation5* This,IUIAutomationProxyFactory *factory,IUIAutomationProxyFactoryEntry **factoryEntry) {
    return This->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry);
}
static inline HRESULT IUIAutomation5_get_ProxyFactoryMapping(IUIAutomation5* This,IUIAutomationProxyFactoryMapping **factoryMapping) {
    return This->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping);
}
static inline HRESULT IUIAutomation5_GetPropertyProgrammaticName(IUIAutomation5* This,PROPERTYID property,BSTR *name) {
    return This->lpVtbl->GetPropertyProgrammaticName(This,property,name);
}
static inline HRESULT IUIAutomation5_GetPatternProgrammaticName(IUIAutomation5* This,PATTERNID pattern,BSTR *name) {
    return This->lpVtbl->GetPatternProgrammaticName(This,pattern,name);
}
static inline HRESULT IUIAutomation5_PollForPotentialSupportedPatterns(IUIAutomation5* This,IUIAutomationElement *pElement,SAFEARRAY **patternIds,SAFEARRAY **patternNames) {
    return This->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames);
}
static inline HRESULT IUIAutomation5_PollForPotentialSupportedProperties(IUIAutomation5* This,IUIAutomationElement *pElement,SAFEARRAY **propertyIds,SAFEARRAY **propertyNames) {
    return This->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames);
}
static inline HRESULT IUIAutomation5_CheckNotSupported(IUIAutomation5* This,VARIANT value,WINBOOL *isNotSupported) {
    return This->lpVtbl->CheckNotSupported(This,value,isNotSupported);
}
static inline HRESULT IUIAutomation5_get_ReservedNotSupportedValue(IUIAutomation5* This,IUnknown **notSupportedValue) {
    return This->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue);
}
static inline HRESULT IUIAutomation5_get_ReservedMixedAttributeValue(IUIAutomation5* This,IUnknown **mixedAttributeValue) {
    return This->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue);
}
static inline HRESULT IUIAutomation5_ElementFromIAccessible(IUIAutomation5* This,IAccessible *accessible,int childId,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessible(This,accessible,childId,element);
}
static inline HRESULT IUIAutomation5_ElementFromIAccessibleBuildCache(IUIAutomation5* This,IAccessible *accessible,int childId,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element);
}
/*** IUIAutomation2 methods ***/
static inline HRESULT IUIAutomation5_get_AutoSetFocus(IUIAutomation5* This,WINBOOL *autoSetFocus) {
    return This->lpVtbl->get_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation5_put_AutoSetFocus(IUIAutomation5* This,WINBOOL autoSetFocus) {
    return This->lpVtbl->put_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation5_get_ConnectionTimeout(IUIAutomation5* This,DWORD *timeout) {
    return This->lpVtbl->get_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation5_put_ConnectionTimeout(IUIAutomation5* This,DWORD timeout) {
    return This->lpVtbl->put_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation5_get_TransactionTimeout(IUIAutomation5* This,DWORD *timeout) {
    return This->lpVtbl->get_TransactionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation5_put_TransactionTimeout(IUIAutomation5* This,DWORD timeout) {
    return This->lpVtbl->put_TransactionTimeout(This,timeout);
}
/*** IUIAutomation3 methods ***/
static inline HRESULT IUIAutomation5_AddTextEditTextChangedEventHandler(IUIAutomation5* This,IUIAutomationElement *element,enum TreeScope scope,enum TextEditChangeType textEditChangeType,IUIAutomationCacheRequest *cacheRequest,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler);
}
static inline HRESULT IUIAutomation5_RemoveTextEditTextChangedEventHandler(IUIAutomation5* This,IUIAutomationElement *element,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->RemoveTextEditTextChangedEventHandler(This,element,handler);
}
/*** IUIAutomation4 methods ***/
static inline HRESULT IUIAutomation5_AddChangesEventHandler(IUIAutomation5* This,IUIAutomationElement *element,enum TreeScope scope,int *changeTypes,int changesCount,IUIAutomationCacheRequest *pCacheRequest,IUIAutomationChangesEventHandler *handler) {
    return This->lpVtbl->AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler);
}
static inline HRESULT IUIAutomation5_RemoveChangesEventHandler(IUIAutomation5* This,IUIAutomationElement *element,IUIAutomationChangesEventHandler *handler) {
    return This->lpVtbl->RemoveChangesEventHandler(This,element,handler);
}
/*** IUIAutomation5 methods ***/
static inline HRESULT IUIAutomation5_AddNotificationEventHandler(IUIAutomation5* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationNotificationEventHandler *handler) {
    return This->lpVtbl->AddNotificationEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation5_RemoveNotificationEventHandler(IUIAutomation5* This,IUIAutomationElement *element,IUIAutomationNotificationEventHandler *handler) {
    return This->lpVtbl->RemoveNotificationEventHandler(This,element,handler);
}
#endif
#endif

#endif


#endif  /* __IUIAutomation5_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomation6 interface
 */
#ifndef __IUIAutomation6_INTERFACE_DEFINED__
#define __IUIAutomation6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomation6, 0xaae072da, 0x29e3, 0x413d, 0x87,0xa7, 0x19,0x2d,0xbf,0x81,0xed,0x10);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("aae072da-29e3-413d-87a7-192dbf81ed10")
IUIAutomation6 : public IUIAutomation5
{
    virtual HRESULT STDMETHODCALLTYPE CreateEventHandlerGroup(
        IUIAutomationEventHandlerGroup **handlerGroup) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddEventHandlerGroup(
        IUIAutomationElement *element,
        IUIAutomationEventHandlerGroup *handlerGroup) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveEventHandlerGroup(
        IUIAutomationElement *element,
        IUIAutomationEventHandlerGroup *handlerGroup) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ConnectionRecoveryBehavior(
        enum ConnectionRecoveryBehaviorOptions *connectionRecoveryBehaviorOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ConnectionRecoveryBehavior(
        enum ConnectionRecoveryBehaviorOptions connectionRecoveryBehaviorOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CoalesceEvents(
        enum CoalesceEventsOptions *coalesceEventsOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CoalesceEvents(
        enum CoalesceEventsOptions coalesceEventsOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddActiveTextPositionChangedEventHandler(
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationActiveTextPositionChangedEventHandler *handler) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveActiveTextPositionChangedEventHandler(
        IUIAutomationElement *element,
        IUIAutomationActiveTextPositionChangedEventHandler *handler) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomation6, 0xaae072da, 0x29e3, 0x413d, 0x87,0xa7, 0x19,0x2d,0xbf,0x81,0xed,0x10)
#endif
#else
typedef struct IUIAutomation6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomation6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomation6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomation6 *This);

    /*** IUIAutomation methods ***/
    HRESULT (STDMETHODCALLTYPE *CompareElements)(
        IUIAutomation6 *This,
        IUIAutomationElement *el1,
        IUIAutomationElement *el2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *CompareRuntimeIds)(
        IUIAutomation6 *This,
        SAFEARRAY *runtimeId1,
        SAFEARRAY *runtimeId2,
        WINBOOL *areSame);

    HRESULT (STDMETHODCALLTYPE *GetRootElement)(
        IUIAutomation6 *This,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandle)(
        IUIAutomation6 *This,
        UIA_HWND hwnd,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPoint)(
        IUIAutomation6 *This,
        POINT pt,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElement)(
        IUIAutomation6 *This,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetRootElementBuildCache)(
        IUIAutomation6 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **root);

    HRESULT (STDMETHODCALLTYPE *ElementFromHandleBuildCache)(
        IUIAutomation6 *This,
        UIA_HWND hwnd,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromPointBuildCache)(
        IUIAutomation6 *This,
        POINT pt,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *GetFocusedElementBuildCache)(
        IUIAutomation6 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *CreateTreeWalker)(
        IUIAutomation6 *This,
        IUIAutomationCondition *pCondition,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewWalker)(
        IUIAutomation6 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewWalker)(
        IUIAutomation6 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewWalker)(
        IUIAutomation6 *This,
        IUIAutomationTreeWalker **walker);

    HRESULT (STDMETHODCALLTYPE *get_RawViewCondition)(
        IUIAutomation6 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ControlViewCondition)(
        IUIAutomation6 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *get_ContentViewCondition)(
        IUIAutomation6 *This,
        IUIAutomationCondition **condition);

    HRESULT (STDMETHODCALLTYPE *CreateCacheRequest)(
        IUIAutomation6 *This,
        IUIAutomationCacheRequest **cacheRequest);

    HRESULT (STDMETHODCALLTYPE *CreateTrueCondition)(
        IUIAutomation6 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateFalseCondition)(
        IUIAutomation6 *This,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyCondition)(
        IUIAutomation6 *This,
        PROPERTYID propertyId,
        VARIANT value,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreatePropertyConditionEx)(
        IUIAutomation6 *This,
        PROPERTYID propertyId,
        VARIANT value,
        enum PropertyConditionFlags flags,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndCondition)(
        IUIAutomation6 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromArray)(
        IUIAutomation6 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateAndConditionFromNativeArray)(
        IUIAutomation6 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrCondition)(
        IUIAutomation6 *This,
        IUIAutomationCondition *condition1,
        IUIAutomationCondition *condition2,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromArray)(
        IUIAutomation6 *This,
        SAFEARRAY *conditions,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateOrConditionFromNativeArray)(
        IUIAutomation6 *This,
        IUIAutomationCondition **conditions,
        int conditionCount,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *CreateNotCondition)(
        IUIAutomation6 *This,
        IUIAutomationCondition *condition,
        IUIAutomationCondition **newCondition);

    HRESULT (STDMETHODCALLTYPE *AddAutomationEventHandler)(
        IUIAutomation6 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAutomationEventHandler)(
        IUIAutomation6 *This,
        EVENTID eventId,
        IUIAutomationElement *element,
        IUIAutomationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandlerNativeArray)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        PROPERTYID *propertyArray,
        int propertyCount);

    HRESULT (STDMETHODCALLTYPE *AddPropertyChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationPropertyChangedEventHandler *handler,
        SAFEARRAY *propertyArray);

    HRESULT (STDMETHODCALLTYPE *RemovePropertyChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        IUIAutomationPropertyChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddStructureChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveStructureChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        IUIAutomationStructureChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *AddFocusChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveFocusChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationFocusChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveAllEventHandlers)(
        IUIAutomation6 *This);

    HRESULT (STDMETHODCALLTYPE *IntNativeArrayToSafeArray)(
        IUIAutomation6 *This,
        int *array,
        int arrayCount,
        SAFEARRAY **safeArray);

    HRESULT (STDMETHODCALLTYPE *IntSafeArrayToNativeArray)(
        IUIAutomation6 *This,
        SAFEARRAY *intArray,
        int **array,
        int *arrayCount);

    HRESULT (STDMETHODCALLTYPE *RectToVariant)(
        IUIAutomation6 *This,
        RECT rc,
        VARIANT *var);

    HRESULT (STDMETHODCALLTYPE *VariantToRect)(
        IUIAutomation6 *This,
        VARIANT var,
        RECT *rc);

    HRESULT (STDMETHODCALLTYPE *SafeArrayToRectNativeArray)(
        IUIAutomation6 *This,
        SAFEARRAY *rects,
        RECT **rectArray,
        int *rectArrayCount);

    HRESULT (STDMETHODCALLTYPE *CreateProxyFactoryEntry)(
        IUIAutomation6 *This,
        IUIAutomationProxyFactory *factory,
        IUIAutomationProxyFactoryEntry **factoryEntry);

    HRESULT (STDMETHODCALLTYPE *get_ProxyFactoryMapping)(
        IUIAutomation6 *This,
        IUIAutomationProxyFactoryMapping **factoryMapping);

    HRESULT (STDMETHODCALLTYPE *GetPropertyProgrammaticName)(
        IUIAutomation6 *This,
        PROPERTYID property,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *GetPatternProgrammaticName)(
        IUIAutomation6 *This,
        PATTERNID pattern,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedPatterns)(
        IUIAutomation6 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **patternIds,
        SAFEARRAY **patternNames);

    HRESULT (STDMETHODCALLTYPE *PollForPotentialSupportedProperties)(
        IUIAutomation6 *This,
        IUIAutomationElement *pElement,
        SAFEARRAY **propertyIds,
        SAFEARRAY **propertyNames);

    HRESULT (STDMETHODCALLTYPE *CheckNotSupported)(
        IUIAutomation6 *This,
        VARIANT value,
        WINBOOL *isNotSupported);

    HRESULT (STDMETHODCALLTYPE *get_ReservedNotSupportedValue)(
        IUIAutomation6 *This,
        IUnknown **notSupportedValue);

    HRESULT (STDMETHODCALLTYPE *get_ReservedMixedAttributeValue)(
        IUIAutomation6 *This,
        IUnknown **mixedAttributeValue);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessible)(
        IUIAutomation6 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationElement **element);

    HRESULT (STDMETHODCALLTYPE *ElementFromIAccessibleBuildCache)(
        IUIAutomation6 *This,
        IAccessible *accessible,
        int childId,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationElement **element);

    /*** IUIAutomation2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AutoSetFocus)(
        IUIAutomation6 *This,
        WINBOOL *autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *put_AutoSetFocus)(
        IUIAutomation6 *This,
        WINBOOL autoSetFocus);

    HRESULT (STDMETHODCALLTYPE *get_ConnectionTimeout)(
        IUIAutomation6 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_ConnectionTimeout)(
        IUIAutomation6 *This,
        DWORD timeout);

    HRESULT (STDMETHODCALLTYPE *get_TransactionTimeout)(
        IUIAutomation6 *This,
        DWORD *timeout);

    HRESULT (STDMETHODCALLTYPE *put_TransactionTimeout)(
        IUIAutomation6 *This,
        DWORD timeout);

    /*** IUIAutomation3 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddTextEditTextChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        enum TextEditChangeType textEditChangeType,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveTextEditTextChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        IUIAutomationTextEditTextChangedEventHandler *handler);

    /*** IUIAutomation4 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddChangesEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        int *changeTypes,
        int changesCount,
        IUIAutomationCacheRequest *pCacheRequest,
        IUIAutomationChangesEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveChangesEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        IUIAutomationChangesEventHandler *handler);

    /*** IUIAutomation5 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddNotificationEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationNotificationEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveNotificationEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        IUIAutomationNotificationEventHandler *handler);

    /*** IUIAutomation6 methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateEventHandlerGroup)(
        IUIAutomation6 *This,
        IUIAutomationEventHandlerGroup **handlerGroup);

    HRESULT (STDMETHODCALLTYPE *AddEventHandlerGroup)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        IUIAutomationEventHandlerGroup *handlerGroup);

    HRESULT (STDMETHODCALLTYPE *RemoveEventHandlerGroup)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        IUIAutomationEventHandlerGroup *handlerGroup);

    HRESULT (STDMETHODCALLTYPE *get_ConnectionRecoveryBehavior)(
        IUIAutomation6 *This,
        enum ConnectionRecoveryBehaviorOptions *connectionRecoveryBehaviorOptions);

    HRESULT (STDMETHODCALLTYPE *put_ConnectionRecoveryBehavior)(
        IUIAutomation6 *This,
        enum ConnectionRecoveryBehaviorOptions connectionRecoveryBehaviorOptions);

    HRESULT (STDMETHODCALLTYPE *get_CoalesceEvents)(
        IUIAutomation6 *This,
        enum CoalesceEventsOptions *coalesceEventsOptions);

    HRESULT (STDMETHODCALLTYPE *put_CoalesceEvents)(
        IUIAutomation6 *This,
        enum CoalesceEventsOptions coalesceEventsOptions);

    HRESULT (STDMETHODCALLTYPE *AddActiveTextPositionChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        enum TreeScope scope,
        IUIAutomationCacheRequest *cacheRequest,
        IUIAutomationActiveTextPositionChangedEventHandler *handler);

    HRESULT (STDMETHODCALLTYPE *RemoveActiveTextPositionChangedEventHandler)(
        IUIAutomation6 *This,
        IUIAutomationElement *element,
        IUIAutomationActiveTextPositionChangedEventHandler *handler);

    END_INTERFACE
} IUIAutomation6Vtbl;

interface IUIAutomation6 {
    CONST_VTBL IUIAutomation6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomation6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomation6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomation6_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomation methods ***/
#define IUIAutomation6_CompareElements(This,el1,el2,areSame) (This)->lpVtbl->CompareElements(This,el1,el2,areSame)
#define IUIAutomation6_CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame) (This)->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame)
#define IUIAutomation6_GetRootElement(This,root) (This)->lpVtbl->GetRootElement(This,root)
#define IUIAutomation6_ElementFromHandle(This,hwnd,element) (This)->lpVtbl->ElementFromHandle(This,hwnd,element)
#define IUIAutomation6_ElementFromPoint(This,pt,element) (This)->lpVtbl->ElementFromPoint(This,pt,element)
#define IUIAutomation6_GetFocusedElement(This,element) (This)->lpVtbl->GetFocusedElement(This,element)
#define IUIAutomation6_GetRootElementBuildCache(This,cacheRequest,root) (This)->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root)
#define IUIAutomation6_ElementFromHandleBuildCache(This,hwnd,cacheRequest,element) (This)->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element)
#define IUIAutomation6_ElementFromPointBuildCache(This,pt,cacheRequest,element) (This)->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element)
#define IUIAutomation6_GetFocusedElementBuildCache(This,cacheRequest,element) (This)->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element)
#define IUIAutomation6_CreateTreeWalker(This,pCondition,walker) (This)->lpVtbl->CreateTreeWalker(This,pCondition,walker)
#define IUIAutomation6_get_ControlViewWalker(This,walker) (This)->lpVtbl->get_ControlViewWalker(This,walker)
#define IUIAutomation6_get_ContentViewWalker(This,walker) (This)->lpVtbl->get_ContentViewWalker(This,walker)
#define IUIAutomation6_get_RawViewWalker(This,walker) (This)->lpVtbl->get_RawViewWalker(This,walker)
#define IUIAutomation6_get_RawViewCondition(This,condition) (This)->lpVtbl->get_RawViewCondition(This,condition)
#define IUIAutomation6_get_ControlViewCondition(This,condition) (This)->lpVtbl->get_ControlViewCondition(This,condition)
#define IUIAutomation6_get_ContentViewCondition(This,condition) (This)->lpVtbl->get_ContentViewCondition(This,condition)
#define IUIAutomation6_CreateCacheRequest(This,cacheRequest) (This)->lpVtbl->CreateCacheRequest(This,cacheRequest)
#define IUIAutomation6_CreateTrueCondition(This,newCondition) (This)->lpVtbl->CreateTrueCondition(This,newCondition)
#define IUIAutomation6_CreateFalseCondition(This,newCondition) (This)->lpVtbl->CreateFalseCondition(This,newCondition)
#define IUIAutomation6_CreatePropertyCondition(This,propertyId,value,newCondition) (This)->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition)
#define IUIAutomation6_CreatePropertyConditionEx(This,propertyId,value,flags,newCondition) (This)->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition)
#define IUIAutomation6_CreateAndCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition)
#define IUIAutomation6_CreateAndConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition)
#define IUIAutomation6_CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation6_CreateOrCondition(This,condition1,condition2,newCondition) (This)->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition)
#define IUIAutomation6_CreateOrConditionFromArray(This,conditions,newCondition) (This)->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition)
#define IUIAutomation6_CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition) (This)->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition)
#define IUIAutomation6_CreateNotCondition(This,condition,newCondition) (This)->lpVtbl->CreateNotCondition(This,condition,newCondition)
#define IUIAutomation6_AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler) (This)->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler)
#define IUIAutomation6_RemoveAutomationEventHandler(This,eventId,element,handler) (This)->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler)
#define IUIAutomation6_AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount) (This)->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount)
#define IUIAutomation6_AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray) (This)->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray)
#define IUIAutomation6_RemovePropertyChangedEventHandler(This,element,handler) (This)->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler)
#define IUIAutomation6_AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation6_RemoveStructureChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler)
#define IUIAutomation6_AddFocusChangedEventHandler(This,cacheRequest,handler) (This)->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler)
#define IUIAutomation6_RemoveFocusChangedEventHandler(This,handler) (This)->lpVtbl->RemoveFocusChangedEventHandler(This,handler)
#define IUIAutomation6_RemoveAllEventHandlers(This) (This)->lpVtbl->RemoveAllEventHandlers(This)
#define IUIAutomation6_IntNativeArrayToSafeArray(This,array,arrayCount,safeArray) (This)->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray)
#define IUIAutomation6_IntSafeArrayToNativeArray(This,intArray,array,arrayCount) (This)->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount)
#define IUIAutomation6_RectToVariant(This,rc,var) (This)->lpVtbl->RectToVariant(This,rc,var)
#define IUIAutomation6_VariantToRect(This,var,rc) (This)->lpVtbl->VariantToRect(This,var,rc)
#define IUIAutomation6_SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount) (This)->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount)
#define IUIAutomation6_CreateProxyFactoryEntry(This,factory,factoryEntry) (This)->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry)
#define IUIAutomation6_get_ProxyFactoryMapping(This,factoryMapping) (This)->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping)
#define IUIAutomation6_GetPropertyProgrammaticName(This,property,name) (This)->lpVtbl->GetPropertyProgrammaticName(This,property,name)
#define IUIAutomation6_GetPatternProgrammaticName(This,pattern,name) (This)->lpVtbl->GetPatternProgrammaticName(This,pattern,name)
#define IUIAutomation6_PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames) (This)->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames)
#define IUIAutomation6_PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames) (This)->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames)
#define IUIAutomation6_CheckNotSupported(This,value,isNotSupported) (This)->lpVtbl->CheckNotSupported(This,value,isNotSupported)
#define IUIAutomation6_get_ReservedNotSupportedValue(This,notSupportedValue) (This)->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue)
#define IUIAutomation6_get_ReservedMixedAttributeValue(This,mixedAttributeValue) (This)->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue)
#define IUIAutomation6_ElementFromIAccessible(This,accessible,childId,element) (This)->lpVtbl->ElementFromIAccessible(This,accessible,childId,element)
#define IUIAutomation6_ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element) (This)->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element)
/*** IUIAutomation2 methods ***/
#define IUIAutomation6_get_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->get_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation6_put_AutoSetFocus(This,autoSetFocus) (This)->lpVtbl->put_AutoSetFocus(This,autoSetFocus)
#define IUIAutomation6_get_ConnectionTimeout(This,timeout) (This)->lpVtbl->get_ConnectionTimeout(This,timeout)
#define IUIAutomation6_put_ConnectionTimeout(This,timeout) (This)->lpVtbl->put_ConnectionTimeout(This,timeout)
#define IUIAutomation6_get_TransactionTimeout(This,timeout) (This)->lpVtbl->get_TransactionTimeout(This,timeout)
#define IUIAutomation6_put_TransactionTimeout(This,timeout) (This)->lpVtbl->put_TransactionTimeout(This,timeout)
/*** IUIAutomation3 methods ***/
#define IUIAutomation6_AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler) (This)->lpVtbl->AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler)
#define IUIAutomation6_RemoveTextEditTextChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveTextEditTextChangedEventHandler(This,element,handler)
/*** IUIAutomation4 methods ***/
#define IUIAutomation6_AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler) (This)->lpVtbl->AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler)
#define IUIAutomation6_RemoveChangesEventHandler(This,element,handler) (This)->lpVtbl->RemoveChangesEventHandler(This,element,handler)
/*** IUIAutomation5 methods ***/
#define IUIAutomation6_AddNotificationEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddNotificationEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation6_RemoveNotificationEventHandler(This,element,handler) (This)->lpVtbl->RemoveNotificationEventHandler(This,element,handler)
/*** IUIAutomation6 methods ***/
#define IUIAutomation6_CreateEventHandlerGroup(This,handlerGroup) (This)->lpVtbl->CreateEventHandlerGroup(This,handlerGroup)
#define IUIAutomation6_AddEventHandlerGroup(This,element,handlerGroup) (This)->lpVtbl->AddEventHandlerGroup(This,element,handlerGroup)
#define IUIAutomation6_RemoveEventHandlerGroup(This,element,handlerGroup) (This)->lpVtbl->RemoveEventHandlerGroup(This,element,handlerGroup)
#define IUIAutomation6_get_ConnectionRecoveryBehavior(This,connectionRecoveryBehaviorOptions) (This)->lpVtbl->get_ConnectionRecoveryBehavior(This,connectionRecoveryBehaviorOptions)
#define IUIAutomation6_put_ConnectionRecoveryBehavior(This,connectionRecoveryBehaviorOptions) (This)->lpVtbl->put_ConnectionRecoveryBehavior(This,connectionRecoveryBehaviorOptions)
#define IUIAutomation6_get_CoalesceEvents(This,coalesceEventsOptions) (This)->lpVtbl->get_CoalesceEvents(This,coalesceEventsOptions)
#define IUIAutomation6_put_CoalesceEvents(This,coalesceEventsOptions) (This)->lpVtbl->put_CoalesceEvents(This,coalesceEventsOptions)
#define IUIAutomation6_AddActiveTextPositionChangedEventHandler(This,element,scope,cacheRequest,handler) (This)->lpVtbl->AddActiveTextPositionChangedEventHandler(This,element,scope,cacheRequest,handler)
#define IUIAutomation6_RemoveActiveTextPositionChangedEventHandler(This,element,handler) (This)->lpVtbl->RemoveActiveTextPositionChangedEventHandler(This,element,handler)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomation6_QueryInterface(IUIAutomation6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomation6_AddRef(IUIAutomation6* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomation6_Release(IUIAutomation6* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomation methods ***/
static inline HRESULT IUIAutomation6_CompareElements(IUIAutomation6* This,IUIAutomationElement *el1,IUIAutomationElement *el2,WINBOOL *areSame) {
    return This->lpVtbl->CompareElements(This,el1,el2,areSame);
}
static inline HRESULT IUIAutomation6_CompareRuntimeIds(IUIAutomation6* This,SAFEARRAY *runtimeId1,SAFEARRAY *runtimeId2,WINBOOL *areSame) {
    return This->lpVtbl->CompareRuntimeIds(This,runtimeId1,runtimeId2,areSame);
}
static inline HRESULT IUIAutomation6_GetRootElement(IUIAutomation6* This,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElement(This,root);
}
static inline HRESULT IUIAutomation6_ElementFromHandle(IUIAutomation6* This,UIA_HWND hwnd,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandle(This,hwnd,element);
}
static inline HRESULT IUIAutomation6_ElementFromPoint(IUIAutomation6* This,POINT pt,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPoint(This,pt,element);
}
static inline HRESULT IUIAutomation6_GetFocusedElement(IUIAutomation6* This,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElement(This,element);
}
static inline HRESULT IUIAutomation6_GetRootElementBuildCache(IUIAutomation6* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **root) {
    return This->lpVtbl->GetRootElementBuildCache(This,cacheRequest,root);
}
static inline HRESULT IUIAutomation6_ElementFromHandleBuildCache(IUIAutomation6* This,UIA_HWND hwnd,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromHandleBuildCache(This,hwnd,cacheRequest,element);
}
static inline HRESULT IUIAutomation6_ElementFromPointBuildCache(IUIAutomation6* This,POINT pt,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromPointBuildCache(This,pt,cacheRequest,element);
}
static inline HRESULT IUIAutomation6_GetFocusedElementBuildCache(IUIAutomation6* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->GetFocusedElementBuildCache(This,cacheRequest,element);
}
static inline HRESULT IUIAutomation6_CreateTreeWalker(IUIAutomation6* This,IUIAutomationCondition *pCondition,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->CreateTreeWalker(This,pCondition,walker);
}
static inline HRESULT IUIAutomation6_get_ControlViewWalker(IUIAutomation6* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ControlViewWalker(This,walker);
}
static inline HRESULT IUIAutomation6_get_ContentViewWalker(IUIAutomation6* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_ContentViewWalker(This,walker);
}
static inline HRESULT IUIAutomation6_get_RawViewWalker(IUIAutomation6* This,IUIAutomationTreeWalker **walker) {
    return This->lpVtbl->get_RawViewWalker(This,walker);
}
static inline HRESULT IUIAutomation6_get_RawViewCondition(IUIAutomation6* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_RawViewCondition(This,condition);
}
static inline HRESULT IUIAutomation6_get_ControlViewCondition(IUIAutomation6* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ControlViewCondition(This,condition);
}
static inline HRESULT IUIAutomation6_get_ContentViewCondition(IUIAutomation6* This,IUIAutomationCondition **condition) {
    return This->lpVtbl->get_ContentViewCondition(This,condition);
}
static inline HRESULT IUIAutomation6_CreateCacheRequest(IUIAutomation6* This,IUIAutomationCacheRequest **cacheRequest) {
    return This->lpVtbl->CreateCacheRequest(This,cacheRequest);
}
static inline HRESULT IUIAutomation6_CreateTrueCondition(IUIAutomation6* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateTrueCondition(This,newCondition);
}
static inline HRESULT IUIAutomation6_CreateFalseCondition(IUIAutomation6* This,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateFalseCondition(This,newCondition);
}
static inline HRESULT IUIAutomation6_CreatePropertyCondition(IUIAutomation6* This,PROPERTYID propertyId,VARIANT value,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyCondition(This,propertyId,value,newCondition);
}
static inline HRESULT IUIAutomation6_CreatePropertyConditionEx(IUIAutomation6* This,PROPERTYID propertyId,VARIANT value,enum PropertyConditionFlags flags,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreatePropertyConditionEx(This,propertyId,value,flags,newCondition);
}
static inline HRESULT IUIAutomation6_CreateAndCondition(IUIAutomation6* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation6_CreateAndConditionFromArray(IUIAutomation6* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation6_CreateAndConditionFromNativeArray(IUIAutomation6* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateAndConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation6_CreateOrCondition(IUIAutomation6* This,IUIAutomationCondition *condition1,IUIAutomationCondition *condition2,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrCondition(This,condition1,condition2,newCondition);
}
static inline HRESULT IUIAutomation6_CreateOrConditionFromArray(IUIAutomation6* This,SAFEARRAY *conditions,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromArray(This,conditions,newCondition);
}
static inline HRESULT IUIAutomation6_CreateOrConditionFromNativeArray(IUIAutomation6* This,IUIAutomationCondition **conditions,int conditionCount,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateOrConditionFromNativeArray(This,conditions,conditionCount,newCondition);
}
static inline HRESULT IUIAutomation6_CreateNotCondition(IUIAutomation6* This,IUIAutomationCondition *condition,IUIAutomationCondition **newCondition) {
    return This->lpVtbl->CreateNotCondition(This,condition,newCondition);
}
static inline HRESULT IUIAutomation6_AddAutomationEventHandler(IUIAutomation6* This,EVENTID eventId,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->AddAutomationEventHandler(This,eventId,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation6_RemoveAutomationEventHandler(IUIAutomation6* This,EVENTID eventId,IUIAutomationElement *element,IUIAutomationEventHandler *handler) {
    return This->lpVtbl->RemoveAutomationEventHandler(This,eventId,element,handler);
}
static inline HRESULT IUIAutomation6_AddPropertyChangedEventHandlerNativeArray(IUIAutomation6* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,PROPERTYID *propertyArray,int propertyCount) {
    return This->lpVtbl->AddPropertyChangedEventHandlerNativeArray(This,element,scope,cacheRequest,handler,propertyArray,propertyCount);
}
static inline HRESULT IUIAutomation6_AddPropertyChangedEventHandler(IUIAutomation6* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationPropertyChangedEventHandler *handler,SAFEARRAY *propertyArray) {
    return This->lpVtbl->AddPropertyChangedEventHandler(This,element,scope,cacheRequest,handler,propertyArray);
}
static inline HRESULT IUIAutomation6_RemovePropertyChangedEventHandler(IUIAutomation6* This,IUIAutomationElement *element,IUIAutomationPropertyChangedEventHandler *handler) {
    return This->lpVtbl->RemovePropertyChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation6_AddStructureChangedEventHandler(IUIAutomation6* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->AddStructureChangedEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation6_RemoveStructureChangedEventHandler(IUIAutomation6* This,IUIAutomationElement *element,IUIAutomationStructureChangedEventHandler *handler) {
    return This->lpVtbl->RemoveStructureChangedEventHandler(This,element,handler);
}
static inline HRESULT IUIAutomation6_AddFocusChangedEventHandler(IUIAutomation6* This,IUIAutomationCacheRequest *cacheRequest,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->AddFocusChangedEventHandler(This,cacheRequest,handler);
}
static inline HRESULT IUIAutomation6_RemoveFocusChangedEventHandler(IUIAutomation6* This,IUIAutomationFocusChangedEventHandler *handler) {
    return This->lpVtbl->RemoveFocusChangedEventHandler(This,handler);
}
static inline HRESULT IUIAutomation6_RemoveAllEventHandlers(IUIAutomation6* This) {
    return This->lpVtbl->RemoveAllEventHandlers(This);
}
static inline HRESULT IUIAutomation6_IntNativeArrayToSafeArray(IUIAutomation6* This,int *array,int arrayCount,SAFEARRAY **safeArray) {
    return This->lpVtbl->IntNativeArrayToSafeArray(This,array,arrayCount,safeArray);
}
static inline HRESULT IUIAutomation6_IntSafeArrayToNativeArray(IUIAutomation6* This,SAFEARRAY *intArray,int **array,int *arrayCount) {
    return This->lpVtbl->IntSafeArrayToNativeArray(This,intArray,array,arrayCount);
}
static inline HRESULT IUIAutomation6_RectToVariant(IUIAutomation6* This,RECT rc,VARIANT *var) {
    return This->lpVtbl->RectToVariant(This,rc,var);
}
static inline HRESULT IUIAutomation6_VariantToRect(IUIAutomation6* This,VARIANT var,RECT *rc) {
    return This->lpVtbl->VariantToRect(This,var,rc);
}
static inline HRESULT IUIAutomation6_SafeArrayToRectNativeArray(IUIAutomation6* This,SAFEARRAY *rects,RECT **rectArray,int *rectArrayCount) {
    return This->lpVtbl->SafeArrayToRectNativeArray(This,rects,rectArray,rectArrayCount);
}
static inline HRESULT IUIAutomation6_CreateProxyFactoryEntry(IUIAutomation6* This,IUIAutomationProxyFactory *factory,IUIAutomationProxyFactoryEntry **factoryEntry) {
    return This->lpVtbl->CreateProxyFactoryEntry(This,factory,factoryEntry);
}
static inline HRESULT IUIAutomation6_get_ProxyFactoryMapping(IUIAutomation6* This,IUIAutomationProxyFactoryMapping **factoryMapping) {
    return This->lpVtbl->get_ProxyFactoryMapping(This,factoryMapping);
}
static inline HRESULT IUIAutomation6_GetPropertyProgrammaticName(IUIAutomation6* This,PROPERTYID property,BSTR *name) {
    return This->lpVtbl->GetPropertyProgrammaticName(This,property,name);
}
static inline HRESULT IUIAutomation6_GetPatternProgrammaticName(IUIAutomation6* This,PATTERNID pattern,BSTR *name) {
    return This->lpVtbl->GetPatternProgrammaticName(This,pattern,name);
}
static inline HRESULT IUIAutomation6_PollForPotentialSupportedPatterns(IUIAutomation6* This,IUIAutomationElement *pElement,SAFEARRAY **patternIds,SAFEARRAY **patternNames) {
    return This->lpVtbl->PollForPotentialSupportedPatterns(This,pElement,patternIds,patternNames);
}
static inline HRESULT IUIAutomation6_PollForPotentialSupportedProperties(IUIAutomation6* This,IUIAutomationElement *pElement,SAFEARRAY **propertyIds,SAFEARRAY **propertyNames) {
    return This->lpVtbl->PollForPotentialSupportedProperties(This,pElement,propertyIds,propertyNames);
}
static inline HRESULT IUIAutomation6_CheckNotSupported(IUIAutomation6* This,VARIANT value,WINBOOL *isNotSupported) {
    return This->lpVtbl->CheckNotSupported(This,value,isNotSupported);
}
static inline HRESULT IUIAutomation6_get_ReservedNotSupportedValue(IUIAutomation6* This,IUnknown **notSupportedValue) {
    return This->lpVtbl->get_ReservedNotSupportedValue(This,notSupportedValue);
}
static inline HRESULT IUIAutomation6_get_ReservedMixedAttributeValue(IUIAutomation6* This,IUnknown **mixedAttributeValue) {
    return This->lpVtbl->get_ReservedMixedAttributeValue(This,mixedAttributeValue);
}
static inline HRESULT IUIAutomation6_ElementFromIAccessible(IUIAutomation6* This,IAccessible *accessible,int childId,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessible(This,accessible,childId,element);
}
static inline HRESULT IUIAutomation6_ElementFromIAccessibleBuildCache(IUIAutomation6* This,IAccessible *accessible,int childId,IUIAutomationCacheRequest *cacheRequest,IUIAutomationElement **element) {
    return This->lpVtbl->ElementFromIAccessibleBuildCache(This,accessible,childId,cacheRequest,element);
}
/*** IUIAutomation2 methods ***/
static inline HRESULT IUIAutomation6_get_AutoSetFocus(IUIAutomation6* This,WINBOOL *autoSetFocus) {
    return This->lpVtbl->get_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation6_put_AutoSetFocus(IUIAutomation6* This,WINBOOL autoSetFocus) {
    return This->lpVtbl->put_AutoSetFocus(This,autoSetFocus);
}
static inline HRESULT IUIAutomation6_get_ConnectionTimeout(IUIAutomation6* This,DWORD *timeout) {
    return This->lpVtbl->get_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation6_put_ConnectionTimeout(IUIAutomation6* This,DWORD timeout) {
    return This->lpVtbl->put_ConnectionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation6_get_TransactionTimeout(IUIAutomation6* This,DWORD *timeout) {
    return This->lpVtbl->get_TransactionTimeout(This,timeout);
}
static inline HRESULT IUIAutomation6_put_TransactionTimeout(IUIAutomation6* This,DWORD timeout) {
    return This->lpVtbl->put_TransactionTimeout(This,timeout);
}
/*** IUIAutomation3 methods ***/
static inline HRESULT IUIAutomation6_AddTextEditTextChangedEventHandler(IUIAutomation6* This,IUIAutomationElement *element,enum TreeScope scope,enum TextEditChangeType textEditChangeType,IUIAutomationCacheRequest *cacheRequest,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->AddTextEditTextChangedEventHandler(This,element,scope,textEditChangeType,cacheRequest,handler);
}
static inline HRESULT IUIAutomation6_RemoveTextEditTextChangedEventHandler(IUIAutomation6* This,IUIAutomationElement *element,IUIAutomationTextEditTextChangedEventHandler *handler) {
    return This->lpVtbl->RemoveTextEditTextChangedEventHandler(This,element,handler);
}
/*** IUIAutomation4 methods ***/
static inline HRESULT IUIAutomation6_AddChangesEventHandler(IUIAutomation6* This,IUIAutomationElement *element,enum TreeScope scope,int *changeTypes,int changesCount,IUIAutomationCacheRequest *pCacheRequest,IUIAutomationChangesEventHandler *handler) {
    return This->lpVtbl->AddChangesEventHandler(This,element,scope,changeTypes,changesCount,pCacheRequest,handler);
}
static inline HRESULT IUIAutomation6_RemoveChangesEventHandler(IUIAutomation6* This,IUIAutomationElement *element,IUIAutomationChangesEventHandler *handler) {
    return This->lpVtbl->RemoveChangesEventHandler(This,element,handler);
}
/*** IUIAutomation5 methods ***/
static inline HRESULT IUIAutomation6_AddNotificationEventHandler(IUIAutomation6* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationNotificationEventHandler *handler) {
    return This->lpVtbl->AddNotificationEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation6_RemoveNotificationEventHandler(IUIAutomation6* This,IUIAutomationElement *element,IUIAutomationNotificationEventHandler *handler) {
    return This->lpVtbl->RemoveNotificationEventHandler(This,element,handler);
}
/*** IUIAutomation6 methods ***/
static inline HRESULT IUIAutomation6_CreateEventHandlerGroup(IUIAutomation6* This,IUIAutomationEventHandlerGroup **handlerGroup) {
    return This->lpVtbl->CreateEventHandlerGroup(This,handlerGroup);
}
static inline HRESULT IUIAutomation6_AddEventHandlerGroup(IUIAutomation6* This,IUIAutomationElement *element,IUIAutomationEventHandlerGroup *handlerGroup) {
    return This->lpVtbl->AddEventHandlerGroup(This,element,handlerGroup);
}
static inline HRESULT IUIAutomation6_RemoveEventHandlerGroup(IUIAutomation6* This,IUIAutomationElement *element,IUIAutomationEventHandlerGroup *handlerGroup) {
    return This->lpVtbl->RemoveEventHandlerGroup(This,element,handlerGroup);
}
static inline HRESULT IUIAutomation6_get_ConnectionRecoveryBehavior(IUIAutomation6* This,enum ConnectionRecoveryBehaviorOptions *connectionRecoveryBehaviorOptions) {
    return This->lpVtbl->get_ConnectionRecoveryBehavior(This,connectionRecoveryBehaviorOptions);
}
static inline HRESULT IUIAutomation6_put_ConnectionRecoveryBehavior(IUIAutomation6* This,enum ConnectionRecoveryBehaviorOptions connectionRecoveryBehaviorOptions) {
    return This->lpVtbl->put_ConnectionRecoveryBehavior(This,connectionRecoveryBehaviorOptions);
}
static inline HRESULT IUIAutomation6_get_CoalesceEvents(IUIAutomation6* This,enum CoalesceEventsOptions *coalesceEventsOptions) {
    return This->lpVtbl->get_CoalesceEvents(This,coalesceEventsOptions);
}
static inline HRESULT IUIAutomation6_put_CoalesceEvents(IUIAutomation6* This,enum CoalesceEventsOptions coalesceEventsOptions) {
    return This->lpVtbl->put_CoalesceEvents(This,coalesceEventsOptions);
}
static inline HRESULT IUIAutomation6_AddActiveTextPositionChangedEventHandler(IUIAutomation6* This,IUIAutomationElement *element,enum TreeScope scope,IUIAutomationCacheRequest *cacheRequest,IUIAutomationActiveTextPositionChangedEventHandler *handler) {
    return This->lpVtbl->AddActiveTextPositionChangedEventHandler(This,element,scope,cacheRequest,handler);
}
static inline HRESULT IUIAutomation6_RemoveActiveTextPositionChangedEventHandler(IUIAutomation6* This,IUIAutomationElement *element,IUIAutomationActiveTextPositionChangedEventHandler *handler) {
    return This->lpVtbl->RemoveActiveTextPositionChangedEventHandler(This,element,handler);
}
#endif
#endif

#endif


#endif  /* __IUIAutomation6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CUIAutomation coclass
 */

DEFINE_GUID(CLSID_CUIAutomation, 0xff48dba4, 0x60ef, 0x4201, 0xaa,0x87, 0x54,0x10,0x3e,0xef,0x59,0x4e);

#ifdef __cplusplus
class DECLSPEC_UUID("ff48dba4-60ef-4201-aa87-54103eef594e") CUIAutomation;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CUIAutomation, 0xff48dba4, 0x60ef, 0x4201, 0xaa,0x87, 0x54,0x10,0x3e,0xef,0x59,0x4e)
#endif
#endif

/*****************************************************************************
 * CUIAutomation8 coclass
 */

DEFINE_GUID(CLSID_CUIAutomation8, 0xe22ad333, 0xb25f, 0x460c, 0x83,0xd0, 0x05,0x81,0x10,0x73,0x95,0xc9);

#ifdef __cplusplus
class DECLSPEC_UUID("e22ad333-b25f-460c-83d0-0581107395c9") CUIAutomation8;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CUIAutomation8, 0xe22ad333, 0xb25f, 0x460c, 0x83,0xd0, 0x05,0x81,0x10,0x73,0x95,0xc9)
#endif
#endif

#endif /* __UIAutomationClient_LIBRARY_DEFINED__ */
/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __uiautomationclient_h__ */
