403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/UIAutomationClient.idl
// -------------------------------------------------------------
// UIAutomationClient.idl
//
// UIAutomation Client interface definitions and related types and enums
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// -------------------------------------------------------------

cpp_quote("// -------------------------------------------------------------")
cpp_quote("// UIAutomationClient.H")
cpp_quote("//")
cpp_quote("// UIAutomation Client interface definitions and related types and enums")
cpp_quote("// (Generated from UIAutomationClient.idl)")
cpp_quote("//")
cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
cpp_quote("// -------------------------------------------------------------")

cpp_quote("#include <winapifamily.h>")

#pragma region Desktop Family
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")

#define DO_NO_IMPORTS
import "UIAutomationCore.idl";

midl_pragma warning( disable: 2362 )   // This is only expected to go downlevel as far as XP, so a large interface is fine.

// Base enums
cpp_quote("#ifndef _INC_UIAUTOMATIONCOREAPI")
enum TreeScope
{
    TreeScope_None =          0x0,
    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 = 0x00,
    PropertyConditionFlags_IgnoreCase = 0x01,
    PropertyConditionFlags_MatchSubstring = 0x02,
};

enum AutomationElementMode
{
    AutomationElementMode_None,
    AutomationElementMode_Full
};

// Option groups (flags):
// 1) Traversal order (preorder, postorder): says when nodes should be tested against search
//    conditions (on enter, on leave).
// 2) Visit order: defines in which order relatives are visited. Relatives include children
//    and siblings. Visit orders are relative to parents. From the child perspective First to
//    Last means 'visit the next sibling from the child' while Last to First means 'visit the
//    previous sibling from the child'.
enum TreeTraversalOptions
{
    // Default traversal options are:
    // 1) Preorder,
    // 2) Visit children from first to last.
    TreeTraversalOptions_Default            = 0x0,

    // Traversal order: Postorder 
    TreeTraversalOptions_PostOrder          = 0x1,

    // Visit order: Visit children from last to first.
    TreeTraversalOptions_LastToFirstOrder   = 0x2
};

// Enum for IUIAutomation6 ConnectionRecoveryBehavior get/set property to set
// the options of the connection recovery behavior.
enum ConnectionRecoveryBehaviorOptions
{
    ConnectionRecoveryBehaviorOptions_Disabled = 0x00,
    ConnectionRecoveryBehaviorOptions_Enabled = 0x01,
};

// Enum for IUIAutomation6 CoalesceEvents get/set property to set the options
// of the connection recovery behavior.
enum CoalesceEventsOptions
{
    CoalesceEventsOptions_Disabled = 0x00,
    CoalesceEventsOptions_Enabled = 0x01,
};
cpp_quote("#endif")

struct ExtendedProperty {
    BSTR PropertyName;
    BSTR PropertyValue;
};

typedef void * UIA_HWND;

[
    uuid(944de083-8fb8-45cf-bcb7-c477acb2f897),
    lcid(0),
    version(1.0),
]
library UIAutomationClient
{
    importlib ("stdole2.tlb");

    [dllname("<no entry points>")]
    module UIA_PatternIds
    {
        const long UIA_InvokePatternId             = 10000;
        const long UIA_SelectionPatternId          = 10001;
        const long UIA_ValuePatternId              = 10002;
        const long UIA_RangeValuePatternId         = 10003;
        const long UIA_ScrollPatternId             = 10004;
        const long UIA_ExpandCollapsePatternId     = 10005;
        const long UIA_GridPatternId               = 10006;
        const long UIA_GridItemPatternId           = 10007;
        const long UIA_MultipleViewPatternId       = 10008;
        const long UIA_WindowPatternId             = 10009;
        const long UIA_SelectionItemPatternId      = 10010;
        const long UIA_DockPatternId               = 10011;
        const long UIA_TablePatternId              = 10012;
        const long UIA_TableItemPatternId          = 10013;
        const long UIA_TextPatternId               = 10014;
        const long UIA_TogglePatternId             = 10015;
        const long UIA_TransformPatternId          = 10016;
        const long UIA_ScrollItemPatternId         = 10017;
        const long UIA_LegacyIAccessiblePatternId  = 10018;
        const long UIA_ItemContainerPatternId      = 10019;
        const long UIA_VirtualizedItemPatternId    = 10020;
        const long UIA_SynchronizedInputPatternId  = 10021;
        const long UIA_ObjectModelPatternId        = 10022;
        const long UIA_AnnotationPatternId         = 10023;
        const long UIA_TextPattern2Id              = 10024;
        const long UIA_StylesPatternId             = 10025;
        const long UIA_SpreadsheetPatternId        = 10026;
        const long UIA_SpreadsheetItemPatternId    = 10027;
        const long UIA_TransformPattern2Id         = 10028;
        const long UIA_TextChildPatternId          = 10029;
        const long UIA_DragPatternId               = 10030;
        const long UIA_DropTargetPatternId         = 10031;
        const long UIA_TextEditPatternId           = 10032;
        const long UIA_CustomNavigationPatternId   = 10033;
        const long UIA_SelectionPattern2Id         = 10034;
    };

    [dllname("<no entry points>")]
    module UIA_EventIds
    {
        const long UIA_ToolTipOpenedEventId                              = 20000;
        const long UIA_ToolTipClosedEventId                              = 20001;
        const long UIA_StructureChangedEventId                           = 20002;
        const long UIA_MenuOpenedEventId                                 = 20003;
        const long UIA_AutomationPropertyChangedEventId                  = 20004;
        const long UIA_AutomationFocusChangedEventId                     = 20005;
        const long UIA_AsyncContentLoadedEventId                         = 20006;
        const long UIA_MenuClosedEventId                                 = 20007;
        const long UIA_LayoutInvalidatedEventId                          = 20008;
        const long UIA_Invoke_InvokedEventId                             = 20009;
        const long UIA_SelectionItem_ElementAddedToSelectionEventId      = 20010;
        const long UIA_SelectionItem_ElementRemovedFromSelectionEventId  = 20011;
        const long UIA_SelectionItem_ElementSelectedEventId              = 20012;
        const long UIA_Selection_InvalidatedEventId                      = 20013;
        const long UIA_Text_TextSelectionChangedEventId                  = 20014;
        const long UIA_Text_TextChangedEventId                           = 20015;
        const long UIA_Window_WindowOpenedEventId                        = 20016;
        const long UIA_Window_WindowClosedEventId                        = 20017;
        const long UIA_MenuModeStartEventId                              = 20018;
        const long UIA_MenuModeEndEventId                                = 20019;
        const long UIA_InputReachedTargetEventId                         = 20020;
        const long UIA_InputReachedOtherElementEventId                   = 20021;
        const long UIA_InputDiscardedEventId                             = 20022;
        const long UIA_SystemAlertEventId                                = 20023;
        const long UIA_LiveRegionChangedEventId                          = 20024;
        const long UIA_HostedFragmentRootsInvalidatedEventId             = 20025;
        const long UIA_Drag_DragStartEventId                             = 20026;
        const long UIA_Drag_DragCancelEventId                            = 20027;
        const long UIA_Drag_DragCompleteEventId                          = 20028;
        const long UIA_DropTarget_DragEnterEventId                       = 20029;
        const long UIA_DropTarget_DragLeaveEventId                       = 20030;
        const long UIA_DropTarget_DroppedEventId                         = 20031;
        const long UIA_TextEdit_TextChangedEventId                       = 20032;
        const long UIA_TextEdit_ConversionTargetChangedEventId           = 20033;
        const long UIA_ChangesEventId                                    = 20034;
        const long UIA_NotificationEventId                               = 20035;
        const long UIA_ActiveTextPositionChangedEventId                  = 20036;
    };

    [dllname("<no entry points>")]
    module UIA_PropertyIds
    {
        const long UIA_RuntimeIdPropertyId                            = 30000;
        const long UIA_BoundingRectanglePropertyId                    = 30001;
        const long UIA_ProcessIdPropertyId                            = 30002;
        const long UIA_ControlTypePropertyId                          = 30003;
        const long UIA_LocalizedControlTypePropertyId                 = 30004;
        const long UIA_NamePropertyId                                 = 30005;
        const long UIA_AcceleratorKeyPropertyId                       = 30006;
        const long UIA_AccessKeyPropertyId                            = 30007;
        const long UIA_HasKeyboardFocusPropertyId                     = 30008;
        const long UIA_IsKeyboardFocusablePropertyId                  = 30009;
        const long UIA_IsEnabledPropertyId                            = 30010;
        const long UIA_AutomationIdPropertyId                         = 30011;
        const long UIA_ClassNamePropertyId                            = 30012;
        const long UIA_HelpTextPropertyId                             = 30013;
        const long UIA_ClickablePointPropertyId                       = 30014;
        const long UIA_CulturePropertyId                              = 30015;
        const long UIA_IsControlElementPropertyId                     = 30016;
        const long UIA_IsContentElementPropertyId                     = 30017;
        const long UIA_LabeledByPropertyId                            = 30018;
        const long UIA_IsPasswordPropertyId                           = 30019;
        const long UIA_NativeWindowHandlePropertyId                   = 30020;
        const long UIA_ItemTypePropertyId                             = 30021;
        const long UIA_IsOffscreenPropertyId                          = 30022;
        const long UIA_OrientationPropertyId                          = 30023;
        const long UIA_FrameworkIdPropertyId                          = 30024;
        const long UIA_IsRequiredForFormPropertyId                    = 30025;
        const long UIA_ItemStatusPropertyId                           = 30026;
        const long UIA_IsDockPatternAvailablePropertyId               = 30027;
        const long UIA_IsExpandCollapsePatternAvailablePropertyId     = 30028;
        const long UIA_IsGridItemPatternAvailablePropertyId           = 30029;
        const long UIA_IsGridPatternAvailablePropertyId               = 30030;
        const long UIA_IsInvokePatternAvailablePropertyId             = 30031;
        const long UIA_IsMultipleViewPatternAvailablePropertyId       = 30032;
        const long UIA_IsRangeValuePatternAvailablePropertyId         = 30033;
        const long UIA_IsScrollPatternAvailablePropertyId             = 30034;
        const long UIA_IsScrollItemPatternAvailablePropertyId         = 30035;
        const long UIA_IsSelectionItemPatternAvailablePropertyId      = 30036;
        const long UIA_IsSelectionPatternAvailablePropertyId          = 30037;
        const long UIA_IsTablePatternAvailablePropertyId              = 30038;
        const long UIA_IsTableItemPatternAvailablePropertyId          = 30039;
        const long UIA_IsTextPatternAvailablePropertyId               = 30040;
        const long UIA_IsTogglePatternAvailablePropertyId             = 30041;
        const long UIA_IsTransformPatternAvailablePropertyId          = 30042;
        const long UIA_IsValuePatternAvailablePropertyId              = 30043;
        const long UIA_IsWindowPatternAvailablePropertyId             = 30044;
        const long UIA_ValueValuePropertyId                           = 30045;
        const long UIA_ValueIsReadOnlyPropertyId                      = 30046;
        const long UIA_RangeValueValuePropertyId                      = 30047;
        const long UIA_RangeValueIsReadOnlyPropertyId                 = 30048;
        const long UIA_RangeValueMinimumPropertyId                    = 30049;
        const long UIA_RangeValueMaximumPropertyId                    = 30050;
        const long UIA_RangeValueLargeChangePropertyId                = 30051;
        const long UIA_RangeValueSmallChangePropertyId                = 30052;
        const long UIA_ScrollHorizontalScrollPercentPropertyId        = 30053;
        const long UIA_ScrollHorizontalViewSizePropertyId             = 30054;
        const long UIA_ScrollVerticalScrollPercentPropertyId          = 30055;
        const long UIA_ScrollVerticalViewSizePropertyId               = 30056;
        const long UIA_ScrollHorizontallyScrollablePropertyId         = 30057;
        const long UIA_ScrollVerticallyScrollablePropertyId           = 30058;
        const long UIA_SelectionSelectionPropertyId                   = 30059;
        const long UIA_SelectionCanSelectMultiplePropertyId           = 30060;
        const long UIA_SelectionIsSelectionRequiredPropertyId         = 30061;
        const long UIA_GridRowCountPropertyId                         = 30062;
        const long UIA_GridColumnCountPropertyId                      = 30063;
        const long UIA_GridItemRowPropertyId                          = 30064;
        const long UIA_GridItemColumnPropertyId                       = 30065;
        const long UIA_GridItemRowSpanPropertyId                      = 30066;
        const long UIA_GridItemColumnSpanPropertyId                   = 30067;
        const long UIA_GridItemContainingGridPropertyId               = 30068;
        const long UIA_DockDockPositionPropertyId                     = 30069;
        const long UIA_ExpandCollapseExpandCollapseStatePropertyId    = 30070;
        const long UIA_MultipleViewCurrentViewPropertyId              = 30071;
        const long UIA_MultipleViewSupportedViewsPropertyId           = 30072;
        const long UIA_WindowCanMaximizePropertyId                    = 30073;
        const long UIA_WindowCanMinimizePropertyId                    = 30074;
        const long UIA_WindowWindowVisualStatePropertyId              = 30075;
        const long UIA_WindowWindowInteractionStatePropertyId         = 30076;
        const long UIA_WindowIsModalPropertyId                        = 30077;
        const long UIA_WindowIsTopmostPropertyId                      = 30078;
        const long UIA_SelectionItemIsSelectedPropertyId              = 30079;
        const long UIA_SelectionItemSelectionContainerPropertyId      = 30080;
        const long UIA_TableRowHeadersPropertyId                      = 30081;
        const long UIA_TableColumnHeadersPropertyId                   = 30082;
        const long UIA_TableRowOrColumnMajorPropertyId                = 30083;
        const long UIA_TableItemRowHeaderItemsPropertyId              = 30084;
        const long UIA_TableItemColumnHeaderItemsPropertyId           = 30085;
        const long UIA_ToggleToggleStatePropertyId                    = 30086;
        const long UIA_TransformCanMovePropertyId                     = 30087;
        const long UIA_TransformCanResizePropertyId                   = 30088;
        const long UIA_TransformCanRotatePropertyId                   = 30089;
        const long UIA_IsLegacyIAccessiblePatternAvailablePropertyId  = 30090;
        const long UIA_LegacyIAccessibleChildIdPropertyId             = 30091;
        const long UIA_LegacyIAccessibleNamePropertyId                = 30092;
        const long UIA_LegacyIAccessibleValuePropertyId               = 30093;
        const long UIA_LegacyIAccessibleDescriptionPropertyId         = 30094;
        const long UIA_LegacyIAccessibleRolePropertyId                = 30095;
        const long UIA_LegacyIAccessibleStatePropertyId               = 30096;
        const long UIA_LegacyIAccessibleHelpPropertyId                = 30097;
        const long UIA_LegacyIAccessibleKeyboardShortcutPropertyId    = 30098;
        const long UIA_LegacyIAccessibleSelectionPropertyId           = 30099;
        const long UIA_LegacyIAccessibleDefaultActionPropertyId       = 30100;
        const long UIA_AriaRolePropertyId                             = 30101;
        const long UIA_AriaPropertiesPropertyId                       = 30102;
        const long UIA_IsDataValidForFormPropertyId                   = 30103;
        const long UIA_ControllerForPropertyId                        = 30104;
        const long UIA_DescribedByPropertyId                          = 30105;
        const long UIA_FlowsToPropertyId                              = 30106;
        const long UIA_ProviderDescriptionPropertyId                  = 30107;
        const long UIA_IsItemContainerPatternAvailablePropertyId      = 30108;
        const long UIA_IsVirtualizedItemPatternAvailablePropertyId    = 30109;
        const long UIA_IsSynchronizedInputPatternAvailablePropertyId  = 30110;
        const long UIA_OptimizeForVisualContentPropertyId             = 30111;
        const long UIA_IsObjectModelPatternAvailablePropertyId        = 30112;
        const long UIA_AnnotationAnnotationTypeIdPropertyId           = 30113;
        const long UIA_AnnotationAnnotationTypeNamePropertyId         = 30114;
        const long UIA_AnnotationAuthorPropertyId                     = 30115;
        const long UIA_AnnotationDateTimePropertyId                   = 30116;
        const long UIA_AnnotationTargetPropertyId                     = 30117;
        const long UIA_IsAnnotationPatternAvailablePropertyId         = 30118;
        const long UIA_IsTextPattern2AvailablePropertyId              = 30119;
        const long UIA_StylesStyleIdPropertyId                        = 30120;
        const long UIA_StylesStyleNamePropertyId                      = 30121;
        const long UIA_StylesFillColorPropertyId                      = 30122;
        const long UIA_StylesFillPatternStylePropertyId               = 30123;
        const long UIA_StylesShapePropertyId                          = 30124;
        const long UIA_StylesFillPatternColorPropertyId               = 30125;
        const long UIA_StylesExtendedPropertiesPropertyId             = 30126;
        const long UIA_IsStylesPatternAvailablePropertyId             = 30127;
        const long UIA_IsSpreadsheetPatternAvailablePropertyId        = 30128;
        const long UIA_SpreadsheetItemFormulaPropertyId               = 30129;
        const long UIA_SpreadsheetItemAnnotationObjectsPropertyId     = 30130;
        const long UIA_SpreadsheetItemAnnotationTypesPropertyId       = 30131;
        const long UIA_IsSpreadsheetItemPatternAvailablePropertyId    = 30132;
        const long UIA_Transform2CanZoomPropertyId                    = 30133;
        const long UIA_IsTransformPattern2AvailablePropertyId         = 30134;
        const long UIA_LiveSettingPropertyId                          = 30135;
        const long UIA_IsTextChildPatternAvailablePropertyId          = 30136;
        const long UIA_IsDragPatternAvailablePropertyId               = 30137;
        const long UIA_DragIsGrabbedPropertyId                        = 30138;
        const long UIA_DragDropEffectPropertyId                       = 30139;
        const long UIA_DragDropEffectsPropertyId                      = 30140;
        const long UIA_IsDropTargetPatternAvailablePropertyId         = 30141;
        const long UIA_DropTargetDropTargetEffectPropertyId           = 30142;
        const long UIA_DropTargetDropTargetEffectsPropertyId          = 30143;
        const long UIA_DragGrabbedItemsPropertyId                     = 30144;
        const long UIA_Transform2ZoomLevelPropertyId                  = 30145;
        const long UIA_Transform2ZoomMinimumPropertyId                = 30146;
        const long UIA_Transform2ZoomMaximumPropertyId                = 30147;
        const long UIA_FlowsFromPropertyId                            = 30148;
        const long UIA_IsTextEditPatternAvailablePropertyId           = 30149;
        const long UIA_IsPeripheralPropertyId                         = 30150;
        const long UIA_IsCustomNavigationPatternAvailablePropertyId   = 30151;
        const long UIA_PositionInSetPropertyId                        = 30152;
        const long UIA_SizeOfSetPropertyId                            = 30153;
        const long UIA_LevelPropertyId                                = 30154;
        const long UIA_AnnotationTypesPropertyId                      = 30155;
        const long UIA_AnnotationObjectsPropertyId                    = 30156;
        const long UIA_LandmarkTypePropertyId                         = 30157;
        const long UIA_LocalizedLandmarkTypePropertyId                = 30158;
        const long UIA_FullDescriptionPropertyId                      = 30159;
        const long UIA_FillColorPropertyId                            = 30160;
        const long UIA_OutlineColorPropertyId                         = 30161;
        const long UIA_FillTypePropertyId                             = 30162;
        const long UIA_VisualEffectsPropertyId                        = 30163;
        const long UIA_OutlineThicknessPropertyId                     = 30164;
        const long UIA_CenterPointPropertyId                          = 30165;
        const long UIA_RotationPropertyId                             = 30166;
        const long UIA_SizePropertyId                                 = 30167;
        const long UIA_IsSelectionPattern2AvailablePropertyId         = 30168;
        const long UIA_Selection2FirstSelectedItemPropertyId          = 30169;
        const long UIA_Selection2LastSelectedItemPropertyId           = 30170;
        const long UIA_Selection2CurrentSelectedItemPropertyId        = 30171;
        const long UIA_Selection2ItemCountPropertyId                  = 30172;
        const long UIA_HeadingLevelPropertyId                         = 30173;
        const long UIA_IsDialogPropertyId                             = 30174;
    }

    [dllname("<no entry points>")]
    module UIA_TextAttributeIds
    {
        const long UIA_AnimationStyleAttributeId             = 40000;
        const long UIA_BackgroundColorAttributeId            = 40001;
        const long UIA_BulletStyleAttributeId                = 40002;
        const long UIA_CapStyleAttributeId                   = 40003;
        const long UIA_CultureAttributeId                    = 40004;
        const long UIA_FontNameAttributeId                   = 40005;
        const long UIA_FontSizeAttributeId                   = 40006;
        const long UIA_FontWeightAttributeId                 = 40007;
        const long UIA_ForegroundColorAttributeId            = 40008;
        const long UIA_HorizontalTextAlignmentAttributeId    = 40009;
        const long UIA_IndentationFirstLineAttributeId       = 40010;
        const long UIA_IndentationLeadingAttributeId         = 40011;
        const long UIA_IndentationTrailingAttributeId        = 40012;
        const long UIA_IsHiddenAttributeId                   = 40013;
        const long UIA_IsItalicAttributeId                   = 40014;
        const long UIA_IsReadOnlyAttributeId                 = 40015;
        const long UIA_IsSubscriptAttributeId                = 40016;
        const long UIA_IsSuperscriptAttributeId              = 40017;
        const long UIA_MarginBottomAttributeId               = 40018;
        const long UIA_MarginLeadingAttributeId              = 40019;
        const long UIA_MarginTopAttributeId                  = 40020;
        const long UIA_MarginTrailingAttributeId             = 40021;
        const long UIA_OutlineStylesAttributeId              = 40022;
        const long UIA_OverlineColorAttributeId              = 40023;
        const long UIA_OverlineStyleAttributeId              = 40024;
        const long UIA_StrikethroughColorAttributeId         = 40025;
        const long UIA_StrikethroughStyleAttributeId         = 40026;
        const long UIA_TabsAttributeId                       = 40027;
        const long UIA_TextFlowDirectionsAttributeId         = 40028;
        const long UIA_UnderlineColorAttributeId             = 40029;
        const long UIA_UnderlineStyleAttributeId             = 40030;
        const long UIA_AnnotationTypesAttributeId            = 40031;
        const long UIA_AnnotationObjectsAttributeId          = 40032;
        const long UIA_StyleNameAttributeId                  = 40033;
        const long UIA_StyleIdAttributeId                    = 40034;
        const long UIA_LinkAttributeId                       = 40035;
        const long UIA_IsActiveAttributeId                   = 40036;
        const long UIA_SelectionActiveEndAttributeId         = 40037;
        const long UIA_CaretPositionAttributeId              = 40038;
        const long UIA_CaretBidiModeAttributeId              = 40039;
        const long UIA_LineSpacingAttributeId                = 40040;
        const long UIA_BeforeParagraphSpacingAttributeId     = 40041;
        const long UIA_AfterParagraphSpacingAttributeId      = 40042;
        const long UIA_SayAsInterpretAsAttributeId           = 40043;
    }

    [dllname("<no entry points>")]
    module UIA_ControlTypeIds
    {
        const long UIA_ButtonControlTypeId        = 50000;
        const long UIA_CalendarControlTypeId      = 50001;
        const long UIA_CheckBoxControlTypeId      = 50002;
        const long UIA_ComboBoxControlTypeId      = 50003;
        const long UIA_EditControlTypeId          = 50004;
        const long UIA_HyperlinkControlTypeId     = 50005;
        const long UIA_ImageControlTypeId         = 50006;
        const long UIA_ListItemControlTypeId      = 50007;
        const long UIA_ListControlTypeId          = 50008;
        const long UIA_MenuControlTypeId          = 50009;
        const long UIA_MenuBarControlTypeId       = 50010;
        const long UIA_MenuItemControlTypeId      = 50011;
        const long UIA_ProgressBarControlTypeId   = 50012;
        const long UIA_RadioButtonControlTypeId   = 50013;
        const long UIA_ScrollBarControlTypeId     = 50014;
        const long UIA_SliderControlTypeId        = 50015;
        const long UIA_SpinnerControlTypeId       = 50016;
        const long UIA_StatusBarControlTypeId     = 50017;
        const long UIA_TabControlTypeId           = 50018;
        const long UIA_TabItemControlTypeId       = 50019;
        const long UIA_TextControlTypeId          = 50020;
        const long UIA_ToolBarControlTypeId       = 50021;
        const long UIA_ToolTipControlTypeId       = 50022;
        const long UIA_TreeControlTypeId          = 50023;
        const long UIA_TreeItemControlTypeId      = 50024;
        const long UIA_CustomControlTypeId        = 50025;
        const long UIA_GroupControlTypeId         = 50026;
        const long UIA_ThumbControlTypeId         = 50027;
        const long UIA_DataGridControlTypeId      = 50028;
        const long UIA_DataItemControlTypeId      = 50029;
        const long UIA_DocumentControlTypeId      = 50030;
        const long UIA_SplitButtonControlTypeId   = 50031;
        const long UIA_WindowControlTypeId        = 50032;
        const long UIA_PaneControlTypeId          = 50033;
        const long UIA_HeaderControlTypeId        = 50034;
        const long UIA_HeaderItemControlTypeId    = 50035;
        const long UIA_TableControlTypeId         = 50036;
        const long UIA_TitleBarControlTypeId      = 50037;
        const long UIA_SeparatorControlTypeId     = 50038;
        const long UIA_SemanticZoomControlTypeId  = 50039;
        const long UIA_AppBarControlTypeId        = 50040;
    };

    [dllname("<no entry points>")]
    module UIA_AnnotationTypes
    {
        const long AnnotationType_Unknown                = 60000;
        const long AnnotationType_SpellingError          = 60001;
        const long AnnotationType_GrammarError           = 60002;
        const long AnnotationType_Comment                = 60003;
        const long AnnotationType_FormulaError           = 60004;
        const long AnnotationType_TrackChanges           = 60005;
        const long AnnotationType_Header                 = 60006;
        const long AnnotationType_Footer                 = 60007;
        const long AnnotationType_Highlighted            = 60008;
        const long AnnotationType_Endnote                = 60009;
        const long AnnotationType_Footnote               = 60010;
        const long AnnotationType_InsertionChange        = 60011;
        const long AnnotationType_DeletionChange         = 60012;
        const long AnnotationType_MoveChange             = 60013;
        const long AnnotationType_FormatChange           = 60014;
        const long AnnotationType_UnsyncedChange         = 60015;
        const long AnnotationType_EditingLockedChange    = 60016;
        const long AnnotationType_ExternalChange         = 60017;
        const long AnnotationType_ConflictingChange      = 60018;
        const long AnnotationType_Author                 = 60019;
        const long AnnotationType_AdvancedProofingIssue  = 60020;
        const long AnnotationType_DataValidationError    = 60021;
        const long AnnotationType_CircularReferenceError = 60022;
        const long AnnotationType_Mathematics            = 60023;
        const long AnnotationType_Sensitive              = 60024;
    };

    [dllname("<no entry points>")]
    module UIA_StyleIds
    {
        const long StyleId_Custom        = 70000;
        const long StyleId_Heading1      = 70001;
        const long StyleId_Heading2      = 70002;
        const long StyleId_Heading3      = 70003;
        const long StyleId_Heading4      = 70004;
        const long StyleId_Heading5      = 70005;
        const long StyleId_Heading6      = 70006;
        const long StyleId_Heading7      = 70007;
        const long StyleId_Heading8      = 70008;
        const long StyleId_Heading9      = 70009;
        const long StyleId_Title         = 70010;
        const long StyleId_Subtitle      = 70011;
        const long StyleId_Normal        = 70012;
        const long StyleId_Emphasis      = 70013;
        const long StyleId_Quote         = 70014;
        const long StyleId_BulletedList  = 70015;
        const long StyleId_NumberedList	 = 70016;
    };

    [dllname("<no entry points>")]
    module UIA_LandmarkTypeIds
    {
        const long UIA_CustomLandmarkTypeId     = 80000;
        const long UIA_FormLandmarkTypeId       = 80001;
        const long UIA_MainLandmarkTypeId       = 80002;
        const long UIA_NavigationLandmarkTypeId = 80003;
        const long UIA_SearchLandmarkTypeId     = 80004;
    };

    [dllname("<no entry points>")]
    module UIA_HeadingLevelIds
    {
        const long HeadingLevel_None = 80050;
        const long HeadingLevel1 = 80051;
        const long HeadingLevel2 = 80052;
        const long HeadingLevel3 = 80053;
        const long HeadingLevel4 = 80054;
        const long HeadingLevel5 = 80055;
        const long HeadingLevel6 = 80056;
        const long HeadingLevel7 = 80057;
        const long HeadingLevel8 = 80058;
        const long HeadingLevel9 = 80059;
    };

    [dllname("<no entry points>")]
    module UIA_ChangeIds
    {
        const long UIA_SummaryChangeId = 90000;
    };

    [dllname("<no entry points>")]
    module UIA_MetadataIds
    {
        const long UIA_SayAsInterpretAsMetadataId = 100000;
    };

    interface IUIAutomationElement;
    interface IUIAutomationElementArray;

    //
    //  IUIAutomationCondition
    //
    [object, uuid(352ffba8-0973-437c-a61f-f64cafd81df9), pointer_default(unique)]
    interface IUIAutomationCondition : IUnknown
    {
    }

    //
    //  IUIAutomationBoolCondition
    //
    [object, uuid(1b4e1f2e-75eb-4d0b-8952-5a69988e2307), pointer_default(unique)]
    interface IUIAutomationBoolCondition : IUIAutomationCondition
    {
        [propget] HRESULT BooleanValue (
            [out, retval] BOOL * boolVal );
    }

    //
    //  IUIAutomationPropertyCondition
    //
    [object, uuid(99ebf2cb-5578-4267-9ad4-afd6ea77e94b), pointer_default(unique)]
    interface IUIAutomationPropertyCondition : IUIAutomationCondition
    {
        [propget] HRESULT PropertyId (
            [out, retval] PROPERTYID * propertyId );

        [propget] HRESULT PropertyValue (
            [out, retval] VARIANT * propertyValue );

        [propget] HRESULT PropertyConditionFlags (
            [out, retval] enum PropertyConditionFlags * flags );
    }

    //
    //  IUIAutomationAndCondition
    //
    [object, uuid(a7d0af36-b912-45fe-9855-091ddc174aec), pointer_default(unique)]
    interface IUIAutomationAndCondition : IUIAutomationCondition
    {
        [propget] HRESULT ChildCount (
            [out, retval] int * childCount );

        HRESULT GetChildrenAsNativeArray (
            [out, size_is( ,*childArrayCount)] IUIAutomationCondition *** childArray,
            [out] int * childArrayCount );

        HRESULT GetChildren (
            [out, retval] SAFEARRAY(IUIAutomationCondition) * childArray );
    }

    //
    //  IUIAutomationOrCondition
    //
    [object, uuid(8753f032-3db1-47b5-a1fc-6e34a266c712), pointer_default(unique)]
    interface IUIAutomationOrCondition : IUIAutomationCondition
    {
        [propget] HRESULT ChildCount (
            [out, retval] int * childCount );

        HRESULT GetChildrenAsNativeArray (
            [out, size_is(, *childArrayCount)] IUIAutomationCondition *** childArray,
            [out] int * childArrayCount );

        HRESULT GetChildren (
            [out, retval] SAFEARRAY(IUIAutomationCondition) * childArray );
    }

    //
    //  IUIAutomationNotCondition
    //
    [object, uuid(f528b657-847b-498c-8896-d52b565407a1), pointer_default(unique)]
    interface IUIAutomationNotCondition : IUIAutomationCondition
    {
        HRESULT GetChild (
            [out, retval] IUIAutomationCondition ** condition );
    }

    //
    //  IUIAutomationCacheRequest
    //
    [object, uuid(b32a92b5-bc25-4078-9c08-d7ee95c48e03), pointer_default(unique)]
    interface IUIAutomationCacheRequest : IUnknown
    {
        HRESULT AddProperty (
            [in] PROPERTYID propertyId );

        HRESULT AddPattern (
            [in] PATTERNID patternId );

        HRESULT Clone (
            [out, retval] IUIAutomationCacheRequest ** clonedRequest );

        [propget] HRESULT TreeScope (
            [out, retval] enum TreeScope * scope );

        [propput] HRESULT TreeScope (
            [in] enum TreeScope scope );

        [propget] HRESULT TreeFilter (
            [out, retval] IUIAutomationCondition ** filter );

        [propput] HRESULT TreeFilter (
            [in] IUIAutomationCondition * filter );

        [propget] HRESULT AutomationElementMode (
            [out, retval] enum AutomationElementMode * mode );

        [propput] HRESULT AutomationElementMode (
            [in] enum AutomationElementMode mode );

    }

    //
    //  IUIAutomationTreeWalker
    //
    [object, uuid(4042c624-389c-4afc-a630-9df854a541fc), pointer_default(unique)]
    interface IUIAutomationTreeWalker : IUnknown
    {
        HRESULT GetParentElement (
            [in] IUIAutomationElement * element,
            [out, retval] IUIAutomationElement ** parent );

        HRESULT GetFirstChildElement (
            [in] IUIAutomationElement * element,
            [out, retval] IUIAutomationElement ** first );

        HRESULT GetLastChildElement (
            [in] IUIAutomationElement * element,
            [out, retval] IUIAutomationElement ** last );

        HRESULT GetNextSiblingElement (
            [in] IUIAutomationElement * element,
            [out, retval] IUIAutomationElement ** next );

        HRESULT GetPreviousSiblingElement (
            [in] IUIAutomationElement * element,
            [out, retval] IUIAutomationElement ** previous );

        HRESULT NormalizeElement (
            [in] IUIAutomationElement * element,
            [out, retval] IUIAutomationElement ** normalized );


        // Separate * CacheRequest names exist, because there's no name overloading in COM
        HRESULT GetParentElementBuildCache (
            [in] IUIAutomationElement * element,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** parent );

        HRESULT GetFirstChildElementBuildCache (
            [in] IUIAutomationElement * element,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** first );

        HRESULT GetLastChildElementBuildCache (
            [in] IUIAutomationElement * element,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** last );

        HRESULT GetNextSiblingElementBuildCache (
            [in] IUIAutomationElement * element,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** next );

        HRESULT GetPreviousSiblingElementBuildCache (
            [in] IUIAutomationElement * element,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** previous );

        HRESULT NormalizeElementBuildCache (
            [in] IUIAutomationElement * element,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** normalized );


        [propget] HRESULT Condition (
            [out, retval] IUIAutomationCondition ** condition );

    }

    //
    //  IUIAutomationEventHandler
    //
    [object, uuid(146c3c17-f12e-4e22-8c27-f894b9b79c69), pointer_default(unique), oleautomation]
    interface IUIAutomationEventHandler : IUnknown
    {
        HRESULT HandleAutomationEvent (
            [in] IUIAutomationElement * sender,
            [in] EVENTID eventId );
    }

    //
    //  IUIAutomationPropertyChangedEventHandler
    //
    [object, uuid(40cd37d4-c756-4b0c-8c6f-bddfeeb13b50), pointer_default(unique), oleautomation]
    interface IUIAutomationPropertyChangedEventHandler : IUnknown
    {
        HRESULT HandlePropertyChangedEvent (
            [in] IUIAutomationElement * sender,
            [in] PROPERTYID propertyId,
            [in] VARIANT newValue );
    }

    //
    //  IUIAutomationStructureChangedEventHandler
    //
    [object, uuid(e81d1b4e-11c5-42f8-9754-e7036c79f054), pointer_default(unique), oleautomation]
    interface IUIAutomationStructureChangedEventHandler : IUnknown
    {
        HRESULT HandleStructureChangedEvent (
            [in] IUIAutomationElement * sender,
            [in] enum StructureChangeType changeType,
            [in] SAFEARRAY(int) runtimeId );
    }

    //
    //  IUIAutomationFocusChangedEventHandler
    //
    [object, uuid(c270f6b5-5c69-4290-9745-7a7f97169468), pointer_default(unique), oleautomation]
    interface IUIAutomationFocusChangedEventHandler : IUnknown
    {
        HRESULT HandleFocusChangedEvent (
            [in] IUIAutomationElement * sender );
    }

    //
    //  IUIAutomationTextEditTextChangedEventHandler
    //
    [object, uuid(92FAA680-E704-4156-931A-E32D5BB38F3F), pointer_default(unique), oleautomation]
    interface IUIAutomationTextEditTextChangedEventHandler : IUnknown
    {
        HRESULT HandleTextEditTextChangedEvent (
            [in] IUIAutomationElement *sender,
            [in] enum TextEditChangeType textEditChangeType,
            [in] SAFEARRAY(BSTR) eventStrings );
    }

    //
    //  IUIAutomationChangesEventHandler
    //
    [object, uuid(58EDCA55-2C3E-4980-B1B9-56C17F27A2A0), pointer_default(unique), oleautomation]
    interface IUIAutomationChangesEventHandler : IUnknown
    {
        HRESULT HandleChangesEvent(
            [in] IUIAutomationElement *sender,
            [in, size_is(changesCount)] struct UiaChangeInfo *uiaChanges,
            [in] int changesCount);
    }

    //
    //  IUIAutomationNotificationEventHandler
    //
    [object, uuid(C7CB2637-E6C2-4D0C-85DE-4948C02175C7), pointer_default(unique), oleautomation]
    interface IUIAutomationNotificationEventHandler : IUnknown
    {
        HRESULT HandleNotificationEvent(
            [in] IUIAutomationElement* sender,
            enum NotificationKind notificationKind,
            enum NotificationProcessing notificationProcessing,
            [in] BSTR displayString,
            [in] BSTR activityId);
    }

    //
    //  IUIAutomationInvokePattern
    //
    [object, uuid(fb377fbe-8ea6-46d5-9c73-6499642d3059), pointer_default(unique)]
    interface IUIAutomationInvokePattern : IUnknown
    {
        HRESULT Invoke ( );

    }

    //
    //  IUIAutomationDockPattern
    //
    [object, uuid(fde5ef97-1464-48f6-90bf-43d0948e86ec), pointer_default(unique)]
    interface IUIAutomationDockPattern : IUnknown
    {
        HRESULT SetDockPosition (
            [in] enum DockPosition dockPos );

        [propget] HRESULT CurrentDockPosition (
            [out, retval] enum DockPosition * retVal );

        [propget] HRESULT CachedDockPosition (
            [out, retval] enum DockPosition * retVal );
    }

    //
    //  IUIAutomationExpandCollapsePattern
    //
    [object, uuid(619be086-1f4e-4ee4-bafa-210128738730), pointer_default(unique)]
    interface IUIAutomationExpandCollapsePattern : IUnknown
    {
        HRESULT Expand ( );

        HRESULT Collapse ( );

        [propget] HRESULT CurrentExpandCollapseState (
            [out, retval] enum ExpandCollapseState * retVal );

        [propget] HRESULT CachedExpandCollapseState (
            [out, retval] enum ExpandCollapseState * retVal );
    }

    //
    //  IUIAutomationGridPattern
    //
    [object, uuid(414c3cdc-856b-4f5b-8538-3131c6302550), pointer_default(unique)]
    interface IUIAutomationGridPattern : IUnknown
    {
        HRESULT GetItem (
            [in] int row,
            [in] int column,
            [out, retval] IUIAutomationElement ** element );

        [propget] HRESULT CurrentRowCount (
            [out, retval] int * retVal );

        [propget] HRESULT CurrentColumnCount (
            [out, retval] int * retVal );

        [propget] HRESULT CachedRowCount (
            [out, retval] int * retVal );

        [propget] HRESULT CachedColumnCount (
            [out, retval] int * retVal );
    }

    //
    //  IUIAutomationGridItemPattern
    //
    [object, uuid(78f8ef57-66c3-4e09-bd7c-e79b2004894d), pointer_default(unique)]
    interface IUIAutomationGridItemPattern : IUnknown
    {
        [propget] HRESULT CurrentContainingGrid (
            [out, retval] IUIAutomationElement ** retVal );

        [propget] HRESULT CurrentRow (
            [out, retval] int * retVal );

        [propget] HRESULT CurrentColumn (
            [out, retval] int * retVal );

        [propget] HRESULT CurrentRowSpan (
            [out, retval] int * retVal );

        [propget] HRESULT CurrentColumnSpan (
            [out, retval] int * retVal );

        [propget] HRESULT CachedContainingGrid (
            [out, retval] IUIAutomationElement ** retVal );

        [propget] HRESULT CachedRow (
            [out, retval] int * retVal );

        [propget] HRESULT CachedColumn (
            [out, retval] int * retVal );

        [propget] HRESULT CachedRowSpan (
            [out, retval] int * retVal );

        [propget] HRESULT CachedColumnSpan (
            [out, retval] int * retVal );
    }

    //
    //  IUIAutomationMultipleViewPattern
    //
    [object, uuid(8d253c91-1dc5-4bb5-b18f-ade16fa495e8), pointer_default(unique)]
    interface IUIAutomationMultipleViewPattern : IUnknown
    {
        HRESULT GetViewName (
            [in] int view,
            [out, retval] BSTR * name );

        HRESULT SetCurrentView (
            [in] int view );

        [propget] HRESULT CurrentCurrentView (
            [out, retval] int * retVal );

        HRESULT GetCurrentSupportedViews (
            [out, retval] SAFEARRAY(int) * retVal );

        [propget] HRESULT CachedCurrentView (
            [out, retval] int * retVal );

        HRESULT GetCachedSupportedViews (
            [out, retval] SAFEARRAY(int) * retVal );
    }
   
    //
    //  IUIAutomationObjectModelPattern
    //
    [object, uuid(71c284b3-c14d-4d14-981e-19751b0d756d), pointer_default(unique)]
    interface IUIAutomationObjectModelPattern : IUnknown
    {
        HRESULT GetUnderlyingObjectModel (
            [out, retval] IUnknown ** retVal ); 
    }

    //
    //  IUIAutomationRangeValuePattern
    //
    [object, uuid(59213f4f-7346-49e5-b120-80555987a148), pointer_default(unique)]
    interface IUIAutomationRangeValuePattern : IUnknown
    {
        HRESULT SetValue (
            [in] double val );

        [propget] HRESULT CurrentValue (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentIsReadOnly (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentMaximum (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentMinimum (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentLargeChange (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentSmallChange (
            [out, retval] double * retVal );

        [propget] HRESULT CachedValue (
            [out, retval] double * retVal );

        [propget] HRESULT CachedIsReadOnly (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedMaximum (
            [out, retval] double * retVal );

        [propget] HRESULT CachedMinimum (
            [out, retval] double * retVal );

        [propget] HRESULT CachedLargeChange (
            [out, retval] double * retVal );

        [propget] HRESULT CachedSmallChange (
            [out, retval] double * retVal );
    }

    //
    //  IUIAutomationScrollPattern
    //
    [object, uuid(88f4d42a-e881-459d-a77c-73bbbb7e02dc), pointer_default(unique)]
    interface IUIAutomationScrollPattern : IUnknown
    {
        HRESULT Scroll (
            [in] enum ScrollAmount horizontalAmount,
            [in] enum ScrollAmount verticalAmount );

        HRESULT SetScrollPercent (
            [in] double horizontalPercent,
            [in] double verticalPercent );

        [propget] HRESULT CurrentHorizontalScrollPercent (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentVerticalScrollPercent (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentHorizontalViewSize (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentVerticalViewSize (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentHorizontallyScrollable (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentVerticallyScrollable (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedHorizontalScrollPercent (
            [out, retval] double * retVal );

        [propget] HRESULT CachedVerticalScrollPercent (
            [out, retval] double * retVal );

        [propget] HRESULT CachedHorizontalViewSize (
            [out, retval] double * retVal );

        [propget] HRESULT CachedVerticalViewSize (
            [out, retval] double * retVal );

        [propget] HRESULT CachedHorizontallyScrollable (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedVerticallyScrollable (
            [out, retval] BOOL * retVal );
    }

    //
    //  IUIAutomationScrollItemPattern
    //
    [object, uuid(b488300f-d015-4f19-9c29-bb595e3645ef), pointer_default(unique)]
    interface IUIAutomationScrollItemPattern : IUnknown
    {
        HRESULT ScrollIntoView (  );
    }

    //
    //  IUIAutomationSelectionPattern
    //
    [object, uuid(5ed5202e-b2ac-47a6-b638-4b0bf140d78e), pointer_default(unique)]
    interface IUIAutomationSelectionPattern : IUnknown
    {
        HRESULT GetCurrentSelection (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CurrentCanSelectMultiple (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentIsSelectionRequired (
            [out, retval] BOOL * retVal );

        HRESULT GetCachedSelection (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CachedCanSelectMultiple (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedIsSelectionRequired (
            [out, retval] BOOL * retVal );
    }

    //
    //  IUIAutomationSelectionPattern2
    //
    [object, uuid(0532bfae-c011-4e32-a343-6d642d798555), pointer_default(unique)]
    interface IUIAutomationSelectionPattern2 : IUIAutomationSelectionPattern
    {
        [propget] HRESULT CurrentFirstSelectedItem(
            [out, retval] IUIAutomationElement ** retVal);

        [propget] HRESULT CurrentLastSelectedItem(
            [out, retval] IUIAutomationElement ** retVal);

        [propget] HRESULT CurrentCurrentSelectedItem(
            [out, retval] IUIAutomationElement ** retVal);

        [propget] HRESULT CurrentItemCount(
            [out, retval] int * retVal);

        [propget] HRESULT CachedFirstSelectedItem(
            [out, retval] IUIAutomationElement ** retVal);

        [propget] HRESULT CachedLastSelectedItem(
            [out, retval] IUIAutomationElement ** retVal);

        [propget] HRESULT CachedCurrentSelectedItem(
            [out, retval] IUIAutomationElement ** retVal);

        [propget] HRESULT CachedItemCount(
            [out, retval] int * retVal);
    }

    //
    //  IUIAutomationSelectionItemPattern
    //
    [object, uuid(a8efa66a-0fda-421a-9194-38021f3578ea), pointer_default(unique)]
    interface IUIAutomationSelectionItemPattern : IUnknown
    {
        HRESULT Select ( );

        HRESULT AddToSelection ( );

        HRESULT RemoveFromSelection ( );

        [propget] HRESULT CurrentIsSelected (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentSelectionContainer (
            [out, retval] IUIAutomationElement ** retVal );

        [propget] HRESULT CachedIsSelected (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedSelectionContainer (
            [out, retval] IUIAutomationElement ** retVal );
    }

    //
    //  IUIAutomationSynchronizedInputPattern
    //
    [object, uuid(2233be0b-afb7-448b-9fda-3b378aa5eae1), pointer_default(unique)]
    interface IUIAutomationSynchronizedInputPattern : IUnknown
    {
        HRESULT StartListening (
            [in] enum SynchronizedInputType inputType );

        HRESULT Cancel ( );
    }


    //
    //  IUIAutomationTablePattern
    //
    [object, uuid(620e691c-ea96-4710-a850-754b24ce2417), pointer_default(unique)]
    interface IUIAutomationTablePattern : IUnknown
    {
        HRESULT GetCurrentRowHeaders (
            [out, retval] IUIAutomationElementArray ** retVal );

        HRESULT GetCurrentColumnHeaders (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CurrentRowOrColumnMajor (
            [out, retval] enum RowOrColumnMajor * retVal );

        HRESULT GetCachedRowHeaders (
            [out, retval] IUIAutomationElementArray ** retVal );

        HRESULT GetCachedColumnHeaders (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CachedRowOrColumnMajor (
            [out, retval] enum RowOrColumnMajor * retVal );
    }

    //
    //  IUIAutomationTableItemPattern
    //
    [object, uuid(0b964eb3-ef2e-4464-9c79-61d61737a27e), pointer_default(unique)]
    interface IUIAutomationTableItemPattern : IUnknown
    {
        HRESULT GetCurrentRowHeaderItems (
            [out, retval] IUIAutomationElementArray ** retVal );

        HRESULT GetCurrentColumnHeaderItems (
            [out, retval] IUIAutomationElementArray ** retVal );

        HRESULT GetCachedRowHeaderItems (
            [out, retval] IUIAutomationElementArray ** retVal );

        HRESULT GetCachedColumnHeaderItems (
            [out, retval] IUIAutomationElementArray ** retVal );
    }

    //
    //  IUIAutomationTogglePattern
    //
    [object, uuid(94cf8058-9b8d-4ab9-8bfd-4cd0a33c8c70), pointer_default(unique)]
    interface IUIAutomationTogglePattern : IUnknown
    {
        HRESULT Toggle ( );

        [propget] HRESULT CurrentToggleState (
            [out, retval] enum ToggleState * retVal );

        [propget] HRESULT CachedToggleState (
            [out, retval] enum ToggleState * retVal );
    }

    //
    //  IUIAutomationTransformPattern
    //
    [object, uuid(a9b55844-a55d-4ef0-926d-569c16ff89bb), pointer_default(unique)]
    interface IUIAutomationTransformPattern : IUnknown
    {
        HRESULT Move (
            [in] double x,
            [in] double y );

        HRESULT Resize (
            [in] double width,
            [in] double height );

        HRESULT Rotate (
            [in] double degrees );

        [propget] HRESULT CurrentCanMove (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentCanResize (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentCanRotate (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedCanMove (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedCanResize (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedCanRotate (
            [out, retval] BOOL * retVal );
    }

    //
    //  IUIAutomationValuePattern
    //
    [object, uuid(a94cd8b1-0844-4cd6-9d2d-640537ab39e9), pointer_default(unique)]
    interface IUIAutomationValuePattern : IUnknown
    {
        HRESULT SetValue (
            [in] BSTR val );

        [propget] HRESULT CurrentValue (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentIsReadOnly (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedValue (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedIsReadOnly (
            [out, retval] BOOL * retVal );
    }

    //
    //  IUIAutomationWindowPattern
    //
    [object, uuid(0faef453-9208-43ef-bbb2-3b485177864f), pointer_default(unique)]
    interface IUIAutomationWindowPattern : IUnknown
    {
        HRESULT Close ( );

        HRESULT WaitForInputIdle (
            [in] int milliseconds,
            [out, retval] BOOL * success );

        HRESULT SetWindowVisualState (
            [in] enum WindowVisualState state );

        [propget] HRESULT CurrentCanMaximize (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentCanMinimize (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentIsModal (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentIsTopmost (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentWindowVisualState (
            [out, retval] enum WindowVisualState * retVal );

        [propget] HRESULT CurrentWindowInteractionState (
            [out, retval] enum WindowInteractionState * retVal );

        [propget] HRESULT CachedCanMaximize (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedCanMinimize (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedIsModal (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedIsTopmost (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedWindowVisualState (
            [out, retval] enum WindowVisualState * retVal );

        [propget] HRESULT CachedWindowInteractionState (
            [out, retval] enum WindowInteractionState * retVal );
    }


    //
    //  IUIAutomationTextRange
    //
    [object, uuid(a543cc6a-f4ae-494b-8239-c814481187a8), pointer_default(unique)]
    interface IUIAutomationTextRange : IUnknown
    {
        HRESULT Clone (
            [out, retval] IUIAutomationTextRange ** clonedRange );

        HRESULT Compare (
            [in] IUIAutomationTextRange * range,
            [out, retval] BOOL * areSame );

        HRESULT CompareEndpoints (
            [in] enum TextPatternRangeEndpoint srcEndPoint,
            [in] IUIAutomationTextRange * range,
            [in] enum TextPatternRangeEndpoint targetEndPoint,
            [out, retval] int * compValue );

        HRESULT ExpandToEnclosingUnit (
            [in] enum TextUnit textUnit );

        HRESULT FindAttribute (
            [in] TEXTATTRIBUTEID attr,
            [in] VARIANT val,
            [in] BOOL backward,
            [out, retval] IUIAutomationTextRange ** found );

        HRESULT FindText (
            [in] BSTR text,
            [in] BOOL backward,
            [in] BOOL ignoreCase,
            [out, retval] IUIAutomationTextRange ** found );

        HRESULT GetAttributeValue (
            [in] TEXTATTRIBUTEID attr,
            [out, retval] VARIANT * value );

        HRESULT GetBoundingRectangles (
            [out, retval] SAFEARRAY(double) * boundingRects );

        HRESULT GetEnclosingElement (
            [out, retval] IUIAutomationElement ** enclosingElement );

        HRESULT GetText (
            [in] int maxLength,
            [out, retval] BSTR * text );

        HRESULT Move (
            [in] enum TextUnit unit,
            [in] int count,
            [out, retval] int * moved );

        HRESULT MoveEndpointByUnit (
            [in] enum TextPatternRangeEndpoint endpoint,
            [in] enum TextUnit unit,
            [in] int count,
            [out, retval] int * moved );

        HRESULT MoveEndpointByRange (
            [in] enum TextPatternRangeEndpoint srcEndPoint,
            [in] IUIAutomationTextRange * range,
            [in] enum TextPatternRangeEndpoint targetEndPoint );

        HRESULT Select (  );

        HRESULT AddToSelection (  );

        HRESULT RemoveFromSelection (  );

        HRESULT ScrollIntoView (
            [in] BOOL alignToTop );

        HRESULT GetChildren (
            [out, retval] IUIAutomationElementArray ** children );

    }

    //
    //  IUIAutomationTextRange2
    //
    [object, uuid(BB9B40E0-5E04-46BD-9BE0-4B601B9AFAD4), pointer_default(unique)]
    interface IUIAutomationTextRange2 : IUIAutomationTextRange
    {
        HRESULT ShowContextMenu ( );
    }

    //
    // IUIAutomationTextRange3 
    //
    [object, uuid(6A315D69-5512-4C2E-85F0-53FCE6DD4BC2), pointer_default(unique)]
    interface IUIAutomationTextRange3 : IUIAutomationtextRange2
    {
        HRESULT GetEnclosingElementBuildCache(
            [in] IUIAutomationCacheRequest* cacheRequest,
            [out, retval] IUIAutomationElement** enclosingElement);

        HRESULT GetChildrenBuildCache(
            [in] IUIAutomationCacheRequest* cacheRequest,
            [out, retval] IUIAutomationElementArray** children);

        HRESULT GetAttributeValues(
            [in, size_is(attributeIdCount)] const TEXTATTRIBUTEID* attributeIds,
            [in] int attributeIdCount,
            [out, retval] SAFEARRAY(VARIANT)* attributeValues);
    }

    //
    //  IUIAutomationTextRangeArray
    //
    [object, uuid(ce4ae76a-e717-4c98-81ea-47371d028eb6), pointer_default(unique)]
    interface IUIAutomationTextRangeArray : IUnknown
    {
        [propget] HRESULT Length (
            [out, retval] int * length );

        HRESULT GetElement (
            [in] int index,
            [out, retval] IUIAutomationTextRange ** element );

    }

    //
    //  IUIAutomationTextPattern
    //
    [object, uuid(32eba289-3583-42c9-9c59-3b6d9a1e9b6a), pointer_default(unique)]
    interface IUIAutomationTextPattern : IUnknown
    {
        HRESULT RangeFromPoint (
            [in] POINT pt,
            [out, retval] IUIAutomationTextRange ** range );

        HRESULT RangeFromChild (
            [in] IUIAutomationElement * child,
            [out, retval] IUIAutomationTextRange ** range );

        HRESULT GetSelection (
            [out, retval] IUIAutomationTextRangeArray ** ranges );

        HRESULT GetVisibleRanges (
            [out, retval] IUIAutomationTextRangeArray ** ranges );

        [propget] HRESULT DocumentRange (
            [out, retval] IUIAutomationTextRange ** range );

        [propget] HRESULT SupportedTextSelection (
            [out, retval] enum SupportedTextSelection * supportedTextSelection );

    }

    //
    //  IUIAutomationTextPattern2
    //
    [object, uuid(506a921a-fcc9-409f-b23b-37eb74106872), pointer_default(unique)]
    interface IUIAutomationTextPattern2 : IUIAutomationTextPattern
    {
        HRESULT RangeFromAnnotation (
            [in] IUIAutomationElement * annotation,
            [out, retval] IUIAutomationTextRange ** range );

        HRESULT GetCaretRange ( 
            [out] BOOL * isActive,
            [out, retval] IUIAutomationTextRange ** range );
    }

    //
    // IUIAutomationTextEditPattern
    //
    [object, uuid(17E21576-996C-4870-99D9-BFF323380C06), pointer_default(unique)]
    interface IUIAutomationTextEditPattern : IUIAutomationTextPattern
    {
        HRESULT GetActiveComposition (
            [out, retval] IUIAutomationTextRange ** range );

        HRESULT GetConversionTarget (
            [out, retval] IUIAutomationTextRange ** range );
    }

    //
    //  IUIAutomationGridItemPattern
    //
    [object, uuid(01EA217A-1766-47ED-A6CC-ACF492854B1F), pointer_default(unique)]
    interface IUIAutomationCustomNavigationPattern : IUnknown
    {
        HRESULT Navigate(
            [in] enum NavigateDirection direction,
            [out, retval] IUIAutomationElement ** pRetVal);
    }

    //
    //  IUIAutomationActiveTextPositionChangedEventHandler
    //
    [object, uuid(F97933B0-8DAE-4496-8997-5BA015FE0D82), pointer_default(unique), oleautomation]
    interface IUIAutomationActiveTextPositionChangedEventHandler : IUnknown
    {
        HRESULT HandleActiveTextPositionChangedEvent(
            [in] IUIAutomationElement* sender,
            [in] IUIAutomationTextRange* range);
    }

    //
    //  IUIAutomationLegacyIAccessiblePattern
    //

    // Parameter names are intentionally kept the same as IAccessible
    [object, uuid(828055ad-355b-4435-86d5-3b51c14a9b1b), pointer_default(unique)]
    interface IUIAutomationLegacyIAccessiblePattern: IUnknown
    {
        HRESULT Select ( long flagsSelect );

        HRESULT DoDefaultAction ();

        HRESULT SetValue ( LPCWSTR szValue );

        [propget] HRESULT CurrentChildId (
            [out, retval] int * pRetVal );

        [propget] HRESULT CurrentName (
            [out, retval] BSTR * pszName );

        [propget] HRESULT CurrentValue (
            [out, retval] BSTR * pszValue );

        [propget] HRESULT CurrentDescription (
            [out, retval] BSTR * pszDescription );

        [propget] HRESULT CurrentRole (
            [out, retval] DWORD * pdwRole );

        [propget] HRESULT CurrentState (
            [out, retval] DWORD * pdwState );

        [propget] HRESULT CurrentHelp (
            [out, retval] BSTR * pszHelp );

        [propget] HRESULT CurrentKeyboardShortcut (
            [out, retval] BSTR * pszKeyboardShortcut );

        HRESULT GetCurrentSelection (
            [out, retval] IUIAutomationElementArray ** pvarSelectedChildren );

        [propget] HRESULT CurrentDefaultAction (
            [out, retval] BSTR * pszDefaultAction );

        [propget] HRESULT CachedChildId (
            [out, retval] int * pRetVal );

        [propget] HRESULT CachedName (
            [out, retval] BSTR * pszName );

        [propget] HRESULT CachedValue (
            [out, retval] BSTR * pszValue );

        [propget] HRESULT CachedDescription (
            [out, retval] BSTR * pszDescription );

        [propget] HRESULT CachedRole (
            [out, retval] DWORD * pdwRole );

        [propget] HRESULT CachedState (
            [out, retval] DWORD * pdwState );

        [propget] HRESULT CachedHelp (
            [out, retval] BSTR * pszHelp );

        [propget] HRESULT CachedKeyboardShortcut (
            [out, retval] BSTR * pszKeyboardShortcut );

        HRESULT GetCachedSelection (
            [out, retval] IUIAutomationElementArray ** pvarSelectedChildren );

        [propget] HRESULT CachedDefaultAction (
            [out, retval] BSTR * pszDefaultAction );

        HRESULT GetIAccessible ( [out, retval] IAccessible ** ppAccessible );
    };

    [object, uuid(c690fdb2-27a8-423c-812d-429773c9084e), pointer_default(unique)]
    interface IUIAutomationItemContainerPattern : IUnknown
    {
        // Find item by specified property/value. May return actual 
        // AutomationElement or a placeholder if the matching element is
        // virtualized.
        // Returns E_INVALIDARG if the property requested is not one that the
        // container supports searching over. Expected that most containers will
        // support Name property, and if appropriate for the container,
        // AutomationId and IsSelected.
        //
        // This method is expected to be relatively slow, since it may need to
        // traverse multiple objects in order to find a matching one.
        // When used in a loop to return multiple items, no specific order is
        // defined so long as each item is returned only once (ie. loop should
        // terminate). This method is also item-centric, not UI-centric, so items
        // with multiple UI representations need only be returned once.
        //
        // A special propertyId of 0 means 'match all items'. This can be used
        // with pStartAfter=NULL to get the first item, and then to get successive
        // items. Value should be VT_EMPTY in this case.
        HRESULT FindItemByProperty([in] IUIAutomationElement * pStartAfter,
                                   [in] PROPERTYID propertyId,
                                   [in] VARIANT value,
                                   [out, retval] IUIAutomationElement ** pFound);
    };

    [object, uuid(6ba3d7a6-04cf-4f11-8793-a8d1cde9969f), pointer_default(unique)]
    interface IUIAutomationVirtualizedItemPattern : IUnknown
    {
        // Request that a placeholder element make itself fully available. Blocks
        // until element is available, which could take time.
        // Returns S_OK if item is already available.
        // Parent control may scroll as a side effect if the container needs to
        // being the item into view in order to devirtualize it.
        HRESULT Realize();
    };


    //
    //  IUIAutomationAnnotationPattern
    //
    [object, uuid(9a175b21-339e-41b1-8e8b-623f6b681098), pointer_default(unique)]
    interface IUIAutomationAnnotationPattern : IUnknown
    {
        [propget] HRESULT CurrentAnnotationTypeId (
            [out, retval] int * retVal );

        [propget] HRESULT CurrentAnnotationTypeName (
            [out, retval] BSTR * retVal ); 

        [propget] HRESULT CurrentAuthor ( 
            [out, retval] BSTR * retVal);

        [propget] HRESULT CurrentDateTime ( 
            [out, retval] BSTR * retVal);

        [propget] HRESULT CurrentTarget ( 
            [out, retval] IUIAutomationElement ** retVal);

        [propget] HRESULT CachedAnnotationTypeId (
            [out, retval] int * retVal );

        [propget] HRESULT CachedAnnotationTypeName (
            [out, retval] BSTR * retVal ); 

        [propget] HRESULT CachedAuthor ( 
            [out, retval] BSTR * retVal);

        [propget] HRESULT CachedDateTime ( 
            [out, retval] BSTR * retVal);

        [propget] HRESULT CachedTarget ( 
            [out, retval] IUIAutomationElement ** retVal);

    };

    //
    //  IUIAutomationStylesPattern
    //
    [object, uuid(85b5f0a2-bd79-484a-ad2b-388c9838d5fb), pointer_default(unique)]
    interface IUIAutomationStylesPattern : IUnknown
    {
        [propget] HRESULT CurrentStyleId (
            [out, retval] int * retVal );

        [propget] HRESULT CurrentStyleName (
            [out, retval] BSTR * retVal ); 

        [propget] HRESULT CurrentFillColor (
            [out, retval] int * retVal ); 

        [propget] HRESULT CurrentFillPatternStyle (
            [out, retval] BSTR * retVal ); 

        [propget] HRESULT CurrentShape (
            [out, retval] BSTR * retVal ); 

        [propget] HRESULT CurrentFillPatternColor (
            [out, retval] int * retVal ); 

        [propget] HRESULT CurrentExtendedProperties (
            [out, retval] BSTR * retVal ); 

        HRESULT GetCurrentExtendedPropertiesAsArray (
            [out, size_is( ,* propertyCount)] struct ExtendedProperty ** propertyArray,
            [out] int * propertyCount );

        [propget] HRESULT CachedStyleId (
            [out, retval] int * retVal );

        [propget] HRESULT CachedStyleName (
            [out, retval] BSTR * retVal ); 

        [propget] HRESULT CachedFillColor (
            [out, retval] int * retVal ); 

        [propget] HRESULT CachedFillPatternStyle (
            [out, retval] BSTR * retVal ); 

        [propget] HRESULT CachedShape (
            [out, retval] BSTR * retVal ); 

        [propget] HRESULT CachedFillPatternColor (
            [out, retval] int * retVal ); 

        [propget] HRESULT CachedExtendedProperties (
            [out, retval] BSTR * retVal ); 

        HRESULT GetCachedExtendedPropertiesAsArray (
            [out, size_is( ,* propertyCount)] struct ExtendedProperty ** propertyArray,
            [out] int * propertyCount );
    };

    //
    //  IUIAutomationSpreadsheetPattern
    //
    [object, uuid(7517a7c8-faae-4de9-9f08-29b91e8595c1), pointer_default(unique)]
    interface IUIAutomationSpreadsheetPattern : IUnknown
    {
        HRESULT GetItemByName (
            [in] BSTR name,
            [out, retval] IUIAutomationElement ** element );
    };

    
    //
    //  IUIAutomationSpreadsheetItemPattern
    //
    [object, uuid(7d4fb86c-8d34-40e1-8e83-62c15204e335), pointer_default(unique)]
    interface IUIAutomationSpreadsheetItemPattern : IUnknown
    {
        [propget] HRESULT CurrentFormula (
            [out, retval] BSTR * retVal ); 

        HRESULT GetCurrentAnnotationObjects (
            [out, retval] IUIAutomationElementArray ** retVal );

        HRESULT GetCurrentAnnotationTypes (
            [out, retval] SAFEARRAY(int) * retVal );

        [propget] HRESULT CachedFormula (
            [out, retval] BSTR * retVal ); 

        HRESULT GetCachedAnnotationObjects (
            [out, retval] IUIAutomationElementArray ** retVal );

        HRESULT GetCachedAnnotationTypes (
            [out, retval] SAFEARRAY(int) * retVal );
    };

    //
    //  IUIAutomationTransformPattern2
    //
    [object, uuid(6d74d017-6ecb-4381-b38b-3c17a48ff1c2), pointer_default(unique)]
    interface IUIAutomationTransformPattern2 : IUIAutomationTransformPattern
    {
        HRESULT Zoom (
            [in] double zoomValue );

        HRESULT ZoomByUnit(
            [in] enum ZoomUnit zoomUnit);

        [propget] HRESULT CurrentCanZoom (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedCanZoom (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentZoomLevel (
            [out, retval] double * retVal );

        [propget] HRESULT CachedZoomLevel (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentZoomMinimum (
            [out, retval] double * retVal );

        [propget] HRESULT CachedZoomMinimum (
            [out, retval] double * retVal );

        [propget] HRESULT CurrentZoomMaximum (
            [out, retval] double * retVal );

        [propget] HRESULT CachedZoomMaximum (
            [out, retval] double * retVal );
    }

    //
    //  IUIAutomationTextChildPattern
    //
    [object, uuid(6552b038-ae05-40c8-abfd-aa08352aab86), pointer_default(unique)]
    interface IUIAutomationTextChildPattern : IUnknown
    {
        [propget] HRESULT TextContainer (
            [out, retval] IUIAutomationElement ** container );

        [propget] HRESULT TextRange (
            [out, retval] IUIAutomationTextRange ** range );
    }

    //
    //  IUIAutomationDragPattern
    //
    [object, uuid(1dc7b570-1f54-4bad-bcda-d36a722fb7bd), pointer_default(unique)]
    interface IUIAutomationDragPattern : IUnknown
    {
        [propget] HRESULT CurrentIsGrabbed (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedIsGrabbed (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentDropEffect (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedDropEffect (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentDropEffects (
            [out, retval] SAFEARRAY(BSTR) * retVal );

        [propget] HRESULT CachedDropEffects (
            [out, retval] SAFEARRAY(BSTR) * retVal );

        HRESULT GetCurrentGrabbedItems (
            [out, retval] IUIAutomationElementArray ** retVal );

        HRESULT GetCachedGrabbedItems (
            [out, retval] IUIAutomationElementArray ** retVal );
    }

    //
    //  IUIAutomationDropTargetPattern
    //
    [object, uuid(69a095f7-eee4-430e-a46b-fb73b1ae39a5), pointer_default(unique)]
    interface IUIAutomationDropTargetPattern : IUnknown
    {
        [propget] HRESULT CurrentDropTargetEffect (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedDropTargetEffect (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentDropTargetEffects (
            [out, retval] SAFEARRAY(BSTR) * retVal );

        [propget] HRESULT CachedDropTargetEffects (
            [out, retval] SAFEARRAY(BSTR) * retVal );
    }

    //
    //  IUIAutomationElement
    //
    [object, uuid(d22108aa-8ac5-49a5-837b-37bbb3d7591e), pointer_default(unique)]
    interface IUIAutomationElement : IUnknown
    {
        HRESULT SetFocus ( );

        HRESULT GetRuntimeId (
            [out, retval] SAFEARRAY(int) * runtimeId );

        HRESULT FindFirst (
            [in] enum TreeScope scope,
            [in] IUIAutomationCondition * condition,
            [out, retval] IUIAutomationElement ** found );

        HRESULT FindAll (
            [in] enum TreeScope scope,
            [in] IUIAutomationCondition * condition,
            [out, retval] IUIAutomationElementArray ** found );

        HRESULT FindFirstBuildCache (
            [in] enum TreeScope scope,
            [in] IUIAutomationCondition * condition,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** found );

        HRESULT FindAllBuildCache (
            [in] enum TreeScope scope,
            [in] IUIAutomationCondition * condition,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElementArray ** found );

        HRESULT BuildUpdatedCache (
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** updatedElement );

        HRESULT GetCurrentPropertyValue (
            [in] PROPERTYID propertyId,
            [out, retval] VARIANT * retVal);

        HRESULT GetCurrentPropertyValueEx (
            [in] PROPERTYID propertyId,
            [in] BOOL ignoreDefaultValue,
            [out, retval] VARIANT * retVal );

        HRESULT GetCachedPropertyValue (
            [in] PROPERTYID propertyId,
            [out, retval] VARIANT * retVal );

        HRESULT GetCachedPropertyValueEx (
            [in] PROPERTYID propertyId,
            [in] BOOL ignoreDefaultValue,
            [out, retval] VARIANT * retVal );


        // These versions exist to simplify using these methods, avoiding the extra Query
        // Interface step that inevitably follows getting the Pattern.
        HRESULT GetCurrentPatternAs (
            [in] PATTERNID patternId,
            [in] REFIID riid,
            [out, iid_is(riid), retval] void ** patternObject );

        HRESULT GetCachedPatternAs (
            [in] PATTERNID patternId,
            [in] REFIID riid,
            [out, iid_is(riid), retval] void ** patternObject );

        // These versions are better for managed code, or code that wants a generalized
        // handling path, they return as pure IUnknowns
        HRESULT GetCurrentPattern (
            [in] PATTERNID patternId,
            [out, retval] IUnknown ** patternObject );

        HRESULT GetCachedPattern (
            [in] PATTERNID patternId,
            [out, retval] IUnknown ** patternObject );

        HRESULT GetCachedParent (
            [out, retval] IUIAutomationElement ** parent );

        HRESULT GetCachedChildren (
            [out, retval] IUIAutomationElementArray ** children );

        // Current Property Getters (for convenience)
        [propget] HRESULT CurrentProcessId (
            [out, retval] int * retVal );

        [propget] HRESULT CurrentControlType (
            [out, retval] CONTROLTYPEID * retVal );

        [propget] HRESULT CurrentLocalizedControlType (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentName (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentAcceleratorKey (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentAccessKey (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentHasKeyboardFocus (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentIsKeyboardFocusable (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentIsEnabled (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentAutomationId (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentClassName (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentHelpText (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentCulture (
            [out, retval] int * retVal );

        [propget] HRESULT CurrentIsControlElement (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentIsContentElement (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentIsPassword (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentNativeWindowHandle (
            [out, retval] UIA_HWND * retVal );

        [propget] HRESULT CurrentItemType (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentIsOffscreen (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentOrientation (
            [out, retval] enum OrientationType * retVal );

        [propget] HRESULT CurrentFrameworkId (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentIsRequiredForForm (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentItemStatus (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentBoundingRectangle (
            [out, retval] RECT * retVal );

        [propget] HRESULT CurrentLabeledBy (
            [out, retval] IUIAutomationElement ** retVal );        

        [propget] HRESULT CurrentAriaRole (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentAriaProperties (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CurrentIsDataValidForForm (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CurrentControllerFor (
            [out, retval] IUIAutomationElementArray ** retVal ); 

        [propget] HRESULT CurrentDescribedBy (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CurrentFlowsTo (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CurrentProviderDescription (
            [out, retval] BSTR * retVal );        

        // Cached Property Getters (for convenience)
        [propget] HRESULT CachedProcessId (
            [out, retval] int * retVal );

        [propget] HRESULT CachedControlType (
            [out, retval] CONTROLTYPEID * retVal );

        [propget] HRESULT CachedLocalizedControlType (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedName (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedAcceleratorKey (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedAccessKey (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedHasKeyboardFocus (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedIsKeyboardFocusable (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedIsEnabled (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedAutomationId (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedClassName (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedHelpText (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedCulture (
            [out, retval] int * retVal );

        [propget] HRESULT CachedIsControlElement (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedIsContentElement (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedIsPassword (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedNativeWindowHandle (
            [out, retval] UIA_HWND * retVal );

        [propget] HRESULT CachedItemType (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedIsOffscreen (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedOrientation (
            [out, retval] enum OrientationType * retVal );

        [propget] HRESULT CachedFrameworkId (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedIsRequiredForForm (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedItemStatus (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedBoundingRectangle (
            [out, retval] RECT * retVal );

        [propget] HRESULT CachedLabeledBy (
            [out, retval] IUIAutomationElement ** retVal );

        [propget] HRESULT CachedAriaRole (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedAriaProperties (
            [out, retval] BSTR * retVal );

        [propget] HRESULT CachedIsDataValidForForm (
            [out, retval] BOOL * retVal );

        [propget] HRESULT CachedControllerFor (
            [out, retval] IUIAutomationElementArray ** retVal ); 

        [propget] HRESULT CachedDescribedBy (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CachedFlowsTo (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CachedProviderDescription (
            [out, retval] BSTR * retVal );        

        // Clickable point helper
        HRESULT GetClickablePoint(
            [out] POINT * clickable,
            [out, retval] BOOL * gotClickable );
    }
    
    //
    //  IUIAutomationElement2
    //
    [object, uuid(6749c683-f70d-4487-a698-5f79d55290d6), pointer_default(unique)]
    interface IUIAutomationElement2 : IUIAutomationElement
    {
        [propget] HRESULT CurrentOptimizeForVisualContent (
            [out, retval] BOOL * retVal ); 

        [propget] HRESULT CachedOptimizeForVisualContent (
            [out, retval] BOOL * retVal ); 

        [propget] HRESULT CurrentLiveSetting (
            [out, retval] enum LiveSetting * retVal );

        [propget] HRESULT CachedLiveSetting (
            [out, retval] enum LiveSetting * retVal );

        [propget] HRESULT CurrentFlowsFrom (
            [out, retval] IUIAutomationElementArray ** retVal );

        [propget] HRESULT CachedFlowsFrom (
            [out, retval] IUIAutomationElementArray ** retVal );
    }

    //
    //  IUIAutomationElement3
    //
    [object, uuid(8471DF34-AEE0-4A01-A7DE-7DB9AF12C296), pointer_default(unique)]
    interface IUIAutomationElement3 : IUIAutomationElement2
    {
        HRESULT ShowContextMenu ( );

        [propget] HRESULT CurrentIsPeripheral (
            [out, retval] BOOL * retVal ); 

        [propget] HRESULT CachedIsPeripheral (
            [out, retval] BOOL * retVal ); 
    }

    //
    //  IUIAutomationElement4
    //
    [object, uuid(3B6E233C-52FB-4063-A4C9-77C075C2A06B), pointer_default(unique)]
    interface IUIAutomationElement4 : IUIAutomationElement3
    {
        [propget] HRESULT CurrentPositionInSet(
            [out, retval] int * retVal);

        [propget] HRESULT CurrentSizeOfSet(
            [out, retval] int * retVal);

        [propget] HRESULT CurrentLevel(
            [out, retval] int * retVal);

        [propget] HRESULT CurrentAnnotationTypes(
            [out, retval] SAFEARRAY(int) * retVal);

        [propget] HRESULT CurrentAnnotationObjects(
            [out, retval] IUIAutomationElementArray ** retVal);

        [propget] HRESULT CachedPositionInSet(
            [out, retval] int * retVal);

        [propget] HRESULT CachedSizeOfSet(
            [out, retval] int * retVal);

        [propget] HRESULT CachedLevel(
            [out, retval] int * retVal);

        [propget] HRESULT CachedAnnotationTypes(
            [out, retval] SAFEARRAY(int) * retVal);

        [propget] HRESULT CachedAnnotationObjects(
            [out, retval] IUIAutomationElementArray ** retVal);
    }

    //
    //  IUIAutomationElement5
    //
    [object, uuid(98141C1D-0D0E-4175-BBE2-6BFF455842A7), pointer_default(unique)]
    interface IUIAutomationElement5 : IUIAutomationElement4
    {
        [propget] HRESULT CurrentLandmarkType(
            [out, retval] LANDMARKTYPEID * retVal);

        [propget] HRESULT CurrentLocalizedLandmarkType(
            [out, retval] BSTR * retVal);

        [propget] HRESULT CachedLandmarkType(
            [out, retval] LANDMARKTYPEID * retVal);

        [propget] HRESULT CachedLocalizedLandmarkType(
            [out, retval] BSTR * retVal);
    }

    //
    //  IUIAutomationElement6
    //
    [object, uuid(4780d450-8bca-4977-afa5-a4a517f555e3), pointer_default(unique)]
    interface IUIAutomationElement6 : IUIAutomationElement5
    {
        [propget] HRESULT CurrentFullDescription(
            [out, retval] BSTR * retVal);

        [propget] HRESULT CachedFullDescription(
            [out, retval] BSTR * retVal);
    }

    //
    //  IUIAutomationElement7
    //
    [object, uuid(204e8572-cfc3-4c11-b0c8-7da7420750b7), pointer_default(unique)]
    interface IUIAutomationElement7 : IUIAutomationElement6
    {
        HRESULT FindFirstWithOptions(
            [in] enum TreeScope scope,
            [in] IUIAutomationCondition * condition,
            [in] enum TreeTraversalOptions traversalOptions,
            [in] IUIAutomationElement * root,
            [out, retval] IUIAutomationElement ** found);

        HRESULT FindAllWithOptions(
            [in] enum TreeScope scope,
            [in] IUIAutomationCondition * condition,
            [in] enum TreeTraversalOptions traversalOptions,
            [in] IUIAutomationElement * root,
            [out, retval] IUIAutomationElementArray ** found);

        HRESULT FindFirstWithOptionsBuildCache(
            [in] enum TreeScope scope,
            [in] IUIAutomationCondition * condition,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [in] enum TreeTraversalOptions traversalOptions,
            [in] IUIAutomationElement * root,
            [out, retval] IUIAutomationElement ** found);

        HRESULT FindAllWithOptionsBuildCache(
            [in] enum TreeScope scope,
            [in] IUIAutomationCondition * condition,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [in] enum TreeTraversalOptions traversalOptions,
            [in] IUIAutomationElement * root,
            [out, retval] IUIAutomationElementArray ** found);

        HRESULT GetCurrentMetadataValue(
            [in] int targetId,
            [in] METADATAID metadataId,
            [out, retval] VARIANT* returnVal);
    }

    [object, uuid(8C60217D-5411-4CDE-BCC0-1CEDA223830C), pointer_default(unique)]
    interface IUIAutomationElement8 : IUIAutomationElement7
    {
        [propget] HRESULT CurrentHeadingLevel(
            [out, retval] HEADINGLEVELID* retVal);

        [propget] HRESULT CachedHeadingLevel(
            [out, retval] HEADINGLEVELID* retVal);
    }

    [object, uuid(39325fac-039d-440e-a3a3-5eb81a5cecc3), pointer_default(unique)]
    interface IUIAutomationElement9 : IUIAutomationElement8
    {
        [propget] HRESULT CurrentIsDialog(
            [out, retval] BOOL* retVal);
        [propget] HRESULT CachedIsDialog(
            [out, retval] BOOL* retVal);
    }

    //  IUIAutomationElementArray
    //
    [object, uuid(14314595-b4bc-4055-95f2-58f2e42c9855), pointer_default(unique)]
    interface IUIAutomationElementArray : IUnknown
    {
        [propget] HRESULT Length (
            [out, retval] int * length );

        HRESULT GetElement (
            [in] int index,
            [out, retval] IUIAutomationElement ** element );
    }



    //
    //  IUIAutomationProxyFactory
    //
    [object, uuid(85b94ecd-849d-42b6-b94d-d6db23fdf5a4), pointer_default(unique)]
    interface IUIAutomationProxyFactory : IUnknown
    {
        HRESULT CreateProvider (
            [in] UIA_HWND hwnd,
            [in] LONG idObject,
            [in] LONG idChild,
            [out, retval] IRawElementProviderSimple **provider );

        // The proxy Factory Id is an identifier of the Proxy Factory, it serves several purposes:
        //    - It uniquely identifies a given proxy factory, for ease of finding in the ProxyFactoryMapping
        //    - It is non-localized, so programs can use it to find a given proxy factory in the mapping for removal or position changing
        //    - It identifies which proxy factory created the proxy of a given element, for debugging purposes
        //    - Recommended Format is "Company Name: Proxy Name", to assist with uniqueness
        [propget] HRESULT ProxyFactoryId (
            [out, retval] BSTR *factoryId );
    }


    //
    //  IUIAutomationProxyFactoryEntry
    //
    [object, uuid(d50e472e-b64b-490c-bca1-d30696f9f289), pointer_default(unique)]
    interface IUIAutomationProxyFactoryEntry : IUnknown	 
    {
        [propget] HRESULT ProxyFactory (
            [out, retval] IUIAutomationProxyFactory **factory );

        [propget] HRESULT ClassName (
            [out, retval] BSTR *className );

        [propget] HRESULT ImageName (
            [out, retval] BSTR *imageName );

        [propget] HRESULT AllowSubstringMatch (
            [out, retval] BOOL *allowSubstringMatch );

        [propget] HRESULT CanCheckBaseClass (
            [out, retval] BOOL *canCheckBaseClass );

        [propget] HRESULT NeedsAdviseEvents (
            [out, retval] BOOL *adviseEvents );

        [propput] HRESULT ClassName (
            [in] LPCWSTR className );

        [propput] HRESULT ImageName (
            [in] LPCWSTR imageName );

        [propput] HRESULT AllowSubstringMatch (
            [in] BOOL allowSubstringMatch );

        [propput] HRESULT CanCheckBaseClass (
            [in] BOOL canCheckBaseClass );

        [propput] HRESULT NeedsAdviseEvents (
            [in] BOOL adviseEvents );

        HRESULT SetWinEventsForAutomationEvent (
            [in] EVENTID eventId,
            [in] PROPERTYID propertyId,
            [in] SAFEARRAY(UINT) winEvents );

        HRESULT GetWinEventsForAutomationEvent (
            [in] EVENTID eventId,
            [in] PROPERTYID propertyId,
            [out, retval] SAFEARRAY(UINT) * winEvents );
    }

    //
    //  IUIAutomationProxyFactoryMapping
    //
    [object, uuid(09e31e18-872d-4873-93d1-1e541ec133fd), pointer_default(unique)]
    interface IUIAutomationProxyFactoryMapping : IUnknown
    {
        [propget] HRESULT Count (
            [out, retval] UINT *count );

        HRESULT GetTable ( 
            [out, retval] SAFEARRAY (IUIAutomationProxyFactoryEntry) * table );

        HRESULT GetEntry (
            [in] UINT index,
            [out, retval] IUIAutomationProxyFactoryEntry **entry );

        HRESULT SetTable (
            [in] SAFEARRAY (IUIAutomationProxyFactoryEntry) factoryList );

        HRESULT InsertEntries (
            [in] UINT before,
            [in] SAFEARRAY (IUIAutomationProxyFactoryEntry) factoryList );

        HRESULT InsertEntry (
            [in] UINT before,
            [in] IUIAutomationProxyFactoryEntry *factory );

        HRESULT RemoveEntry (
            [in] UINT index );

        HRESULT ClearTable ( );

        HRESULT RestoreDefaultTable ( );
    }

    //
    //  IUIAutomationEventHandlerGroup
    //
    [object, uuid(C9EE12F2-C13B-4408-997C-639914377F4E), pointer_default(unique)]
    interface IUIAutomationEventHandlerGroup : IUnknown
    {
        HRESULT AddActiveTextPositionChangedEventHandler(
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest* cacheRequest,
            [in] IUIAutomationActiveTextPositionChangedEventHandler* handler);

        HRESULT AddAutomationEventHandler(
            [in] EVENTID eventId,
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest* cacheRequest,
            [in] IUIAutomationEventHandler* handler);

        HRESULT AddChangesEventHandler(
            [in] enum TreeScope scope,
            [in, size_is(changesCount)] int* changeTypes,
            [in] int changesCount,
            [in] IUIAutomationCacheRequest* cacheRequest,
            [in] IUIAutomationChangesEventHandler* handler);

        HRESULT AddNotificationEventHandler(
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest* cacheRequest,
            [in] IUIAutomationNotificationEventHandler* handler);

        HRESULT AddPropertyChangedEventHandler(
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest* cacheRequest,
            [in] IUIAutomationPropertyChangedEventHandler* handler,
            [in, size_is(propertyCount)] PROPERTYID* propertyArray,
            [in] int propertyCount);

        HRESULT AddStructureChangedEventHandler(
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest* cacheRequest,
            [in] IUIAutomationStructureChangedEventHandler* handler);

        HRESULT AddTextEditTextChangedEventHandler(
            [in] enum TreeScope scope,
            [in] enum TextEditChangeType textEditChangeType,
            [in] IUIAutomationCacheRequest* cacheRequest,
            [in] IUIAutomationTextEditTextChangedEventHandler* handler);
    }

    //
    //  IUIAutomation
    //
    [object, uuid(30cbe57d-d9d0-452a-ab13-7ac5ac4825ee), pointer_default(unique)]
    interface IUIAutomation : IUnknown
    {
        // Comparisons
        HRESULT CompareElements (
            [in] IUIAutomationElement * el1,
            [in] IUIAutomationElement * el2,
            [out, retval] BOOL * areSame );

        HRESULT CompareRuntimeIds (
            [in] SAFEARRAY(int) runtimeId1,
            [in] SAFEARRAY(int) runtimeId2,
            [out, retval] BOOL * areSame);

        // Automation Element fetching
        HRESULT GetRootElement (
            [out, retval] IUIAutomationElement ** root );

        HRESULT ElementFromHandle (
            [in] UIA_HWND hwnd,
            [out, retval] IUIAutomationElement ** element );

        HRESULT ElementFromPoint (
            [in] POINT pt,
            [out, retval] IUIAutomationElement ** element );

        HRESULT GetFocusedElement (
            [out, retval] IUIAutomationElement ** element );

        HRESULT GetRootElementBuildCache (
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** root );

        HRESULT ElementFromHandleBuildCache (
            [in] UIA_HWND hwnd,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** element );

        HRESULT ElementFromPointBuildCache (
            [in] POINT pt,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** element );

        HRESULT GetFocusedElementBuildCache (
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** element );

        // Tree Walker Creation
        HRESULT CreateTreeWalker (
            [in] IUIAutomationCondition * pCondition,
            [out, retval] IUIAutomationTreeWalker ** walker );

        [propget] HRESULT ControlViewWalker (
            [out, retval] IUIAutomationTreeWalker ** walker );

        [propget] HRESULT ContentViewWalker (
            [out, retval] IUIAutomationTreeWalker ** walker );

        [propget] HRESULT RawViewWalker (
            [out, retval] IUIAutomationTreeWalker ** walker );

        [propget] HRESULT RawViewCondition (
            [out, retval] IUIAutomationCondition ** condition );

        [propget] HRESULT ControlViewCondition (
            [out, retval] IUIAutomationCondition ** condition );

        [propget] HRESULT ContentViewCondition (
            [out, retval] IUIAutomationCondition ** condition );


        // Cache Request Creation
        HRESULT CreateCacheRequest (
            [out, retval] IUIAutomationCacheRequest ** cacheRequest );


        // Condition Creation
        HRESULT CreateTrueCondition (
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreateFalseCondition (
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreatePropertyCondition (
            [in] PROPERTYID propertyId,
            [in] VARIANT value,
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreatePropertyConditionEx (
            [in] PROPERTYID propertyId,
            [in] VARIANT value,
            [in] enum PropertyConditionFlags flags,
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreateAndCondition (
            [in] IUIAutomationCondition * condition1,
            [in] IUIAutomationCondition * condition2,
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreateAndConditionFromArray (
            [in] SAFEARRAY(IUIAutomationCondition) conditions,
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreateAndConditionFromNativeArray (
            [in, size_is(conditionCount)] IUIAutomationCondition ** conditions,
            [in] int conditionCount,
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreateOrCondition (
            [in] IUIAutomationCondition * condition1,
            [in] IUIAutomationCondition * condition2,
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreateOrConditionFromArray (
            [in] SAFEARRAY(IUIAutomationCondition) conditions,
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreateOrConditionFromNativeArray (
            [in, size_is(conditionCount)] IUIAutomationCondition ** conditions,
            [in] int conditionCount,
            [out, retval] IUIAutomationCondition ** newCondition );

        HRESULT CreateNotCondition (
            [in] IUIAutomationCondition * condition,
            [out, retval] IUIAutomationCondition ** newCondition );

        // Event Registration and Removal
        HRESULT AddAutomationEventHandler (
            [in] EVENTID eventId,
            [in] IUIAutomationElement * element,
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [in] IUIAutomationEventHandler * handler );

        HRESULT RemoveAutomationEventHandler (
            [in] EVENTID eventId,
            [in] IUIAutomationElement * element,
            [in] IUIAutomationEventHandler * handler );

        HRESULT AddPropertyChangedEventHandlerNativeArray (
            [in] IUIAutomationElement * element,
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [in] IUIAutomationPropertyChangedEventHandler * handler,
            [in, size_is(propertyCount)] PROPERTYID * propertyArray,
            [in] int propertyCount );

        HRESULT AddPropertyChangedEventHandler (
            [in] IUIAutomationElement * element,
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [in] IUIAutomationPropertyChangedEventHandler * handler,
            [in] SAFEARRAY(PROPERTYID) propertyArray );

        HRESULT RemovePropertyChangedEventHandler (
            [in] IUIAutomationElement * element,
            [in] IUIAutomationPropertyChangedEventHandler * handler );

        HRESULT AddStructureChangedEventHandler (
            [in] IUIAutomationElement * element,
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [in] IUIAutomationStructureChangedEventHandler * handler );

        HRESULT RemoveStructureChangedEventHandler (
            [in] IUIAutomationElement * element,
            [in] IUIAutomationStructureChangedEventHandler * handler );

        HRESULT AddFocusChangedEventHandler (
            [in] IUIAutomationCacheRequest * cacheRequest,
            [in] IUIAutomationFocusChangedEventHandler * handler );

        HRESULT RemoveFocusChangedEventHandler (
            [in] IUIAutomationFocusChangedEventHandler * handler );

        HRESULT RemoveAllEventHandlers ( );

        // Conversion helpers
        HRESULT IntNativeArrayToSafeArray (
            [in, size_is(arrayCount)] int * array,
            [in] int arrayCount,
            [out, retval] SAFEARRAY(int) * safeArray );

        HRESULT IntSafeArrayToNativeArray (
            [in] SAFEARRAY(int) intArray,
            [out, size_is( ,*arrayCount)] int ** array,
            [out, retval] int * arrayCount );

        HRESULT RectToVariant (
            [in] RECT rc,
            [out, retval] VARIANT * var );

        HRESULT VariantToRect (
            [in] VARIANT var,
            [out, retval] RECT * rc );

        HRESULT SafeArrayToRectNativeArray (
            [in] SAFEARRAY(double) rects,
            [out, size_is( ,*rectArrayCount)] RECT ** rectArray,
            [out, retval] int * rectArrayCount );

        // Proxy registration
        HRESULT CreateProxyFactoryEntry(
            [in] IUIAutomationProxyFactory *factory,
            [out, retval] IUIAutomationProxyFactoryEntry **factoryEntry );

        [propget] HRESULT ProxyFactoryMapping(
            [out, retval] IUIAutomationProxyFactoryMapping **factoryMapping );

        // Name Lookup
        HRESULT GetPropertyProgrammaticName(
            [in] PROPERTYID property,
            [out, retval] BSTR * name );

        HRESULT GetPatternProgrammaticName(
            [in] PATTERNID pattern,
            [out, retval] BSTR * name );
    
        // Return potentially supported patterns. Note that object may not actually
        // support the pattern when asked for it later.
        HRESULT PollForPotentialSupportedPatterns(
            [in] IUIAutomationElement * pElement,
            [out] SAFEARRAY(int) * patternIds,
            [out] SAFEARRAY(BSTR) * patternNames);

        // Return potentially supported properties. Note that object may not actually
        // support all properties when asked.
        HRESULT PollForPotentialSupportedProperties(
            [in] IUIAutomationElement * pElement,
            [out] SAFEARRAY(int) * propertyIds,
            [out] SAFEARRAY(BSTR) * propertyNames);

        // Check whether this variant (returned from GetPropertyValue) is the NotSupported item.
        HRESULT CheckNotSupported(
            [in] VARIANT value,
            [out, retval] BOOL * isNotSupported);

        // Get the "Not Supported" object
        [propget] HRESULT ReservedNotSupportedValue(
            [out, retval] IUnknown **notSupportedValue);

        // Get the "Mixed Attribute" object
        [propget] HRESULT ReservedMixedAttributeValue(
            [out, retval] IUnknown **mixedAttributeValue);

        // IAccessible interop
        HRESULT ElementFromIAccessible (
            [in] IAccessible * accessible,
            [in] int childId,
            [out, retval] IUIAutomationElement ** element );

        HRESULT ElementFromIAccessibleBuildCache (
            [in] IAccessible * accessible,
            [in] int childId,
            [in] IUIAutomationCacheRequest * cacheRequest,
            [out, retval] IUIAutomationElement ** element );
    }

    //
    //  IUIAutomation2
    //
    [object, uuid(34723aff-0c9d-49d0-9896-7ab52df8cd8a), pointer_default(unique)]
    interface IUIAutomation2 : IUIAutomation
    {
        // Mode to set focus automatically when element methods are called
        [propget] HRESULT AutoSetFocus (
            [out, retval] BOOL * autoSetFocus );

        [propput] HRESULT AutoSetFocus (
            [in] BOOL autoSetFocus );

        // Adjust timeout (in milliseconds) for connecting to an element.
        [propget] HRESULT ConnectionTimeout (
            [out, retval] DWORD * timeout );

        [propput] HRESULT ConnectionTimeout (
            [in] DWORD timeout );

        // Adjust timeout (in milliseconds) for interacting with an element after connecting to it.
        [propget] HRESULT TransactionTimeout (
            [out, retval] DWORD * timeout );

        [propput] HRESULT TransactionTimeout (
            [in] DWORD timeout );
    }

    //
    //  IUIAutomation3
    //
    [object, uuid(73D768DA-9B51-4B89-936E-C209290973E7), pointer_default(unique)]
    interface IUIAutomation3 : IUIAutomation2
    {
        HRESULT AddTextEditTextChangedEventHandler (
            [in] IUIAutomationElement *element,
            [in] enum TreeScope scope,
            [in] enum TextEditChangeType textEditChangeType,
            [in] IUIAutomationCacheRequest *cacheRequest,
            [in] IUIAutomationTextEditTextChangedEventHandler *handler );

        HRESULT RemoveTextEditTextChangedEventHandler (
            [in] IUIAutomationElement *element,
            [in] IUIAutomationTextEditTextChangedEventHandler *handler );
    }

    //
    //  IUIAutomation4
    //
    [object, uuid(1189C02A-05F8-4319-8E21-E817E3DB2860), pointer_default(unique)]
    interface IUIAutomation4 : IUIAutomation3
    {
        HRESULT AddChangesEventHandler(
            [in] IUIAutomationElement *element,
            [in] enum TreeScope scope,
            [in, size_is(changesCount)] int *changeTypes,
            [in] int changesCount,
            [in] IUIAutomationCacheRequest * pCacheRequest,
            [in] IUIAutomationChangesEventHandler *handler);

        HRESULT RemoveChangesEventHandler(
            [in] IUIAutomationElement *element,
            [in] IUIAutomationChangesEventHandler *handler);
    }

    //
    //  IUIAutomation5
    //
    [object, uuid(25F700C8-D816-4057-A9DC-3CBDEE77E256), pointer_default(unique)]
    interface IUIAutomation5 : IUIAutomation4
    {
        HRESULT AddNotificationEventHandler(
            [in] IUIAutomationElement* element,
            [in] enum TreeScope scope,
            [in] IUIAutomationCacheRequest* cacheRequest,
            [in] IUIAutomationNotificationEventHandler* handler);

        HRESULT RemoveNotificationEventHandler(
            [in] IUIAutomationElement* element,
            [in] IUIAutomationNotificationEventHandler* handler);
    }

    //
    //  IUIAutomation6
    //
    [object, uuid(AAE072DA-29E3-413D-87A7-192DBF81ED10), pointer_default(unique)]
    interface IUIAutomation6 : IUIAutomation5
    {
        HRESULT CreateEventHandlerGroup(
            [out] IUIAutomationEventHandlerGroup** handlerGroup);

        HRESULT AddEventHandlerGroup(
            [in] IUIAutomationElement* element,
            [in] IUIAutomationEventHandlerGroup* handlerGroup);

        HRESULT RemoveEventHandlerGroup(
            [in] IUIAutomationElement* element,
            [in] IUIAutomationEventHandlerGroup* handlerGroup);

        [propget] HRESULT ConnectionRecoveryBehavior(
            [out, retval] enum ConnectionRecoveryBehaviorOptions* connectionRecoveryBehaviorOptions);

        [propput] HRESULT ConnectionRecoveryBehavior(
            [in] enum ConnectionRecoveryBehaviorOptions connectionRecoveryBehaviorOptions);

        [propget] HRESULT CoalesceEvents(
            [out, retval] enum CoalesceEventsOptions* coalesceEventsOptions);

        [propput] HRESULT CoalesceEvents(
            [in] enum CoalesceEventsOptions coalesceEventsOptions);

        HRESULT AddActiveTextPositionChangedEventHandler ( 
            [in] IUIAutomationElement* element, 
            [in] enum TreeScope scope, 
            [in] IUIAutomationCacheRequest* cacheRequest, 
            [in] IUIAutomationActiveTextPositionChangedEventHandler* handler); 

        HRESULT RemoveActiveTextPositionChangedEventHandler( 
            [in] IUIAutomationElement* element, 
            [in] IUIAutomationActiveTextPositionChangedEventHandler* handler); 
    }

    //
    //  CUIAutomation
    //
    [
        uuid(ff48dba4-60ef-4201-aa87-54103eef594e),
        version(1.0), 
        helpstring("The Central Class for UIAutomation")
    ]
    coclass CUIAutomation
    {
        [default] interface IUIAutomation;
    }


    //
    //  CUIAutomation8
    //
    //  Using this object provides the same interface
    //  as CUIAutomation, but some control proxy behaviors
    //  may be different.  Use CUIAutomation if you want
    //  Win7-compatible control proxy behavior.
    //
    [
        uuid(e22ad333-b25f-460c-83d0-0581107395c9),
        version(1.0), 
        helpstring("The Central Class for UIAutomation8")
    ]
    coclass CUIAutomation8
    {
        [default] interface IUIAutomation2;
        interface IUIAutomation3;
        interface IUIAutomation4;
        interface IUIAutomation5;
        interface IUIAutomation6;
    }
}

cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")
#pragma endregion

Youez - 2016 - github.com/yon3zu
LinuXploit