winapi_ui_automation/um/
uiautomationclient.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! Mappings for the contents of UIAutomationClient.h
7use ctypes::{c_double, c_int, c_long, c_void};
8use shared::guiddef::REFIID;
9use shared::minwindef::{BOOL, DWORD, UINT};
10use shared::windef::{POINT, RECT};
11use shared::winerror::HRESULT;
12use shared::wtypes::BSTR;
13use um::oaidl::{SAFEARRAY, VARIANT};
14use um::oleacc::IAccessible;
15use um::uiautomationcore::{
16    CONTROLTYPEID, DockPosition, EVENTID, ExpandCollapseState, HEADINGLEVELID,
17    IRawElementProviderSimple, LANDMARKTYPEID, LiveSetting, METADATAID, NavigateDirection,
18    NotificationKind, NotificationProcessing, OrientationType, PATTERNID, PROPERTYID,
19    RowOrColumnMajor, ScrollAmount, StructureChangeType, SupportedTextSelection,
20    SynchronizedInputType, TEXTATTRIBUTEID, TextEditChangeType, TextPatternRangeEndpoint,
21    TextUnit, ToggleState, UiaChangeInfo, WindowInteractionState, WindowVisualState, ZoomUnit
22};
23use um::unknwnbase::{IUnknown, IUnknownVtbl};
24use um::winnt::{LONG, LPCWSTR};
25ENUM!{enum TreeScope {
26    TreeScope_None = 0,
27    TreeScope_Element = 0x1,
28    TreeScope_Children = 0x2,
29    TreeScope_Descendants = 0x4,
30    TreeScope_Parent = 0x8,
31    TreeScope_Ancestors = 0x10,
32    TreeScope_Subtree = (TreeScope_Element | TreeScope_Children) | TreeScope_Descendants,
33}}
34ENUM!{enum PropertyConditionFlags {
35    PropertyConditionFlags_None = 0,
36    PropertyConditionFlags_IgnoreCase = 0x1,
37    PropertyConditionFlags_MatchSubstring = 0x2,
38}}
39ENUM!{enum AutomationElementMode {
40    AutomationElementMode_None = 0,
41    AutomationElementMode_Full = AutomationElementMode_None + 1,
42}}
43ENUM!{enum TreeTraversalOptions {
44    TreeTraversalOptions_Default = 0,
45    TreeTraversalOptions_PostOrder = 0x1,
46    TreeTraversalOptions_LastToFirstOrder = 0x2,
47}}
48ENUM!{enum ConnectionRecoveryBehaviorOptions {
49    ConnectionRecoveryBehaviorOptions_Disabled = 0,
50    ConnectionRecoveryBehaviorOptions_Enabled = 0x1,
51}}
52ENUM!{enum CoalesceEventsOptions {
53    CoalesceEventsOptions_Disabled = 0,
54    CoalesceEventsOptions_Enabled = 0x1,
55}}
56STRUCT!{struct ExtendedProperty {
57    PropertyName: BSTR,
58    PropertyValue: BSTR,
59}}
60pub type UIA_HWND = *mut c_void;
61pub const UIA_InvokePatternId: c_long = 10000;
62pub const UIA_SelectionPatternId: c_long = 10001;
63pub const UIA_ValuePatternId: c_long = 10002;
64pub const UIA_RangeValuePatternId: c_long = 10003;
65pub const UIA_ScrollPatternId: c_long = 10004;
66pub const UIA_ExpandCollapsePatternId: c_long = 10005;
67pub const UIA_GridPatternId: c_long = 10006;
68pub const UIA_GridItemPatternId: c_long = 10007;
69pub const UIA_MultipleViewPatternId: c_long = 10008;
70pub const UIA_WindowPatternId: c_long = 10009;
71pub const UIA_SelectionItemPatternId: c_long = 10010;
72pub const UIA_DockPatternId: c_long = 10011;
73pub const UIA_TablePatternId: c_long = 10012;
74pub const UIA_TableItemPatternId: c_long = 10013;
75pub const UIA_TextPatternId: c_long = 10014;
76pub const UIA_TogglePatternId: c_long = 10015;
77pub const UIA_TransformPatternId: c_long = 10016;
78pub const UIA_ScrollItemPatternId: c_long = 10017;
79pub const UIA_LegacyIAccessiblePatternId: c_long = 10018;
80pub const UIA_ItemContainerPatternId: c_long = 10019;
81pub const UIA_VirtualizedItemPatternId: c_long = 10020;
82pub const UIA_SynchronizedInputPatternId: c_long = 10021;
83pub const UIA_ObjectModelPatternId: c_long = 10022;
84pub const UIA_AnnotationPatternId: c_long = 10023;
85pub const UIA_TextPattern2Id: c_long = 10024;
86pub const UIA_StylesPatternId: c_long = 10025;
87pub const UIA_SpreadsheetPatternId: c_long = 10026;
88pub const UIA_SpreadsheetItemPatternId: c_long = 10027;
89pub const UIA_TransformPattern2Id: c_long = 10028;
90pub const UIA_TextChildPatternId: c_long = 10029;
91pub const UIA_DragPatternId: c_long = 10030;
92pub const UIA_DropTargetPatternId: c_long = 10031;
93pub const UIA_TextEditPatternId: c_long = 10032;
94pub const UIA_CustomNavigationPatternId: c_long = 10033;
95pub const UIA_SelectionPattern2Id: c_long = 10034;
96pub const UIA_ToolTipOpenedEventId: c_long = 20000;
97pub const UIA_ToolTipClosedEventId: c_long = 20001;
98pub const UIA_StructureChangedEventId: c_long = 20002;
99pub const UIA_MenuOpenedEventId: c_long = 20003;
100pub const UIA_AutomationPropertyChangedEventId: c_long = 20004;
101pub const UIA_AutomationFocusChangedEventId: c_long = 20005;
102pub const UIA_AsyncContentLoadedEventId: c_long = 20006;
103pub const UIA_MenuClosedEventId: c_long = 20007;
104pub const UIA_LayoutInvalidatedEventId: c_long = 20008;
105pub const UIA_Invoke_InvokedEventId: c_long = 20009;
106pub const UIA_SelectionItem_ElementAddedToSelectionEventId: c_long = 20010;
107pub const UIA_SelectionItem_ElementRemovedFromSelectionEventId: c_long = 20011;
108pub const UIA_SelectionItem_ElementSelectedEventId: c_long = 20012;
109pub const UIA_Selection_InvalidatedEventId: c_long = 20013;
110pub const UIA_Text_TextSelectionChangedEventId: c_long = 20014;
111pub const UIA_Text_TextChangedEventId: c_long = 20015;
112pub const UIA_Window_WindowOpenedEventId: c_long = 20016;
113pub const UIA_Window_WindowClosedEventId: c_long = 20017;
114pub const UIA_MenuModeStartEventId: c_long = 20018;
115pub const UIA_MenuModeEndEventId: c_long = 20019;
116pub const UIA_InputReachedTargetEventId: c_long = 20020;
117pub const UIA_InputReachedOtherElementEventId: c_long = 20021;
118pub const UIA_InputDiscardedEventId: c_long = 20022;
119pub const UIA_SystemAlertEventId: c_long = 20023;
120pub const UIA_LiveRegionChangedEventId: c_long = 20024;
121pub const UIA_HostedFragmentRootsInvalidatedEventId: c_long = 20025;
122pub const UIA_Drag_DragStartEventId: c_long = 20026;
123pub const UIA_Drag_DragCancelEventId: c_long = 20027;
124pub const UIA_Drag_DragCompleteEventId: c_long = 20028;
125pub const UIA_DropTarget_DragEnterEventId: c_long = 20029;
126pub const UIA_DropTarget_DragLeaveEventId: c_long = 20030;
127pub const UIA_DropTarget_DroppedEventId: c_long = 20031;
128pub const UIA_TextEdit_TextChangedEventId: c_long = 20032;
129pub const UIA_TextEdit_ConversionTargetChangedEventId: c_long = 20033;
130pub const UIA_ChangesEventId: c_long = 20034;
131pub const UIA_NotificationEventId: c_long = 20035;
132pub const UIA_ActiveTextPositionChangedEventId: c_long = 20036;
133pub const UIA_RuntimeIdPropertyId: c_long = 30000;
134pub const UIA_BoundingRectanglePropertyId: c_long = 30001;
135pub const UIA_ProcessIdPropertyId: c_long = 30002;
136pub const UIA_ControlTypePropertyId: c_long = 30003;
137pub const UIA_LocalizedControlTypePropertyId: c_long = 30004;
138pub const UIA_NamePropertyId: c_long = 30005;
139pub const UIA_AcceleratorKeyPropertyId: c_long = 30006;
140pub const UIA_AccessKeyPropertyId: c_long = 30007;
141pub const UIA_HasKeyboardFocusPropertyId: c_long = 30008;
142pub const UIA_IsKeyboardFocusablePropertyId: c_long = 30009;
143pub const UIA_IsEnabledPropertyId: c_long = 30010;
144pub const UIA_AutomationIdPropertyId: c_long = 30011;
145pub const UIA_ClassNamePropertyId: c_long = 30012;
146pub const UIA_HelpTextPropertyId: c_long = 30013;
147pub const UIA_ClickablePointPropertyId: c_long = 30014;
148pub const UIA_CulturePropertyId: c_long = 30015;
149pub const UIA_IsControlElementPropertyId: c_long = 30016;
150pub const UIA_IsContentElementPropertyId: c_long = 30017;
151pub const UIA_LabeledByPropertyId: c_long = 30018;
152pub const UIA_IsPasswordPropertyId: c_long = 30019;
153pub const UIA_NativeWindowHandlePropertyId: c_long = 30020;
154pub const UIA_ItemTypePropertyId: c_long = 30021;
155pub const UIA_IsOffscreenPropertyId: c_long = 30022;
156pub const UIA_OrientationPropertyId: c_long = 30023;
157pub const UIA_FrameworkIdPropertyId: c_long = 30024;
158pub const UIA_IsRequiredForFormPropertyId: c_long = 30025;
159pub const UIA_ItemStatusPropertyId: c_long = 30026;
160pub const UIA_IsDockPatternAvailablePropertyId: c_long = 30027;
161pub const UIA_IsExpandCollapsePatternAvailablePropertyId: c_long = 30028;
162pub const UIA_IsGridItemPatternAvailablePropertyId: c_long = 30029;
163pub const UIA_IsGridPatternAvailablePropertyId: c_long = 30030;
164pub const UIA_IsInvokePatternAvailablePropertyId: c_long = 30031;
165pub const UIA_IsMultipleViewPatternAvailablePropertyId: c_long = 30032;
166pub const UIA_IsRangeValuePatternAvailablePropertyId: c_long = 30033;
167pub const UIA_IsScrollPatternAvailablePropertyId: c_long = 30034;
168pub const UIA_IsScrollItemPatternAvailablePropertyId: c_long = 30035;
169pub const UIA_IsSelectionItemPatternAvailablePropertyId: c_long = 30036;
170pub const UIA_IsSelectionPatternAvailablePropertyId: c_long = 30037;
171pub const UIA_IsTablePatternAvailablePropertyId: c_long = 30038;
172pub const UIA_IsTableItemPatternAvailablePropertyId: c_long = 30039;
173pub const UIA_IsTextPatternAvailablePropertyId: c_long = 30040;
174pub const UIA_IsTogglePatternAvailablePropertyId: c_long = 30041;
175pub const UIA_IsTransformPatternAvailablePropertyId: c_long = 30042;
176pub const UIA_IsValuePatternAvailablePropertyId: c_long = 30043;
177pub const UIA_IsWindowPatternAvailablePropertyId: c_long = 30044;
178pub const UIA_ValueValuePropertyId: c_long = 30045;
179pub const UIA_ValueIsReadOnlyPropertyId: c_long = 30046;
180pub const UIA_RangeValueValuePropertyId: c_long = 30047;
181pub const UIA_RangeValueIsReadOnlyPropertyId: c_long = 30048;
182pub const UIA_RangeValueMinimumPropertyId: c_long = 30049;
183pub const UIA_RangeValueMaximumPropertyId: c_long = 30050;
184pub const UIA_RangeValueLargeChangePropertyId: c_long = 30051;
185pub const UIA_RangeValueSmallChangePropertyId: c_long = 30052;
186pub const UIA_ScrollHorizontalScrollPercentPropertyId: c_long = 30053;
187pub const UIA_ScrollHorizontalViewSizePropertyId: c_long = 30054;
188pub const UIA_ScrollVerticalScrollPercentPropertyId: c_long = 30055;
189pub const UIA_ScrollVerticalViewSizePropertyId: c_long = 30056;
190pub const UIA_ScrollHorizontallyScrollablePropertyId: c_long = 30057;
191pub const UIA_ScrollVerticallyScrollablePropertyId: c_long = 30058;
192pub const UIA_SelectionSelectionPropertyId: c_long = 30059;
193pub const UIA_SelectionCanSelectMultiplePropertyId: c_long = 30060;
194pub const UIA_SelectionIsSelectionRequiredPropertyId: c_long = 30061;
195pub const UIA_GridRowCountPropertyId: c_long = 30062;
196pub const UIA_GridColumnCountPropertyId: c_long = 30063;
197pub const UIA_GridItemRowPropertyId: c_long = 30064;
198pub const UIA_GridItemColumnPropertyId: c_long = 30065;
199pub const UIA_GridItemRowSpanPropertyId: c_long = 30066;
200pub const UIA_GridItemColumnSpanPropertyId: c_long = 30067;
201pub const UIA_GridItemContainingGridPropertyId: c_long = 30068;
202pub const UIA_DockDockPositionPropertyId: c_long = 30069;
203pub const UIA_ExpandCollapseExpandCollapseStatePropertyId: c_long = 30070;
204pub const UIA_MultipleViewCurrentViewPropertyId: c_long = 30071;
205pub const UIA_MultipleViewSupportedViewsPropertyId: c_long = 30072;
206pub const UIA_WindowCanMaximizePropertyId: c_long = 30073;
207pub const UIA_WindowCanMinimizePropertyId: c_long = 30074;
208pub const UIA_WindowWindowVisualStatePropertyId: c_long = 30075;
209pub const UIA_WindowWindowInteractionStatePropertyId: c_long = 30076;
210pub const UIA_WindowIsModalPropertyId: c_long = 30077;
211pub const UIA_WindowIsTopmostPropertyId: c_long = 30078;
212pub const UIA_SelectionItemIsSelectedPropertyId: c_long = 30079;
213pub const UIA_SelectionItemSelectionContainerPropertyId: c_long = 30080;
214pub const UIA_TableRowHeadersPropertyId: c_long = 30081;
215pub const UIA_TableColumnHeadersPropertyId: c_long = 30082;
216pub const UIA_TableRowOrColumnMajorPropertyId: c_long = 30083;
217pub const UIA_TableItemRowHeaderItemsPropertyId: c_long = 30084;
218pub const UIA_TableItemColumnHeaderItemsPropertyId: c_long = 30085;
219pub const UIA_ToggleToggleStatePropertyId: c_long = 30086;
220pub const UIA_TransformCanMovePropertyId: c_long = 30087;
221pub const UIA_TransformCanResizePropertyId: c_long = 30088;
222pub const UIA_TransformCanRotatePropertyId: c_long = 30089;
223pub const UIA_IsLegacyIAccessiblePatternAvailablePropertyId: c_long = 30090;
224pub const UIA_LegacyIAccessibleChildIdPropertyId: c_long = 30091;
225pub const UIA_LegacyIAccessibleNamePropertyId: c_long = 30092;
226pub const UIA_LegacyIAccessibleValuePropertyId: c_long = 30093;
227pub const UIA_LegacyIAccessibleDescriptionPropertyId: c_long = 30094;
228pub const UIA_LegacyIAccessibleRolePropertyId: c_long = 30095;
229pub const UIA_LegacyIAccessibleStatePropertyId: c_long = 30096;
230pub const UIA_LegacyIAccessibleHelpPropertyId: c_long = 30097;
231pub const UIA_LegacyIAccessibleKeyboardShortcutPropertyId: c_long = 30098;
232pub const UIA_LegacyIAccessibleSelectionPropertyId: c_long = 30099;
233pub const UIA_LegacyIAccessibleDefaultActionPropertyId: c_long = 30100;
234pub const UIA_AriaRolePropertyId: c_long = 30101;
235pub const UIA_AriaPropertiesPropertyId: c_long = 30102;
236pub const UIA_IsDataValidForFormPropertyId: c_long = 30103;
237pub const UIA_ControllerForPropertyId: c_long = 30104;
238pub const UIA_DescribedByPropertyId: c_long = 30105;
239pub const UIA_FlowsToPropertyId: c_long = 30106;
240pub const UIA_ProviderDescriptionPropertyId: c_long = 30107;
241pub const UIA_IsItemContainerPatternAvailablePropertyId: c_long = 30108;
242pub const UIA_IsVirtualizedItemPatternAvailablePropertyId: c_long = 30109;
243pub const UIA_IsSynchronizedInputPatternAvailablePropertyId: c_long = 30110;
244pub const UIA_OptimizeForVisualContentPropertyId: c_long = 30111;
245pub const UIA_IsObjectModelPatternAvailablePropertyId: c_long = 30112;
246pub const UIA_AnnotationAnnotationTypeIdPropertyId: c_long = 30113;
247pub const UIA_AnnotationAnnotationTypeNamePropertyId: c_long = 30114;
248pub const UIA_AnnotationAuthorPropertyId: c_long = 30115;
249pub const UIA_AnnotationDateTimePropertyId: c_long = 30116;
250pub const UIA_AnnotationTargetPropertyId: c_long = 30117;
251pub const UIA_IsAnnotationPatternAvailablePropertyId: c_long = 30118;
252pub const UIA_IsTextPattern2AvailablePropertyId: c_long = 30119;
253pub const UIA_StylesStyleIdPropertyId: c_long = 30120;
254pub const UIA_StylesStyleNamePropertyId: c_long = 30121;
255pub const UIA_StylesFillColorPropertyId: c_long = 30122;
256pub const UIA_StylesFillPatternStylePropertyId: c_long = 30123;
257pub const UIA_StylesShapePropertyId: c_long = 30124;
258pub const UIA_StylesFillPatternColorPropertyId: c_long = 30125;
259pub const UIA_StylesExtendedPropertiesPropertyId: c_long = 30126;
260pub const UIA_IsStylesPatternAvailablePropertyId: c_long = 30127;
261pub const UIA_IsSpreadsheetPatternAvailablePropertyId: c_long = 30128;
262pub const UIA_SpreadsheetItemFormulaPropertyId: c_long = 30129;
263pub const UIA_SpreadsheetItemAnnotationObjectsPropertyId: c_long = 30130;
264pub const UIA_SpreadsheetItemAnnotationTypesPropertyId: c_long = 30131;
265pub const UIA_IsSpreadsheetItemPatternAvailablePropertyId: c_long = 30132;
266pub const UIA_Transform2CanZoomPropertyId: c_long = 30133;
267pub const UIA_IsTransformPattern2AvailablePropertyId: c_long = 30134;
268pub const UIA_LiveSettingPropertyId: c_long = 30135;
269pub const UIA_IsTextChildPatternAvailablePropertyId: c_long = 30136;
270pub const UIA_IsDragPatternAvailablePropertyId: c_long = 30137;
271pub const UIA_DragIsGrabbedPropertyId: c_long = 30138;
272pub const UIA_DragDropEffectPropertyId: c_long = 30139;
273pub const UIA_DragDropEffectsPropertyId: c_long = 30140;
274pub const UIA_IsDropTargetPatternAvailablePropertyId: c_long = 30141;
275pub const UIA_DropTargetDropTargetEffectPropertyId: c_long = 30142;
276pub const UIA_DropTargetDropTargetEffectsPropertyId: c_long = 30143;
277pub const UIA_DragGrabbedItemsPropertyId: c_long = 30144;
278pub const UIA_Transform2ZoomLevelPropertyId: c_long = 30145;
279pub const UIA_Transform2ZoomMinimumPropertyId: c_long = 30146;
280pub const UIA_Transform2ZoomMaximumPropertyId: c_long = 30147;
281pub const UIA_FlowsFromPropertyId: c_long = 30148;
282pub const UIA_IsTextEditPatternAvailablePropertyId: c_long = 30149;
283pub const UIA_IsPeripheralPropertyId: c_long = 30150;
284pub const UIA_IsCustomNavigationPatternAvailablePropertyId: c_long = 30151;
285pub const UIA_PositionInSetPropertyId: c_long = 30152;
286pub const UIA_SizeOfSetPropertyId: c_long = 30153;
287pub const UIA_LevelPropertyId: c_long = 30154;
288pub const UIA_AnnotationTypesPropertyId: c_long = 30155;
289pub const UIA_AnnotationObjectsPropertyId: c_long = 30156;
290pub const UIA_LandmarkTypePropertyId: c_long = 30157;
291pub const UIA_LocalizedLandmarkTypePropertyId: c_long = 30158;
292pub const UIA_FullDescriptionPropertyId: c_long = 30159;
293pub const UIA_FillColorPropertyId: c_long = 30160;
294pub const UIA_OutlineColorPropertyId: c_long = 30161;
295pub const UIA_FillTypePropertyId: c_long = 30162;
296pub const UIA_VisualEffectsPropertyId: c_long = 30163;
297pub const UIA_OutlineThicknessPropertyId: c_long = 30164;
298pub const UIA_CenterPointPropertyId: c_long = 30165;
299pub const UIA_RotationPropertyId: c_long = 30166;
300pub const UIA_SizePropertyId: c_long = 30167;
301pub const UIA_IsSelectionPattern2AvailablePropertyId: c_long = 30168;
302pub const UIA_Selection2FirstSelectedItemPropertyId: c_long = 30169;
303pub const UIA_Selection2LastSelectedItemPropertyId: c_long = 30170;
304pub const UIA_Selection2CurrentSelectedItemPropertyId: c_long = 30171;
305pub const UIA_Selection2ItemCountPropertyId: c_long = 30172;
306pub const UIA_HeadingLevelPropertyId: c_long = 30173;
307pub const UIA_IsDialogPropertyId: c_long = 30174;
308pub const UIA_AnimationStyleAttributeId: c_long = 40000;
309pub const UIA_BackgroundColorAttributeId: c_long = 40001;
310pub const UIA_BulletStyleAttributeId: c_long = 40002;
311pub const UIA_CapStyleAttributeId: c_long = 40003;
312pub const UIA_CultureAttributeId: c_long = 40004;
313pub const UIA_FontNameAttributeId: c_long = 40005;
314pub const UIA_FontSizeAttributeId: c_long = 40006;
315pub const UIA_FontWeightAttributeId: c_long = 40007;
316pub const UIA_ForegroundColorAttributeId: c_long = 40008;
317pub const UIA_HorizontalTextAlignmentAttributeId: c_long = 40009;
318pub const UIA_IndentationFirstLineAttributeId: c_long = 40010;
319pub const UIA_IndentationLeadingAttributeId: c_long = 40011;
320pub const UIA_IndentationTrailingAttributeId: c_long = 40012;
321pub const UIA_IsHiddenAttributeId: c_long = 40013;
322pub const UIA_IsItalicAttributeId: c_long = 40014;
323pub const UIA_IsReadOnlyAttributeId: c_long = 40015;
324pub const UIA_IsSubscriptAttributeId: c_long = 40016;
325pub const UIA_IsSuperscriptAttributeId: c_long = 40017;
326pub const UIA_MarginBottomAttributeId: c_long = 40018;
327pub const UIA_MarginLeadingAttributeId: c_long = 40019;
328pub const UIA_MarginTopAttributeId: c_long = 40020;
329pub const UIA_MarginTrailingAttributeId: c_long = 40021;
330pub const UIA_OutlineStylesAttributeId: c_long = 40022;
331pub const UIA_OverlineColorAttributeId: c_long = 40023;
332pub const UIA_OverlineStyleAttributeId: c_long = 40024;
333pub const UIA_StrikethroughColorAttributeId: c_long = 40025;
334pub const UIA_StrikethroughStyleAttributeId: c_long = 40026;
335pub const UIA_TabsAttributeId: c_long = 40027;
336pub const UIA_TextFlowDirectionsAttributeId: c_long = 40028;
337pub const UIA_UnderlineColorAttributeId: c_long = 40029;
338pub const UIA_UnderlineStyleAttributeId: c_long = 40030;
339pub const UIA_AnnotationTypesAttributeId: c_long = 40031;
340pub const UIA_AnnotationObjectsAttributeId: c_long = 40032;
341pub const UIA_StyleNameAttributeId: c_long = 40033;
342pub const UIA_StyleIdAttributeId: c_long = 40034;
343pub const UIA_LinkAttributeId: c_long = 40035;
344pub const UIA_IsActiveAttributeId: c_long = 40036;
345pub const UIA_SelectionActiveEndAttributeId: c_long = 40037;
346pub const UIA_CaretPositionAttributeId: c_long = 40038;
347pub const UIA_CaretBidiModeAttributeId: c_long = 40039;
348pub const UIA_LineSpacingAttributeId: c_long = 40040;
349pub const UIA_BeforeParagraphSpacingAttributeId: c_long = 40041;
350pub const UIA_AfterParagraphSpacingAttributeId: c_long = 40042;
351pub const UIA_SayAsInterpretAsAttributeId: c_long = 40043;
352pub const UIA_ButtonControlTypeId: c_long = 50000;
353pub const UIA_CalendarControlTypeId: c_long = 50001;
354pub const UIA_CheckBoxControlTypeId: c_long = 50002;
355pub const UIA_ComboBoxControlTypeId: c_long = 50003;
356pub const UIA_EditControlTypeId: c_long = 50004;
357pub const UIA_HyperlinkControlTypeId: c_long = 50005;
358pub const UIA_ImageControlTypeId: c_long = 50006;
359pub const UIA_ListItemControlTypeId: c_long = 50007;
360pub const UIA_ListControlTypeId: c_long = 50008;
361pub const UIA_MenuControlTypeId: c_long = 50009;
362pub const UIA_MenuBarControlTypeId: c_long = 50010;
363pub const UIA_MenuItemControlTypeId: c_long = 50011;
364pub const UIA_ProgressBarControlTypeId: c_long = 50012;
365pub const UIA_RadioButtonControlTypeId: c_long = 50013;
366pub const UIA_ScrollBarControlTypeId: c_long = 50014;
367pub const UIA_SliderControlTypeId: c_long = 50015;
368pub const UIA_SpinnerControlTypeId: c_long = 50016;
369pub const UIA_StatusBarControlTypeId: c_long = 50017;
370pub const UIA_TabControlTypeId: c_long = 50018;
371pub const UIA_TabItemControlTypeId: c_long = 50019;
372pub const UIA_TextControlTypeId: c_long = 50020;
373pub const UIA_ToolBarControlTypeId: c_long = 50021;
374pub const UIA_ToolTipControlTypeId: c_long = 50022;
375pub const UIA_TreeControlTypeId: c_long = 50023;
376pub const UIA_TreeItemControlTypeId: c_long = 50024;
377pub const UIA_CustomControlTypeId: c_long = 50025;
378pub const UIA_GroupControlTypeId: c_long = 50026;
379pub const UIA_ThumbControlTypeId: c_long = 50027;
380pub const UIA_DataGridControlTypeId: c_long = 50028;
381pub const UIA_DataItemControlTypeId: c_long = 50029;
382pub const UIA_DocumentControlTypeId: c_long = 50030;
383pub const UIA_SplitButtonControlTypeId: c_long = 50031;
384pub const UIA_WindowControlTypeId: c_long = 50032;
385pub const UIA_PaneControlTypeId: c_long = 50033;
386pub const UIA_HeaderControlTypeId: c_long = 50034;
387pub const UIA_HeaderItemControlTypeId: c_long = 50035;
388pub const UIA_TableControlTypeId: c_long = 50036;
389pub const UIA_TitleBarControlTypeId: c_long = 50037;
390pub const UIA_SeparatorControlTypeId: c_long = 50038;
391pub const UIA_SemanticZoomControlTypeId: c_long = 50039;
392pub const UIA_AppBarControlTypeId: c_long = 50040;
393pub const AnnotationType_Unknown: c_long = 60000;
394pub const AnnotationType_SpellingError: c_long = 60001;
395pub const AnnotationType_GrammarError: c_long = 60002;
396pub const AnnotationType_Comment: c_long = 60003;
397pub const AnnotationType_FormulaError: c_long = 60004;
398pub const AnnotationType_TrackChanges: c_long = 60005;
399pub const AnnotationType_Header: c_long = 60006;
400pub const AnnotationType_Footer: c_long = 60007;
401pub const AnnotationType_Highlighted: c_long = 60008;
402pub const AnnotationType_Endnote: c_long = 60009;
403pub const AnnotationType_Footnote: c_long = 60010;
404pub const AnnotationType_InsertionChange: c_long = 60011;
405pub const AnnotationType_DeletionChange: c_long = 60012;
406pub const AnnotationType_MoveChange: c_long = 60013;
407pub const AnnotationType_FormatChange: c_long = 60014;
408pub const AnnotationType_UnsyncedChange: c_long = 60015;
409pub const AnnotationType_EditingLockedChange: c_long = 60016;
410pub const AnnotationType_ExternalChange: c_long = 60017;
411pub const AnnotationType_ConflictingChange: c_long = 60018;
412pub const AnnotationType_Author: c_long = 60019;
413pub const AnnotationType_AdvancedProofingIssue: c_long = 60020;
414pub const AnnotationType_DataValidationError: c_long = 60021;
415pub const AnnotationType_CircularReferenceError: c_long = 60022;
416pub const AnnotationType_Mathematics: c_long = 60023;
417pub const AnnotationType_Sensitive: c_long = 60024;
418pub const StyleId_Custom: c_long = 70000;
419pub const StyleId_Heading1: c_long = 70001;
420pub const StyleId_Heading2: c_long = 70002;
421pub const StyleId_Heading3: c_long = 70003;
422pub const StyleId_Heading4: c_long = 70004;
423pub const StyleId_Heading5: c_long = 70005;
424pub const StyleId_Heading6: c_long = 70006;
425pub const StyleId_Heading7: c_long = 70007;
426pub const StyleId_Heading8: c_long = 70008;
427pub const StyleId_Heading9: c_long = 70009;
428pub const StyleId_Title: c_long = 70010;
429pub const StyleId_Subtitle: c_long = 70011;
430pub const StyleId_Normal: c_long = 70012;
431pub const StyleId_Emphasis: c_long = 70013;
432pub const StyleId_Quote: c_long = 70014;
433pub const StyleId_BulletedList: c_long = 70015;
434pub const StyleId_NumberedList: c_long = 70016;
435pub const UIA_CustomLandmarkTypeId: c_long = 80000;
436pub const UIA_FormLandmarkTypeId: c_long = 80001;
437pub const UIA_MainLandmarkTypeId: c_long = 80002;
438pub const UIA_NavigationLandmarkTypeId: c_long = 80003;
439pub const UIA_SearchLandmarkTypeId: c_long = 80004;
440pub const HeadingLevel_None: c_long = 80050;
441pub const HeadingLevel1: c_long = 80051;
442pub const HeadingLevel2: c_long = 80052;
443pub const HeadingLevel3: c_long = 80053;
444pub const HeadingLevel4: c_long = 80054;
445pub const HeadingLevel5: c_long = 80055;
446pub const HeadingLevel6: c_long = 80056;
447pub const HeadingLevel7: c_long = 80057;
448pub const HeadingLevel8: c_long = 80058;
449pub const HeadingLevel9: c_long = 80059;
450pub const UIA_SummaryChangeId: c_long = 90000;
451pub const UIA_SayAsInterpretAsMetadataId: c_long = 100000;
452RIDL!{#[uuid(0xd22108aa, 0x8ac5, 0x49a5, 0x83, 0x7b, 0x37, 0xbb, 0xb3, 0xd7, 0x59, 0x1e)]
453interface IUIAutomationElement(IUIAutomationElementVtbl): IUnknown(IUnknownVtbl) {
454    fn SetFocus() -> HRESULT,
455    fn GetRuntimeId(
456        runtimeId: *mut *mut SAFEARRAY,
457    ) -> HRESULT,
458    fn FindFirst(
459        scope: TreeScope,
460        condition: *mut IUIAutomationCondition,
461        found: *mut *mut IUIAutomationElement,
462    ) -> HRESULT,
463    fn FindAll(
464        scope: TreeScope,
465        condition: *mut IUIAutomationCondition,
466        found: *mut *mut IUIAutomationElementArray,
467    ) -> HRESULT,
468    fn FindFirstBuildCache(
469        scope: TreeScope,
470        condition: *mut IUIAutomationCondition,
471        cacheRequest: *mut IUIAutomationCacheRequest,
472        found: *mut *mut IUIAutomationElement,
473    ) -> HRESULT,
474    fn FindAllBuildCache(
475        scope: TreeScope,
476        condition: *mut IUIAutomationCondition,
477        cacheRequest: *mut IUIAutomationCacheRequest,
478        found: *mut *mut IUIAutomationElementArray,
479    ) -> HRESULT,
480    fn BuildUpdatedCache(
481        cacheRequest: *mut IUIAutomationCacheRequest,
482        updatedElement: *mut *mut IUIAutomationElement,
483    ) -> HRESULT,
484    fn GetCurrentPropertyValue(
485        propertyId: PROPERTYID,
486        retVal: *mut VARIANT,
487    ) -> HRESULT,
488    fn GetCurrentPropertyValueEx(
489        propertyId: PROPERTYID,
490        ignoreDefaultValue: BOOL,
491        retVal: *mut VARIANT,
492    ) -> HRESULT,
493    fn GetCachedPropertyValue(
494        propertyId: PROPERTYID,
495        retVal: *mut VARIANT,
496    ) -> HRESULT,
497    fn GetCachedPropertyValueEx(
498        propertyId: PROPERTYID,
499        ignoreDefaultValue: BOOL,
500        retVal: *mut VARIANT,
501    ) -> HRESULT,
502    fn GetCurrentPatternAs(
503        patternId: PATTERNID,
504        riid: REFIID,
505        patternObject: *mut *mut c_void,
506    ) -> HRESULT,
507    fn GetCachedPatternAs(
508        patternId: PATTERNID,
509        riid: REFIID,
510        patternObject: *mut *mut c_void,
511    ) -> HRESULT,
512    fn GetCurrentPattern(
513        patternId: PATTERNID,
514        patternObject: *mut *mut IUnknown,
515    ) -> HRESULT,
516    fn GetCachedPattern(
517        patternId: PATTERNID,
518        patternObject: *mut *mut IUnknown,
519    ) -> HRESULT,
520    fn GetCachedParent(
521        parent: *mut *mut IUIAutomationElement,
522    ) -> HRESULT,
523    fn GetCachedChildren(
524        children: *mut *mut IUIAutomationElementArray,
525    ) -> HRESULT,
526    fn get_CurrentProcessId(
527        retVal: *mut c_int,
528    ) -> HRESULT,
529    fn get_CurrentControlType(
530        retVal: *mut CONTROLTYPEID,
531    ) -> HRESULT,
532    fn get_CurrentLocalizedControlType(
533        retVal: *mut BSTR,
534    ) -> HRESULT,
535    fn get_CurrentName(
536        retVal: *mut BSTR,
537    ) -> HRESULT,
538    fn get_CurrentAcceleratorKey(
539        retVal: *mut BSTR,
540    ) -> HRESULT,
541    fn get_CurrentAccessKey(
542        retVal: *mut BSTR,
543    ) -> HRESULT,
544    fn get_CurrentHasKeyboardFocus(
545        retVal: *mut BOOL,
546    ) -> HRESULT,
547    fn get_CurrentIsKeyboardFocusable(
548        retVal: *mut BOOL,
549    ) -> HRESULT,
550    fn get_CurrentIsEnabled(
551        retVal: *mut BOOL,
552    ) -> HRESULT,
553    fn get_CurrentAutomationId(
554        retVal: *mut BSTR,
555    ) -> HRESULT,
556    fn get_CurrentClassName(
557        retVal: *mut BSTR,
558    ) -> HRESULT,
559    fn get_CurrentHelpText(
560        retVal: *mut BSTR,
561    ) -> HRESULT,
562    fn get_CurrentCulture(
563        retVal: *mut c_int,
564    ) -> HRESULT,
565    fn get_CurrentIsControlElement(
566        retVal: *mut BOOL,
567    ) -> HRESULT,
568    fn get_CurrentIsContentElement(
569        retVal: *mut BOOL,
570    ) -> HRESULT,
571    fn get_CurrentIsPassword(
572        retVal: *mut BOOL,
573    ) -> HRESULT,
574    fn get_CurrentNativeWindowHandle(
575        retVal: *mut UIA_HWND,
576    ) -> HRESULT,
577    fn get_CurrentItemType(
578        retVal: *mut BSTR,
579    ) -> HRESULT,
580    fn get_CurrentIsOffscreen(
581        retVal: *mut BOOL,
582    ) -> HRESULT,
583    fn get_CurrentOrientation(
584        retVal: *mut OrientationType,
585    ) -> HRESULT,
586    fn get_CurrentFrameworkId(
587        retVal: *mut BSTR,
588    ) -> HRESULT,
589    fn get_CurrentIsRequiredForForm(
590        retVal: *mut BOOL,
591    ) -> HRESULT,
592    fn get_CurrentItemStatus(
593        retVal: *mut BSTR,
594    ) -> HRESULT,
595    fn get_CurrentBoundingRectangle(
596        retVal: *mut RECT,
597    ) -> HRESULT,
598    fn get_CurrentLabeledBy(
599        retVal: *mut *mut IUIAutomationElement,
600    ) -> HRESULT,
601    fn get_CurrentAriaRole(
602        retVal: *mut BSTR,
603    ) -> HRESULT,
604    fn get_CurrentAriaProperties(
605        retVal: *mut BSTR,
606    ) -> HRESULT,
607    fn get_CurrentIsDataValidForForm(
608        retVal: *mut BOOL,
609    ) -> HRESULT,
610    fn get_CurrentControllerFor(
611        retVal: *mut *mut IUIAutomationElementArray,
612    ) -> HRESULT,
613    fn get_CurrentDescribedBy(
614        retVal: *mut *mut IUIAutomationElementArray,
615    ) -> HRESULT,
616    fn get_CurrentFlowsTo(
617        retVal: *mut *mut IUIAutomationElementArray,
618    ) -> HRESULT,
619    fn get_CurrentProviderDescription(
620        retVal: *mut BSTR,
621    ) -> HRESULT,
622    fn get_CachedProcessId(
623        retVal: *mut c_int,
624    ) -> HRESULT,
625    fn get_CachedControlType(
626        retVal: *mut CONTROLTYPEID,
627    ) -> HRESULT,
628    fn get_CachedLocalizedControlType(
629        retVal: *mut BSTR,
630    ) -> HRESULT,
631    fn get_CachedName(
632        retVal: *mut BSTR,
633    ) -> HRESULT,
634    fn get_CachedAcceleratorKey(
635        retVal: *mut BSTR,
636    ) -> HRESULT,
637    fn get_CachedAccessKey(
638        retVal: *mut BSTR,
639    ) -> HRESULT,
640    fn get_CachedHasKeyboardFocus(
641        retVal: *mut BOOL,
642    ) -> HRESULT,
643    fn get_CachedIsKeyboardFocusable(
644        retVal: *mut BOOL,
645    ) -> HRESULT,
646    fn get_CachedIsEnabled(
647        retVal: *mut BOOL,
648    ) -> HRESULT,
649    fn get_CachedAutomationId(
650        retVal: *mut BSTR,
651    ) -> HRESULT,
652    fn get_CachedClassName(
653        retVal: *mut BSTR,
654    ) -> HRESULT,
655    fn get_CachedHelpText(
656        retVal: *mut BSTR,
657    ) -> HRESULT,
658    fn get_CachedCulture(
659        retVal: *mut c_int,
660    ) -> HRESULT,
661    fn get_CachedIsControlElement(
662        retVal: *mut BOOL,
663    ) -> HRESULT,
664    fn get_CachedIsContentElement(
665        retVal: *mut BOOL,
666    ) -> HRESULT,
667    fn get_CachedIsPassword(
668        retVal: *mut BOOL,
669    ) -> HRESULT,
670    fn get_CachedNativeWindowHandle(
671        retVal: *mut UIA_HWND,
672    ) -> HRESULT,
673    fn get_CachedItemType(
674        retVal: *mut BSTR,
675    ) -> HRESULT,
676    fn get_CachedIsOffscreen(
677        retVal: *mut BOOL,
678    ) -> HRESULT,
679    fn get_CachedOrientation(
680        retVal: *mut OrientationType,
681    ) -> HRESULT,
682    fn get_CachedFrameworkId(
683        retVal: *mut BSTR,
684    ) -> HRESULT,
685    fn get_CachedIsRequiredForForm(
686        retVal: *mut BOOL,
687    ) -> HRESULT,
688    fn get_CachedItemStatus(
689        retVal: *mut BSTR,
690    ) -> HRESULT,
691    fn get_CachedBoundingRectangle(
692        retVal: *mut RECT,
693    ) -> HRESULT,
694    fn get_CachedLabeledBy(
695        retVal: *mut *mut IUIAutomationElement,
696    ) -> HRESULT,
697    fn get_CachedAriaRole(
698        retVal: *mut BSTR,
699    ) -> HRESULT,
700    fn get_CachedAriaProperties(
701        retVal: *mut BSTR,
702    ) -> HRESULT,
703    fn get_CachedIsDataValidForForm(
704        retVal: *mut BOOL,
705    ) -> HRESULT,
706    fn get_CachedControllerFor(
707        retVal: *mut *mut IUIAutomationElementArray,
708    ) -> HRESULT,
709    fn get_CachedDescribedBy(
710        retVal: *mut *mut IUIAutomationElementArray,
711    ) -> HRESULT,
712    fn get_CachedFlowsTo(
713        retVal: *mut *mut IUIAutomationElementArray,
714    ) -> HRESULT,
715    fn get_CachedProviderDescription(
716        retVal: *mut BSTR,
717    ) -> HRESULT,
718    fn GetClickablePoint(
719        clickable: *mut POINT,
720        gotClickable: *mut BOOL,
721    ) -> HRESULT,
722}}
723RIDL!{#[uuid(0x14314595, 0xb4bc, 0x4055, 0x95, 0xf2, 0x58, 0xf2, 0xe4, 0x2c, 0x98, 0x55)]
724interface IUIAutomationElementArray(IUIAutomationElementArrayVtbl): IUnknown(IUnknownVtbl) {
725    fn get_Length(
726        length: *mut c_int,
727    ) -> HRESULT,
728    fn GetElement(
729        index: c_int,
730        element: *mut *mut IUIAutomationElement,
731    ) -> HRESULT,
732}}
733RIDL!{#[uuid(0x352ffba8, 0x0973, 0x437c, 0xa6, 0x1f, 0xf6, 0x4c, 0xaf, 0xd8, 0x1d, 0xf9)]
734interface IUIAutomationCondition(IUIAutomationConditionVtbl): IUnknown(IUnknownVtbl) {}}
735RIDL!{#[uuid(0x1b4e1f2e, 0x75eb, 0x4d0b, 0x89, 0x52, 0x5a, 0x69, 0x98, 0x8e, 0x23, 0x07)]
736interface IUIAutomationBoolCondition(IUIAutomationBoolConditionVtbl):
737        IUIAutomationCondition(IUIAutomationConditionVtbl) {
738    fn get_BooleanValue(
739        boolVal: *mut BOOL,
740    ) -> HRESULT,
741}}
742RIDL!{#[uuid(0x99ebf2cb, 0x5578, 0x4267, 0x9a, 0xd4, 0xaf, 0xd6, 0xea, 0x77, 0xe9, 0x4b)]
743interface IUIAutomationPropertyCondition(IUIAutomationPropertyConditionVtbl):
744        IUIAutomationCondition(IUIAutomationConditionVtbl) {
745    fn get_PropertyId(
746        propertyId: *mut PROPERTYID,
747    ) -> HRESULT,
748    fn get_PropertyValue(
749        propertyValue: *mut VARIANT,
750    ) -> HRESULT,
751    fn get_PropertyConditionFlags(
752        flags: *mut PropertyConditionFlags,
753    ) -> HRESULT,
754}}
755RIDL!{#[uuid(0xa7d0af36, 0xb912, 0x45fe, 0x98, 0x55, 0x09, 0x1d, 0xdc, 0x17, 0x4a, 0xec)]
756interface IUIAutomationAndCondition(IUIAutomationAndConditionVtbl):
757        IUIAutomationCondition(IUIAutomationConditionVtbl) {
758    fn get_ChildCount(
759        childCount: *mut c_int,
760    ) -> HRESULT,
761    fn GetChildrenAsNativeArray(
762        childArray: *mut *mut *mut IUIAutomationCondition,
763        childArrayCount: *mut c_int,
764    ) -> HRESULT,
765    fn GetChildren(
766        childArray: *mut *mut SAFEARRAY,
767    ) -> HRESULT,
768}}
769RIDL!{#[uuid(0x8753f032, 0x3db1, 0x47b5, 0xa1, 0xfc, 0x6e, 0x34, 0xa2, 0x66, 0xc7, 0x12)]
770interface IUIAutomationOrCondition(IUIAutomationOrConditionVtbl):
771        IUIAutomationCondition(IUIAutomationConditionVtbl) {
772    fn get_ChildCount(
773        childCount: *mut c_int,
774    ) -> HRESULT,
775    fn GetChildrenAsNativeArray(
776        childArray: *mut *mut *mut IUIAutomationCondition,
777        childArrayCount: *mut c_int,
778    ) -> HRESULT,
779    fn GetChildren(
780        childArray: *mut *mut SAFEARRAY,
781    ) -> HRESULT,
782}}
783RIDL!{#[uuid(0xf528b657, 0x847b, 0x498c, 0x88, 0x96, 0xd5, 0x2b, 0x56, 0x54, 0x07, 0xa1)]
784interface IUIAutomationNotCondition(IUIAutomationNotConditionVtbl):
785        IUIAutomationCondition(IUIAutomationConditionVtbl) {
786    fn GetChild(
787        condition: *mut *mut IUIAutomationCondition,
788    ) -> HRESULT,
789}}
790RIDL!{#[uuid(0xb32a92b5, 0xbc25, 0x4078, 0x9c, 0x08, 0xd7, 0xee, 0x95, 0xc4, 0x8e, 0x03)]
791interface IUIAutomationCacheRequest(IUIAutomationCacheRequestVtbl): IUnknown(IUnknownVtbl) {
792    fn AddProperty(
793        propertyId: PROPERTYID,
794    ) -> HRESULT,
795    fn AddPattern(
796        patternId: PATTERNID,
797    ) -> HRESULT,
798    fn Clone(
799        clonedRequest: *mut *mut IUIAutomationCacheRequest,
800    ) -> HRESULT,
801    fn get_TreeScope(
802        scope: *mut TreeScope,
803    ) -> HRESULT,
804    fn put_TreeScope(
805        scope: TreeScope,
806    ) -> HRESULT,
807    fn get_TreeFilter(
808        filter: *mut *mut IUIAutomationCondition,
809    ) -> HRESULT,
810    fn put_TreeFilter(
811        filter: *mut IUIAutomationCondition,
812    ) -> HRESULT,
813    fn get_AutomationElementMode(
814        mode: *mut AutomationElementMode,
815    ) -> HRESULT,
816    fn put_AutomationElementMode(
817        mode: AutomationElementMode,
818    ) -> HRESULT,
819}}
820RIDL!{#[uuid(0x4042c624, 0x389c, 0x4afc, 0xa6, 0x30, 0x9d, 0xf8, 0x54, 0xa5, 0x41, 0xfc)]
821interface IUIAutomationTreeWalker(IUIAutomationTreeWalkerVtbl): IUnknown(IUnknownVtbl) {
822    fn GetParentElement(
823        element: *mut IUIAutomationElement,
824        parent: *mut *mut IUIAutomationElement,
825    ) -> HRESULT,
826    fn GetFirstChildElement(
827        element: *mut IUIAutomationElement,
828        first: *mut *mut IUIAutomationElement,
829    ) -> HRESULT,
830    fn GetLastChildElement(
831        element: *mut IUIAutomationElement,
832        last: *mut *mut IUIAutomationElement,
833    ) -> HRESULT,
834    fn GetNextSiblingElement(
835        element: *mut IUIAutomationElement,
836        next: *mut *mut IUIAutomationElement,
837    ) -> HRESULT,
838    fn GetPreviousSiblingElement(
839        element: *mut IUIAutomationElement,
840        previous: *mut *mut IUIAutomationElement,
841    ) -> HRESULT,
842    fn NormalizeElement(
843        element: *mut IUIAutomationElement,
844        normalized: *mut *mut IUIAutomationElement,
845    ) -> HRESULT,
846    fn GetParentElementBuildCache(
847        element: *mut IUIAutomationElement,
848        cacheRequest: *mut IUIAutomationCacheRequest,
849        parent: *mut *mut IUIAutomationElement,
850    ) -> HRESULT,
851    fn GetFirstChildElementBuildCache(
852        element: *mut IUIAutomationElement,
853        cacheRequest: *mut IUIAutomationCacheRequest,
854        first: *mut *mut IUIAutomationElement,
855    ) -> HRESULT,
856    fn GetLastChildElementBuildCache(
857        element: *mut IUIAutomationElement,
858        cacheRequest: *mut IUIAutomationCacheRequest,
859        last: *mut *mut IUIAutomationElement,
860    ) -> HRESULT,
861    fn GetNextSiblingElementBuildCache(
862        element: *mut IUIAutomationElement,
863        cacheRequest: *mut IUIAutomationCacheRequest,
864        next: *mut *mut IUIAutomationElement,
865    ) -> HRESULT,
866    fn GetPreviousSiblingElementBuildCache(
867        element: *mut IUIAutomationElement,
868        cacheRequest: *mut IUIAutomationCacheRequest,
869        previous: *mut *mut IUIAutomationElement,
870    ) -> HRESULT,
871    fn NormalizeElementBuildCache(
872        element: *mut IUIAutomationElement,
873        cacheRequest: *mut IUIAutomationCacheRequest,
874        normalized: *mut *mut IUIAutomationElement,
875    ) -> HRESULT,
876    fn get_Condition(
877        condition: *mut *mut IUIAutomationCondition,
878    ) -> HRESULT,
879}}
880RIDL!{#[uuid(0x146c3c17, 0xf12e, 0x4e22, 0x8c, 0x27, 0xf8, 0x94, 0xb9, 0xb7, 0x9c, 0x69)]
881interface IUIAutomationEventHandler(IUIAutomationEventHandlerVtbl): IUnknown(IUnknownVtbl) {
882    fn HandleAutomationEvent(
883        sender: *mut IUIAutomationElement,
884        eventId: EVENTID,
885    ) -> HRESULT,
886}}
887RIDL!{#[uuid(0x40cd37d4, 0xc756, 0x4b0c, 0x8c, 0x6f, 0xbd, 0xdf, 0xee, 0xb1, 0x3b, 0x50)]
888interface IUIAutomationPropertyChangedEventHandler(IUIAutomationPropertyChangedEventHandlerVtbl):
889        IUnknown(IUnknownVtbl) {
890    fn HandlePropertyChangedEvent(
891        sender: *mut IUIAutomationElement,
892        propertyId: PROPERTYID,
893        newValue: VARIANT,
894    ) -> HRESULT,
895}}
896RIDL!{#[uuid(0xe81d1b4e, 0x11c5, 0x42f8, 0x97, 0x54, 0xe7, 0x03, 0x6c, 0x79, 0xf0, 0x54)]
897interface IUIAutomationStructureChangedEventHandler(IUIAutomationStructureChangedEventHandlerVtbl):
898        IUnknown(IUnknownVtbl) {
899    fn HandleStructureChangedEvent(
900        sender: *mut IUIAutomationElement,
901        changeType: StructureChangeType,
902        runtimeId: *mut SAFEARRAY,
903    ) -> HRESULT,
904}}
905RIDL!{#[uuid(0xc270f6b5, 0x5c69, 0x4290, 0x97, 0x45, 0x7a, 0x7f, 0x97, 0x16, 0x94, 0x68)]
906interface IUIAutomationFocusChangedEventHandler(IUIAutomationFocusChangedEventHandlerVtbl):
907        IUnknown(IUnknownVtbl) {
908    fn HandleFocusChangedEvent(
909        sender: *mut IUIAutomationElement,
910    ) -> HRESULT,
911}}
912RIDL!{#[uuid(0x92FAA680, 0xE704, 0x4156, 0x93, 0x1A, 0xE3, 0x2D, 0x5B, 0xB3, 0x8F, 0x3F)]
913interface IUIAutomationTextEditTextChangedEventHandler
914        (IUIAutomationTextEditTextChangedEventHandlerVtbl): IUnknown(IUnknownVtbl) {
915    fn HandleTextEditTextChangedEvent(
916        sender: *mut IUIAutomationElement,
917        textEditChangeType: TextEditChangeType,
918        eventStrings: *mut SAFEARRAY,
919    ) -> HRESULT,
920}}
921RIDL!{#[uuid(0x58EDCA55, 0x2C3E, 0x4980, 0xB1, 0xB9, 0x56, 0xC1, 0x7F, 0x27, 0xA2, 0xA0)]
922interface IUIAutomationChangesEventHandler(IUIAutomationChangesEventHandlerVtbl):
923        IUnknown(IUnknownVtbl) {
924    fn HandleChangesEvent(
925        sender: *mut IUIAutomationElement,
926        uiaChanges: *mut UiaChangeInfo,
927        changesCount: c_int,
928    ) -> HRESULT,
929}}
930RIDL!{#[uuid(0xC7CB2637, 0xE6C2, 0x4D0C, 0x85, 0xDE, 0x49, 0x48, 0xC0, 0x21, 0x75, 0xC7)]
931interface IUIAutomationNotificationEventHandler(IUIAutomationNotificationEventHandlerVtbl):
932        IUnknown(IUnknownVtbl) {
933    fn HandleNotificationEvent(
934        sender: *mut IUIAutomationElement,
935        notificationKind: NotificationKind,
936        notificationProcessing: NotificationProcessing,
937        displayString: BSTR,
938        activityId: BSTR,
939    ) -> HRESULT,
940}}
941RIDL!{#[uuid(0xfb377fbe, 0x8ea6, 0x46d5, 0x9c, 0x73, 0x64, 0x99, 0x64, 0x2d, 0x30, 0x59)]
942interface IUIAutomationInvokePattern(IUIAutomationInvokePatternVtbl): IUnknown(IUnknownVtbl) {
943    fn Invoke() -> HRESULT,
944}}
945RIDL!{#[uuid(0xfde5ef97, 0x1464, 0x48f6, 0x90, 0xbf, 0x43, 0xd0, 0x94, 0x8e, 0x86, 0xec)]
946interface IUIAutomationDockPattern(IUIAutomationDockPatternVtbl): IUnknown(IUnknownVtbl) {
947    fn SetDockPosition(
948        dockPos: DockPosition,
949    ) -> HRESULT,
950    fn get_CurrentDockPosition(
951        retVal: *mut DockPosition,
952    ) -> HRESULT,
953    fn get_CachedDockPosition(
954        retVal: *mut DockPosition,
955    ) -> HRESULT,
956}}
957RIDL!{#[uuid(0x619be086, 0x1f4e, 0x4ee4, 0xba, 0xfa, 0x21, 0x01, 0x28, 0x73, 0x87, 0x30)]
958interface IUIAutomationExpandCollapsePattern(IUIAutomationExpandCollapsePatternVtbl):
959        IUnknown(IUnknownVtbl) {
960    fn Expand() -> HRESULT,
961    fn Collapse() -> HRESULT,
962    fn get_CurrentExpandCollapseState(
963        retVal: *mut ExpandCollapseState,
964    ) -> HRESULT,
965    fn get_CachedExpandCollapseState(
966        retVal: *mut ExpandCollapseState,
967    ) -> HRESULT,
968}}
969RIDL!{#[uuid(0x414c3cdc, 0x856b, 0x4f5b, 0x85, 0x38, 0x31, 0x31, 0xc6, 0x30, 0x25, 0x50)]
970interface IUIAutomationGridPattern(IUIAutomationGridPatternVtbl): IUnknown(IUnknownVtbl) {
971    fn GetItem(
972        row: c_int,
973        column: c_int,
974        element: *mut *mut IUIAutomationElement,
975    ) -> HRESULT,
976    fn get_CurrentRowCount(
977        retVal: *mut c_int,
978    ) -> HRESULT,
979    fn get_CurrentColumnCount(
980        retVal: *mut c_int,
981    ) -> HRESULT,
982    fn get_CachedRowCount(
983        retVal: *mut c_int,
984    ) -> HRESULT,
985    fn get_CachedColumnCount(
986        retVal: *mut c_int,
987    ) -> HRESULT,
988}}
989RIDL!{#[uuid(0x78f8ef57, 0x66c3, 0x4e09, 0xbd, 0x7c, 0xe7, 0x9b, 0x20, 0x04, 0x89, 0x4d)]
990interface IUIAutomationGridItemPattern(IUIAutomationGridItemPatternVtbl): IUnknown(IUnknownVtbl) {
991    fn get_CurrentContainingGrid(
992        retVal: *mut *mut IUIAutomationElement,
993    ) -> HRESULT,
994    fn get_CurrentRow(
995        retVal: *mut c_int,
996    ) -> HRESULT,
997    fn get_CurrentColumn(
998        retVal: *mut c_int,
999    ) -> HRESULT,
1000    fn get_CurrentRowSpan(
1001        retVal: *mut c_int,
1002    ) -> HRESULT,
1003    fn get_CurrentColumnSpan(
1004        retVal: *mut c_int,
1005    ) -> HRESULT,
1006    fn get_CachedContainingGrid(
1007        retVal: *mut *mut IUIAutomationElement,
1008    ) -> HRESULT,
1009    fn get_CachedRow(
1010        retVal: *mut c_int,
1011    ) -> HRESULT,
1012    fn get_CachedColumn(
1013        retVal: *mut c_int,
1014    ) -> HRESULT,
1015    fn get_CachedRowSpan(
1016        retVal: *mut c_int,
1017    ) -> HRESULT,
1018    fn get_CachedColumnSpan(
1019        retVal: *mut c_int,
1020    ) -> HRESULT,
1021}}
1022RIDL!{#[uuid(0x8d253c91, 0x1dc5, 0x4bb5, 0xb1, 0x8f, 0xad, 0xe1, 0x6f, 0xa4, 0x95, 0xe8)]
1023interface IUIAutomationMultipleViewPattern(IUIAutomationMultipleViewPatternVtbl):
1024        IUnknown(IUnknownVtbl) {
1025    fn GetViewName(
1026        view: c_int,
1027        name: *mut BSTR,
1028    ) -> HRESULT,
1029    fn SetCurrentView(
1030        view: c_int,
1031    ) -> HRESULT,
1032    fn get_CurrentCurrentView(
1033        retVal: *mut c_int,
1034    ) -> HRESULT,
1035    fn GetCurrentSupportedViews(
1036        retVal: *mut *mut SAFEARRAY,
1037    ) -> HRESULT,
1038    fn get_CachedCurrentView(
1039        retVal: *mut c_int,
1040    ) -> HRESULT,
1041    fn GetCachedSupportedViews(
1042        retVal: *mut *mut SAFEARRAY,
1043    ) -> HRESULT,
1044}}
1045RIDL!{#[uuid(0x71c284b3, 0xc14d, 0x4d14, 0x98, 0x1e, 0x19, 0x75, 0x1b, 0x0d, 0x75, 0x6d)]
1046interface IUIAutomationObjectModelPattern(IUIAutomationObjectModelPatternVtbl):
1047        IUnknown(IUnknownVtbl) {
1048    fn GetUnderlyingObjectModel(
1049        retVal: *mut *mut IUnknown,
1050    ) -> HRESULT,
1051}}
1052RIDL!{#[uuid(0x59213f4f, 0x7346, 0x49e5, 0xb1, 0x20, 0x80, 0x55, 0x59, 0x87, 0xa1, 0x48)]
1053interface IUIAutomationRangeValuePattern(IUIAutomationRangeValuePatternVtbl):
1054        IUnknown(IUnknownVtbl) {
1055    fn SetValue(
1056        val: c_double,
1057    ) -> HRESULT,
1058    fn get_CurrentValue(
1059        retVal: *mut c_double,
1060    ) -> HRESULT,
1061    fn get_CurrentIsReadOnly(
1062        retVal: *mut BOOL,
1063    ) -> HRESULT,
1064    fn get_CurrentMaximum(
1065        retVal: *mut c_double,
1066    ) -> HRESULT,
1067    fn get_CurrentMinimum(
1068        retVal: *mut c_double,
1069    ) -> HRESULT,
1070    fn get_CurrentLargeChange(
1071        retVal: *mut c_double,
1072    ) -> HRESULT,
1073    fn get_CurrentSmallChange(
1074        retVal: *mut c_double,
1075    ) -> HRESULT,
1076    fn get_CachedValue(
1077        retVal: *mut c_double,
1078    ) -> HRESULT,
1079    fn get_CachedIsReadOnly(
1080        retVal: *mut BOOL,
1081    ) -> HRESULT,
1082    fn get_CachedMaximum(
1083        retVal: *mut c_double,
1084    ) -> HRESULT,
1085    fn get_CachedMinimum(
1086        retVal: *mut c_double,
1087    ) -> HRESULT,
1088    fn get_CachedLargeChange(
1089        retVal: *mut c_double,
1090    ) -> HRESULT,
1091    fn get_CachedSmallChange(
1092        retVal: *mut c_double,
1093    ) -> HRESULT,
1094}}
1095RIDL!{#[uuid(0x88f4d42a, 0xe881, 0x459d, 0xa7, 0x7c, 0x73, 0xbb, 0xbb, 0x7e, 0x02, 0xdc)]
1096interface IUIAutomationScrollPattern(IUIAutomationScrollPatternVtbl): IUnknown(IUnknownVtbl) {
1097    fn Scroll(
1098        horizontalAmount: ScrollAmount,
1099        verticalAmount: ScrollAmount,
1100    ) -> HRESULT,
1101    fn SetScrollPercent(
1102        horizontalPercent: c_double,
1103        verticalPercent: c_double,
1104    ) -> HRESULT,
1105    fn get_CurrentHorizontalScrollPercent(
1106        retVal: *mut c_double,
1107    ) -> HRESULT,
1108    fn get_CurrentVerticalScrollPercent(
1109        retVal: *mut c_double,
1110    ) -> HRESULT,
1111    fn get_CurrentHorizontalViewSize(
1112        retVal: *mut c_double,
1113    ) -> HRESULT,
1114    fn get_CurrentVerticalViewSize(
1115        retVal: *mut c_double,
1116    ) -> HRESULT,
1117    fn get_CurrentHorizontallyScrollable(
1118        retVal: *mut BOOL,
1119    ) -> HRESULT,
1120    fn get_CurrentVerticallyScrollable(
1121        retVal: *mut BOOL,
1122    ) -> HRESULT,
1123    fn get_CachedHorizontalScrollPercent(
1124        retVal: *mut c_double,
1125    ) -> HRESULT,
1126    fn get_CachedVerticalScrollPercent(
1127        retVal: *mut c_double,
1128    ) -> HRESULT,
1129    fn get_CachedHorizontalViewSize(
1130        retVal: *mut c_double,
1131    ) -> HRESULT,
1132    fn get_CachedVerticalViewSize(
1133        retVal: *mut c_double,
1134    ) -> HRESULT,
1135    fn get_CachedHorizontallyScrollable(
1136        retVal: *mut BOOL,
1137    ) -> HRESULT,
1138    fn get_CachedVerticallyScrollable(
1139        retVal: *mut BOOL,
1140    ) -> HRESULT,
1141}}
1142RIDL!{#[uuid(0xb488300f, 0xd015, 0x4f19, 0x9c, 0x29, 0xbb, 0x59, 0x5e, 0x36, 0x45, 0xef)]
1143interface IUIAutomationScrollItemPattern(IUIAutomationScrollItemPatternVtbl):
1144        IUnknown(IUnknownVtbl) {
1145    fn ScrollIntoView() -> HRESULT,
1146}}
1147RIDL!{#[uuid(0x5ed5202e, 0xb2ac, 0x47a6, 0xb6, 0x38, 0x4b, 0x0b, 0xf1, 0x40, 0xd7, 0x8e)]
1148interface IUIAutomationSelectionPattern(IUIAutomationSelectionPatternVtbl):
1149        IUnknown(IUnknownVtbl) {
1150    fn GetCurrentSelection(
1151        retVal: *mut *mut IUIAutomationElementArray,
1152    ) -> HRESULT,
1153    fn get_CurrentCanSelectMultiple(
1154        retVal: *mut BOOL,
1155    ) -> HRESULT,
1156    fn get_CurrentIsSelectionRequired(
1157        retVal: *mut BOOL,
1158    ) -> HRESULT,
1159    fn GetCachedSelection(
1160        retVal: *mut *mut IUIAutomationElementArray,
1161    ) -> HRESULT,
1162    fn get_CachedCanSelectMultiple(
1163        retVal: *mut BOOL,
1164    ) -> HRESULT,
1165    fn get_CachedIsSelectionRequired(
1166        retVal: *mut BOOL,
1167    ) -> HRESULT,
1168}}
1169RIDL!{#[uuid(0x0532bfae, 0xc011, 0x4e32, 0xa3, 0x43, 0x6d, 0x64, 0x2d, 0x79, 0x85, 0x55)]
1170interface IUIAutomationSelectionPattern2(IUIAutomationSelectionPattern2Vtbl):
1171        IUIAutomationSelectionPattern(IUIAutomationSelectionPatternVtbl) {
1172    fn get_CurrentFirstSelectedItem(
1173        retVal: *mut *mut IUIAutomationElement,
1174    ) -> HRESULT,
1175    fn get_CurrentLastSelectedItem(
1176        retVal: *mut *mut IUIAutomationElement,
1177    ) -> HRESULT,
1178    fn get_CurrentCurrentSelectedItem(
1179        retVal: *mut *mut IUIAutomationElement,
1180    ) -> HRESULT,
1181    fn get_CurrentItemCount(
1182        retVal: *mut c_int,
1183    ) -> HRESULT,
1184    fn get_CachedFirstSelectedItem(
1185        retVal: *mut *mut IUIAutomationElement,
1186    ) -> HRESULT,
1187    fn get_CachedLastSelectedItem(
1188        retVal: *mut *mut IUIAutomationElement,
1189    ) -> HRESULT,
1190    fn get_CachedCurrentSelectedItem(
1191        retVal: *mut *mut IUIAutomationElement,
1192    ) -> HRESULT,
1193    fn get_CachedItemCount(
1194        retVal: *mut c_int,
1195    ) -> HRESULT,
1196}}
1197RIDL!{#[uuid(0xa8efa66a, 0x0fda, 0x421a, 0x91, 0x94, 0x38, 0x02, 0x1f, 0x35, 0x78, 0xea)]
1198interface IUIAutomationSelectionItemPattern(IUIAutomationSelectionItemPatternVtbl):
1199        IUnknown(IUnknownVtbl) {
1200    fn Select() -> HRESULT,
1201    fn AddToSelection() -> HRESULT,
1202    fn RemoveFromSelection() -> HRESULT,
1203    fn get_CurrentIsSelected(
1204        retVal: *mut BOOL,
1205    ) -> HRESULT,
1206    fn get_CurrentSelectionContainer(
1207        retVal: *mut *mut IUIAutomationElement,
1208    ) -> HRESULT,
1209    fn get_CachedIsSelected(
1210        retVal: *mut BOOL,
1211    ) -> HRESULT,
1212    fn get_CachedSelectionContainer(
1213        retVal: *mut *mut IUIAutomationElement,
1214    ) -> HRESULT,
1215}}
1216RIDL!{#[uuid(0x2233be0b, 0xafb7, 0x448b, 0x9f, 0xda, 0x3b, 0x37, 0x8a, 0xa5, 0xea, 0xe1)]
1217interface IUIAutomationSynchronizedInputPattern(IUIAutomationSynchronizedInputPatternVtbl):
1218        IUnknown(IUnknownVtbl) {
1219    fn StartListening(
1220        inputType: SynchronizedInputType,
1221    ) -> HRESULT,
1222    fn Cancel() -> HRESULT,
1223}}
1224RIDL!{#[uuid(0x620e691c, 0xea96, 0x4710, 0xa8, 0x50, 0x75, 0x4b, 0x24, 0xce, 0x24, 0x17)]
1225interface IUIAutomationTablePattern(IUIAutomationTablePatternVtbl): IUnknown(IUnknownVtbl) {
1226    fn GetCurrentRowHeaders(
1227        retVal: *mut *mut IUIAutomationElementArray,
1228    ) -> HRESULT,
1229    fn GetCurrentColumnHeaders(
1230        retVal: *mut *mut IUIAutomationElementArray,
1231    ) -> HRESULT,
1232    fn get_CurrentRowOrColumnMajor(
1233        retVal: *mut RowOrColumnMajor,
1234    ) -> HRESULT,
1235    fn GetCachedRowHeaders(
1236        retVal: *mut *mut IUIAutomationElementArray,
1237    ) -> HRESULT,
1238    fn GetCachedColumnHeaders(
1239        retVal: *mut *mut IUIAutomationElementArray,
1240    ) -> HRESULT,
1241    fn get_CachedRowOrColumnMajor(
1242        retVal: *mut RowOrColumnMajor,
1243    ) -> HRESULT,
1244}}
1245RIDL!{#[uuid(0x0b964eb3, 0xef2e, 0x4464, 0x9c, 0x79, 0x61, 0xd6, 0x17, 0x37, 0xa2, 0x7e)]
1246interface IUIAutomationTableItemPattern(IUIAutomationTableItemPatternVtbl):
1247        IUnknown(IUnknownVtbl) {
1248    fn GetCurrentRowHeaderItems(
1249        retVal: *mut *mut IUIAutomationElementArray,
1250    ) -> HRESULT,
1251    fn GetCurrentColumnHeaderItems(
1252        retVal: *mut *mut IUIAutomationElementArray,
1253    ) -> HRESULT,
1254    fn GetCachedRowHeaderItems(
1255        retVal: *mut *mut IUIAutomationElementArray,
1256    ) -> HRESULT,
1257    fn GetCachedColumnHeaderItems(
1258        retVal: *mut *mut IUIAutomationElementArray,
1259    ) -> HRESULT,
1260}}
1261RIDL!{#[uuid(0x94cf8058, 0x9b8d, 0x4ab9, 0x8b, 0xfd, 0x4c, 0xd0, 0xa3, 0x3c, 0x8c, 0x70)]
1262interface IUIAutomationTogglePattern(IUIAutomationTogglePatternVtbl): IUnknown(IUnknownVtbl) {
1263    fn Toggle() -> HRESULT,
1264    fn get_CurrentToggleState(
1265        retVal: *mut ToggleState,
1266    ) -> HRESULT,
1267    fn get_CachedToggleState(
1268        retVal: *mut ToggleState,
1269    ) -> HRESULT,
1270}}
1271RIDL!{#[uuid(0xa9b55844, 0xa55d, 0x4ef0, 0x92, 0x6d, 0x56, 0x9c, 0x16, 0xff, 0x89, 0xbb)]
1272interface IUIAutomationTransformPattern(IUIAutomationTransformPatternVtbl):
1273        IUnknown(IUnknownVtbl) {
1274    fn Move(
1275        x: c_double,
1276        y: c_double,
1277    ) -> HRESULT,
1278    fn Resize(
1279        width: c_double,
1280        height: c_double,
1281    ) -> HRESULT,
1282    fn Rotate(
1283        degrees: c_double,
1284    ) -> HRESULT,
1285    fn get_CurrentCanMove(
1286        retVal: *mut BOOL,
1287    ) -> HRESULT,
1288    fn get_CurrentCanResize(
1289        retVal: *mut BOOL,
1290    ) -> HRESULT,
1291    fn get_CurrentCanRotate(
1292        retVal: *mut BOOL,
1293    ) -> HRESULT,
1294    fn get_CachedCanMove(
1295        retVal: *mut BOOL,
1296    ) -> HRESULT,
1297    fn get_CachedCanResize(
1298        retVal: *mut BOOL,
1299    ) -> HRESULT,
1300    fn get_CachedCanRotate(
1301        retVal: *mut BOOL,
1302    ) -> HRESULT,
1303}}
1304RIDL!{#[uuid(0xa94cd8b1, 0x0844, 0x4cd6, 0x9d, 0x2d, 0x64, 0x05, 0x37, 0xab, 0x39, 0xe9)]
1305interface IUIAutomationValuePattern(IUIAutomationValuePatternVtbl): IUnknown(IUnknownVtbl) {
1306    fn SetValue(
1307        val: BSTR,
1308    ) -> HRESULT,
1309    fn get_CurrentValue(
1310        retVal: *mut BSTR,
1311    ) -> HRESULT,
1312    fn get_CurrentIsReadOnly(
1313        retVal: *mut BOOL,
1314    ) -> HRESULT,
1315    fn get_CachedValue(
1316        retVal: *mut BSTR,
1317    ) -> HRESULT,
1318    fn get_CachedIsReadOnly(
1319        retVal: *mut BOOL,
1320    ) -> HRESULT,
1321}}
1322RIDL!{#[uuid(0x0faef453, 0x9208, 0x43ef, 0xbb, 0xb2, 0x3b, 0x48, 0x51, 0x77, 0x86, 0x4f)]
1323interface IUIAutomationWindowPattern(IUIAutomationWindowPatternVtbl): IUnknown(IUnknownVtbl) {
1324    fn Close() -> HRESULT,
1325    fn WaitForInputIdle(
1326        milliseconds: c_int,
1327        success: *mut BOOL,
1328    ) -> HRESULT,
1329    fn SetWindowVisualState(
1330        state: WindowVisualState,
1331    ) -> HRESULT,
1332    fn get_CurrentCanMaximize(
1333        retVal: *mut BOOL,
1334    ) -> HRESULT,
1335    fn get_CurrentCanMinimize(
1336        retVal: *mut BOOL,
1337    ) -> HRESULT,
1338    fn get_CurrentIsModal(
1339        retVal: *mut BOOL,
1340    ) -> HRESULT,
1341    fn get_CurrentIsTopmost(
1342        retVal: *mut BOOL,
1343    ) -> HRESULT,
1344    fn get_CurrentWindowVisualState(
1345        retVal: *mut WindowVisualState,
1346    ) -> HRESULT,
1347    fn get_CurrentWindowInteractionState(
1348        retVal: *mut WindowInteractionState,
1349    ) -> HRESULT,
1350    fn get_CachedCanMaximize(
1351        retVal: *mut BOOL,
1352    ) -> HRESULT,
1353    fn get_CachedCanMinimize(
1354        retVal: *mut BOOL,
1355    ) -> HRESULT,
1356    fn get_CachedIsModal(
1357        retVal: *mut BOOL,
1358    ) -> HRESULT,
1359    fn get_CachedIsTopmost(
1360        retVal: *mut BOOL,
1361    ) -> HRESULT,
1362    fn get_CachedWindowVisualState(
1363        retVal: *mut WindowVisualState,
1364    ) -> HRESULT,
1365    fn get_CachedWindowInteractionState(
1366        retVal: *mut WindowInteractionState,
1367    ) -> HRESULT,
1368}}
1369RIDL!{#[uuid(0xa543cc6a, 0xf4ae, 0x494b, 0x82, 0x39, 0xc8, 0x14, 0x48, 0x11, 0x87, 0xa8)]
1370interface IUIAutomationTextRange(IUIAutomationTextRangeVtbl): IUnknown(IUnknownVtbl) {
1371    fn Clone(
1372        clonedRange: *mut *mut IUIAutomationTextRange,
1373    ) -> HRESULT,
1374    fn Compare(
1375        range: *mut IUIAutomationTextRange,
1376        areSame: *mut BOOL,
1377    ) -> HRESULT,
1378    fn CompareEndpoints(
1379        srcEndPoint: TextPatternRangeEndpoint,
1380        range: *mut IUIAutomationTextRange,
1381        targetEndPoint: TextPatternRangeEndpoint,
1382        compValue: *mut c_int,
1383    ) -> HRESULT,
1384    fn ExpandToEnclosingUnit(
1385        textUnit: TextUnit,
1386    ) -> HRESULT,
1387    fn FindAttribute(
1388        attr: TEXTATTRIBUTEID,
1389        val: VARIANT,
1390        backward: BOOL,
1391        found: *mut *mut IUIAutomationTextRange,
1392    ) -> HRESULT,
1393    fn FindText(
1394        text: BSTR,
1395        backward: BOOL,
1396        ignoreCase: BOOL,
1397        found: *mut *mut IUIAutomationTextRange,
1398    ) -> HRESULT,
1399    fn GetAttributeValue(
1400        attr: TEXTATTRIBUTEID,
1401        value: *mut VARIANT,
1402    ) -> HRESULT,
1403    fn GetBoundingRectangles(
1404        boundingRects: *mut *mut SAFEARRAY,
1405    ) -> HRESULT,
1406    fn GetEnclosingElement(
1407        enclosingElement: *mut *mut IUIAutomationElement,
1408    ) -> HRESULT,
1409    fn GetText(
1410        maxLength: c_int,
1411        text: *mut BSTR,
1412    ) -> HRESULT,
1413    fn Move(
1414        unit: TextUnit,
1415        count: c_int,
1416        moved: *mut c_int,
1417    ) -> HRESULT,
1418    fn MoveEndpointByUnit(
1419        endpoint: TextPatternRangeEndpoint,
1420        unit: TextUnit,
1421        count: c_int,
1422        moved: *mut c_int,
1423    ) -> HRESULT,
1424    fn MoveEndpointByRange(
1425        srcEndPoint: TextPatternRangeEndpoint,
1426        range: *mut IUIAutomationTextRange,
1427        targetEndPoint: TextPatternRangeEndpoint,
1428    ) -> HRESULT,
1429    fn Select() -> HRESULT,
1430    fn AddToSelection() -> HRESULT,
1431    fn RemoveFromSelection() -> HRESULT,
1432    fn ScrollIntoView(
1433        alignToTop: BOOL,
1434    ) -> HRESULT,
1435    fn GetChildren(
1436        children: *mut *mut IUIAutomationElementArray,
1437    ) -> HRESULT,
1438}}
1439RIDL!{#[uuid(0xBB9B40E0, 0x5E04, 0x46BD, 0x9B, 0xE0, 0x4B, 0x60, 0x1B, 0x9A, 0xFA, 0xD4)]
1440interface IUIAutomationTextRange2(IUIAutomationTextRange2Vtbl):
1441        IUIAutomationTextRange(IUIAutomationTextRangeVtbl) {
1442    fn ShowContextMenu() -> HRESULT,
1443}}
1444RIDL!{#[uuid(0x6A315D69, 0x5512, 0x4C2E, 0x85, 0xF0, 0x53, 0xFC, 0xE6, 0xDD, 0x4B, 0xC2)]
1445interface IUIAutomationTextRange3(IUIAutomationTextRange3Vtbl):
1446        IUIAutomationTextRange2(IUIAutomationTextRange2Vtbl) {
1447    fn GetEnclosingElementBuildCache(
1448        cacheRequest: *mut IUIAutomationCacheRequest,
1449        enclosingElement: *mut *mut IUIAutomationElement,
1450    ) -> HRESULT,
1451    fn GetChildrenBuildCache(
1452        cacheRequest: *mut IUIAutomationCacheRequest,
1453        children: *mut *mut IUIAutomationElementArray,
1454    ) -> HRESULT,
1455    fn GetAttributeValues(
1456// bookmark
1457        attributeIds: *const TEXTATTRIBUTEID,
1458        attributeIdCount: c_int,
1459        attributeValues: *mut *mut SAFEARRAY,
1460    ) -> HRESULT,
1461}}
1462RIDL!{#[uuid(0xce4ae76a, 0xe717, 0x4c98, 0x81, 0xea, 0x47, 0x37, 0x1d, 0x02, 0x8e, 0xb6)]
1463interface IUIAutomationTextRangeArray(IUIAutomationTextRangeArrayVtbl): IUnknown(IUnknownVtbl) {
1464    fn get_Length(
1465        length: c_int,
1466    ) -> HRESULT,
1467    fn GetElement(
1468        index: c_int,
1469        element: *mut *mut IUIAutomationTextRange,
1470    ) -> HRESULT,
1471}}
1472RIDL!{#[uuid(0x32eba289, 0x3583, 0x42c9, 0x9c, 0x59, 0x3b, 0x6d, 0x9a, 0x1e, 0x9b, 0x6a)]
1473interface IUIAutomationTextPattern(IUIAutomationTextPatternVtbl): IUnknown(IUnknownVtbl) {
1474    fn RangeFromPoint(
1475        pt: POINT,
1476        range: *mut *mut IUIAutomationTextRange,
1477    ) -> HRESULT,
1478    fn RangeFromChild(
1479        child: *mut IUIAutomationElement,
1480        range: *mut *mut IUIAutomationTextRange,
1481    ) -> HRESULT,
1482    fn GetSelection(
1483        ranges: *mut *mut IUIAutomationTextRangeArray,
1484    ) -> HRESULT,
1485    fn GetVisibleRanges(
1486        ranges: *mut *mut IUIAutomationTextRangeArray,
1487    ) -> HRESULT,
1488    fn get_DocumentRange(
1489        range: *mut *mut IUIAutomationTextRange,
1490    ) -> HRESULT,
1491    fn get_SupportedTextSelection(
1492        supportedTextSelection: *mut SupportedTextSelection,
1493    ) -> HRESULT,
1494}}
1495RIDL!{#[uuid(0x506a921a, 0xfcc9, 0x409f, 0xb2, 0x3b, 0x37, 0xeb, 0x74, 0x10, 0x68, 0x72)]
1496interface IUIAutomationTextPattern2(IUIAutomationTextPattern2Vtbl):
1497        IUIAutomationTextPattern(IUIAutomationTextPatternVtbl) {
1498    fn RangeFromAnnotation(
1499        annotation: *mut IUIAutomationElement,
1500        range: *mut *mut IUIAutomationTextRange,
1501    ) -> HRESULT,
1502    fn GetCaretRange(
1503        isActive: *mut BOOL,
1504        range: *mut *mut IUIAutomationTextRange,
1505    ) -> HRESULT,
1506}}
1507RIDL!{#[uuid(0x17E21576, 0x996C, 0x4870, 0x99, 0xD9, 0xBF, 0xF3, 0x23, 0x38, 0x0C, 0x06)]
1508interface IUIAutomationTextEditPattern(IUIAutomationTextEditPatternVtbl):
1509        IUIAutomationTextPattern(IUIAutomationTextPatternVtbl) {
1510    fn GetActiveComposition(
1511        range: *mut *mut IUIAutomationTextRange,
1512    ) -> HRESULT,
1513    fn GetConversionTarget(
1514        range: *mut *mut IUIAutomationTextRange,
1515    ) -> HRESULT,
1516}}
1517RIDL!{#[uuid(0x01EA217A, 0x1766, 0x47ED, 0xA6, 0xCC, 0xAC, 0xF4, 0x92, 0x85, 0x4B, 0x1F)]
1518interface IUIAutomationCustomNavigationPattern(IUIAutomationCustomNavigationPatternVtbl):
1519        IUnknown(IUnknownVtbl) {
1520    fn Navigate(
1521        direction: NavigateDirection,
1522        pRetVal: *mut *mut IUIAutomationElement,
1523    ) -> HRESULT,
1524}}
1525RIDL!{#[uuid(0xF97933B0, 0x8DAE, 0x4496, 0x89, 0x97, 0x5B, 0xA0, 0x15, 0xFE, 0x0D, 0x82)]
1526interface IUIAutomationActiveTextPositionChangedEventHandler
1527        (IUIAutomationActiveTextPositionChangedEventHandlerVtbl): IUnknown(IUnknownVtbl) {
1528    fn HandleActiveTextPositionChangedEvent(
1529        sender: *mut IUIAutomationElement,
1530        range: *mut IUIAutomationTextRange,
1531    ) -> HRESULT,
1532}}
1533RIDL!{#[uuid(0x828055ad, 0x355b, 0x4435, 0x86, 0xd5, 0x3b, 0x51, 0xc1, 0x4a, 0x9b, 0x1b)]
1534interface IUIAutomationLegacyIAccessiblePattern(IUIAutomationLegacyIAccessiblePatternVtbl):
1535        IUnknown(IUnknownVtbl) {
1536    fn Select(
1537        flagsSelect: c_long,
1538    ) -> HRESULT,
1539    fn DoDefaultAction() -> HRESULT,
1540    fn SetValue(
1541        szValue: LPCWSTR,
1542    ) -> HRESULT,
1543    fn get_CurrentChildId(
1544        pRetVal: *mut c_int,
1545    ) -> HRESULT,
1546    fn get_CurrentName(
1547        pszName: *mut BSTR,
1548    ) -> HRESULT,
1549    fn get_CurrentValue(
1550        pszValue: *mut BSTR,
1551    ) -> HRESULT,
1552    fn get_CurrentDescription(
1553        pszDescription: *mut BSTR,
1554    ) -> HRESULT,
1555    fn get_CurrentRole(
1556        pdwRole: *mut DWORD,
1557    ) -> HRESULT,
1558    fn get_CurrentState(
1559        pdwState: *mut DWORD,
1560    ) -> HRESULT,
1561    fn get_CurrentHelp(
1562        pszHelp: *mut BSTR,
1563    ) -> HRESULT,
1564    fn get_CurrentKeyboardShortcut(
1565        pszKeyboardShortcut: *mut BSTR,
1566    ) -> HRESULT,
1567    fn GetCurrentSelection(
1568        pvarSelectedChildren: *mut *mut IUIAutomationElementArray,
1569    ) -> HRESULT,
1570    fn get_CurrentDefaultAction(
1571        pszDefaultAction: *mut BSTR,
1572    ) -> HRESULT,
1573    fn get_CachedChildId(
1574        pRetVal: *mut c_int,
1575    ) -> HRESULT,
1576    fn get_CachedName(
1577        pszName: *mut BSTR,
1578    ) -> HRESULT,
1579    fn get_CachedValue(
1580        pszValue: *mut BSTR,
1581    ) -> HRESULT,
1582    fn get_CachedDescription(
1583        pszDescription: *mut BSTR,
1584    ) -> HRESULT,
1585    fn get_CachedRole(
1586        pdwRole: *mut DWORD,
1587    ) -> HRESULT,
1588    fn get_CachedState(
1589        pdwState: *mut DWORD,
1590    ) -> HRESULT,
1591    fn get_CachedHelp(
1592        pszHelp: *mut BSTR,
1593    ) -> HRESULT,
1594    fn get_CachedKeyboardShortcut(
1595        pszKeyboardShortcut: *mut BSTR,
1596    ) -> HRESULT,
1597    fn GetCachedSelection(
1598        pvarSelectedChildren: *mut *mut IUIAutomationElementArray,
1599    ) -> HRESULT,
1600    fn get_CachedDefaultAction(
1601        pszDefaultAction: *mut BSTR,
1602    ) -> HRESULT,
1603    fn GetIAccessible(
1604        ppAccessible: *mut *mut IAccessible,
1605    ) -> HRESULT,
1606}}
1607RIDL!{#[uuid(0xc690fdb2, 0x27a8, 0x423c, 0x81, 0x2d, 0x42, 0x97, 0x73, 0xc9, 0x08, 0x4e)]
1608interface IUIAutomationItemContainerPattern(IUIAutomationItemContainerPatternVtbl):
1609        IUnknown(IUnknownVtbl) {
1610    fn FindItemByProperty(
1611        pStartAfter: *mut IUIAutomationElement,
1612        propertyId: PROPERTYID,
1613        value: VARIANT,
1614        pFound: *mut *mut IUIAutomationElement,
1615    ) -> HRESULT,
1616}}
1617RIDL!{#[uuid(0x6ba3d7a6, 0x04cf, 0x4f11, 0x87, 0x93, 0xa8, 0xd1, 0xcd, 0xe9, 0x96, 0x9f)]
1618interface IUIAutomationVirtualizedItemPattern(IUIAutomationVirtualizedItemPatternVtbl):
1619        IUnknown(IUnknownVtbl) {
1620    fn Realize() -> HRESULT,
1621}}
1622RIDL!{#[uuid(0x9a175b21, 0x339e, 0x41b1, 0x8e, 0x8b, 0x62, 0x3f, 0x6b, 0x68, 0x10, 0x98)]
1623interface IUIAutomationAnnotationPattern(IUIAutomationAnnotationPatternVtbl):
1624        IUnknown(IUnknownVtbl) {
1625    fn get_CurrentAnnotationTypeId(
1626        retVal: *mut c_int,
1627    ) -> HRESULT,
1628    fn get_CurrentAnnotationTypeName(
1629        retVal: *mut BSTR,
1630    ) -> HRESULT,
1631    fn get_CurrentAuthor(
1632        retVal: *mut BSTR,
1633    ) -> HRESULT,
1634    fn get_CurrentDateTime(
1635        retVal: *mut BSTR,
1636    ) -> HRESULT,
1637    fn get_CurrentTarget(
1638        retVal: *mut *mut IUIAutomationElement,
1639    ) -> HRESULT,
1640    fn get_CachedAnnotationTypeId(
1641        retVal: *mut c_int,
1642    ) -> HRESULT,
1643    fn get_CachedAnnotationTypeName(
1644        retVal: *mut BSTR,
1645    ) -> HRESULT,
1646    fn get_CachedAuthor(
1647        retVal: *mut BSTR,
1648    ) -> HRESULT,
1649    fn get_CachedDateTime(
1650        retVal: *mut BSTR,
1651    ) -> HRESULT,
1652    fn get_CachedTarget(
1653        retVal: *mut *mut IUIAutomationElement,
1654    ) -> HRESULT,
1655}}
1656RIDL!{#[uuid(0x85b5f0a2, 0xbd79, 0x484a, 0xad, 0x2b, 0x38, 0x8c, 0x98, 0x38, 0xd5, 0xfb)]
1657interface IUIAutomationStylesPattern(IUIAutomationStylesPatternVtbl): IUnknown(IUnknownVtbl) {
1658    fn get_CurrentStyleId(
1659        retVal: *mut c_int,
1660    ) -> HRESULT,
1661    fn get_CurrentStyleName(
1662        retVal: *mut BSTR,
1663    ) -> HRESULT,
1664    fn get_CurrentFillColor(
1665        retVal: *mut c_int,
1666    ) -> HRESULT,
1667    fn get_CurrentFillPatternStyle(
1668        retVal: *mut BSTR,
1669    ) -> HRESULT,
1670    fn get_CurrentShape(
1671        retVal: *mut BSTR,
1672    ) -> HRESULT,
1673    fn get_CurrentFillPatternColor(
1674        retVal: *mut c_int,
1675    ) -> HRESULT,
1676    fn get_CurrentExtendedProperties(
1677        retVal: *mut BSTR,
1678    ) -> HRESULT,
1679    fn GetCurrentExtendedPropertiesAsArray(
1680        propertyArray: *mut *mut ExtendedProperty,
1681        propertyCount: *mut c_int,
1682    ) -> HRESULT,
1683    fn get_CachedStyleId(
1684        retVal: *mut c_int,
1685    ) -> HRESULT,
1686    fn get_CachedStyleName(
1687        retVal: *mut BSTR,
1688    ) -> HRESULT,
1689    fn get_CachedFillColor(
1690        retVal: *mut c_int,
1691    ) -> HRESULT,
1692    fn get_CachedFillPatternStyle(
1693        retVal: *mut BSTR,
1694    ) -> HRESULT,
1695    fn get_CachedShape(
1696        retVal: *mut BSTR,
1697    ) -> HRESULT,
1698    fn get_CachedFillPatternColor(
1699        retVal: *mut c_int,
1700    ) -> HRESULT,
1701    fn get_CachedExtendedProperties(
1702        retVal: *mut BSTR,
1703    ) -> HRESULT,
1704    fn GetCachedExtendedPropertiesAsArray(
1705        propertyArray: *mut *mut ExtendedProperty,
1706        propertyCount: *mut c_int,
1707    ) -> HRESULT,
1708}}
1709RIDL!{#[uuid(0x7517a7c8, 0xfaae, 0x4de9, 0x9f, 0x08, 0x29, 0xb9, 0x1e, 0x85, 0x95, 0xc1)]
1710interface IUIAutomationSpreadsheetPattern(IUIAutomationSpreadsheetPatternVtbl):
1711        IUnknown(IUnknownVtbl) {
1712    fn GetItemByName(
1713        name: BSTR,
1714        element: *mut *mut IUIAutomationElement,
1715    ) -> HRESULT,
1716}}
1717RIDL!{#[uuid(0x7d4fb86c, 0x8d34, 0x40e1, 0x8e, 0x83, 0x62, 0xc1, 0x52, 0x04, 0xe3, 0x35)]
1718interface IUIAutomationSpreadsheetItemPattern(IUIAutomationSpreadsheetItemPatternVtbl):
1719        IUnknown(IUnknownVtbl) {
1720    fn get_CurrentFormula(
1721        retVal: *mut BSTR,
1722    ) -> HRESULT,
1723    fn GetCurrentAnnotationObjects(
1724        retVal: *mut *mut IUIAutomationElementArray,
1725    ) -> HRESULT,
1726    fn GetCurrentAnnotationTypes(
1727        retVal: *mut *mut SAFEARRAY,
1728    ) -> HRESULT,
1729    fn get_CachedFormula(
1730        retVal: *mut BSTR,
1731    ) -> HRESULT,
1732    fn GetCachedAnnotationObjects(
1733        retVal: *mut *mut IUIAutomationElementArray,
1734    ) -> HRESULT,
1735    fn GetCachedAnnotationTypes(
1736        retVal: *mut *mut SAFEARRAY,
1737    ) -> HRESULT,
1738}}
1739RIDL!{#[uuid(0x6d74d017, 0x6ecb, 0x4381, 0xb3, 0x8b, 0x3c, 0x17, 0xa4, 0x8f, 0xf1, 0xc2)]
1740interface IUIAutomationTransformPattern2(IUIAutomationTransformPattern2Vtbl):
1741        IUIAutomationTransformPattern(IUIAutomationTransformPatternVtbl) {
1742    fn Zoom(
1743        zoomValue: c_double,
1744    ) -> HRESULT,
1745    fn ZoomByUnit(
1746        zoomUnit: ZoomUnit,
1747    ) -> HRESULT,
1748    fn get_CurrentCanZoom(
1749        retVal: *mut BOOL,
1750    ) -> HRESULT,
1751    fn get_CachedCanZoom(
1752        retVal: *mut BOOL,
1753    ) -> HRESULT,
1754    fn get_CurrentZoomLevel(
1755        retVal: *mut c_double,
1756    ) -> HRESULT,
1757    fn get_CachedZoomLevel(
1758        retVal: *mut c_double,
1759    ) -> HRESULT,
1760    fn get_CurrentZoomMinimum(
1761        retVal: *mut c_double,
1762    ) -> HRESULT,
1763    fn get_CachedZoomMinimum(
1764        retVal: *mut c_double,
1765    ) -> HRESULT,
1766    fn get_CurrentZoomMaximum(
1767        retVal: *mut c_double,
1768    ) -> HRESULT,
1769    fn get_CachedZoomMaximum(
1770        retVal: *mut c_double,
1771    ) -> HRESULT,
1772}}
1773RIDL!{#[uuid(0x6552b038, 0xae05, 0x40c8, 0xab, 0xfd, 0xaa, 0x08, 0x35, 0x2a, 0xab, 0x86)]
1774interface IUIAutomationTextChildPattern(IUIAutomationTextChildPatternVtbl):
1775        IUnknown(IUnknownVtbl) {
1776    fn get_TextContainer(
1777        container: *mut *mut IUIAutomationElement,
1778    ) -> HRESULT,
1779    fn get_TextRange(
1780        range: *mut *mut IUIAutomationTextRange,
1781    ) -> HRESULT,
1782}}
1783RIDL!{#[uuid(0x1dc7b570, 0x1f54, 0x4bad, 0xbc, 0xda, 0xd3, 0x6a, 0x72, 0x2f, 0xb7, 0xbd)]
1784interface IUIAutomationDragPattern(IUIAutomationDragPatternVtbl): IUnknown(IUnknownVtbl) {
1785    fn get_CurrentIsGrabbed(
1786        retVal: *mut BOOL,
1787    ) -> HRESULT,
1788    fn get_CachedIsGrabbed(
1789        retVal: *mut BOOL,
1790    ) -> HRESULT,
1791    fn get_CurrentDropEffect(
1792        retVal: *mut BSTR,
1793    ) -> HRESULT,
1794    fn get_CachedDropEffect(
1795        retVal: *mut BSTR,
1796    ) -> HRESULT,
1797    fn get_CurrentDropEffects(
1798        retVal: *mut *mut SAFEARRAY,
1799    ) -> HRESULT,
1800    fn get_CachedDropEffects(
1801        retVal: *mut *mut SAFEARRAY,
1802    ) -> HRESULT,
1803    fn GetCurrentGrabbedItems(
1804        retVal: *mut *mut IUIAutomationElementArray,
1805    ) -> HRESULT,
1806    fn GetCachedGrabbedItems(
1807        retVal: *mut *mut IUIAutomationElementArray,
1808    ) -> HRESULT,
1809}}
1810RIDL!{#[uuid(0x69a095f7, 0xeee4, 0x430e, 0xa4, 0x6b, 0xfb, 0x73, 0xb1, 0xae, 0x39, 0xa5)]
1811interface IUIAutomationDropTargetPattern(IUIAutomationDropTargetPatternVtbl):
1812        IUnknown(IUnknownVtbl) {
1813    fn get_CurrentDropTargetEffect(
1814        retVal: *mut BSTR,
1815    ) -> HRESULT,
1816    fn get_CachedDropTargetEffect(
1817        retVal: *mut BSTR,
1818    ) -> HRESULT,
1819    fn get_CurrentDropTargetEffects(
1820        retVal: *mut *mut SAFEARRAY,
1821    ) -> HRESULT,
1822    fn get_CachedDropTargetEffects(
1823        retVal: *mut *mut SAFEARRAY,
1824    ) -> HRESULT,
1825}}
1826RIDL!{#[uuid(0x6749c683, 0xf70d, 0x4487, 0xa6, 0x98, 0x5f, 0x79, 0xd5, 0x52, 0x90, 0xd6)]
1827interface IUIAutomationElement2(IUIAutomationElement2Vtbl):
1828        IUIAutomationElement(IUIAutomationElementVtbl) {
1829    fn get_CurrentOptimizeForVisualContent(
1830        retVal: *mut BOOL,
1831    ) -> HRESULT,
1832    fn get_CachedOptimizeForVisualContent(
1833        retVal: *mut BOOL,
1834    ) -> HRESULT,
1835    fn get_CurrentLiveSetting(
1836        retVal: *mut LiveSetting,
1837    ) -> HRESULT,
1838    fn get_CachedLiveSetting(
1839        retVal: *mut LiveSetting,
1840    ) -> HRESULT,
1841    fn get_CurrentFlowsFrom(
1842        retVal: *mut *mut IUIAutomationElementArray,
1843    ) -> HRESULT,
1844    fn get_CachedFlowsFrom(
1845        retVal: *mut *mut IUIAutomationElementArray,
1846    ) -> HRESULT,
1847}}
1848RIDL!{#[uuid(0x8471DF34, 0xAEE0, 0x4A01, 0xA7, 0xDE, 0x7D, 0xB9, 0xAF, 0x12, 0xC2, 0x96)]
1849interface IUIAutomationElement3(IUIAutomationElement3Vtbl):
1850        IUIAutomationElement2(IUIAutomationElement2Vtbl) {
1851    fn ShowContextMenu() -> HRESULT,
1852    fn get_CurrentIsPeripheral(
1853        retVal: *mut BOOL,
1854    ) -> HRESULT,
1855    fn get_CachedIsPeripheral(
1856        retVal: *mut BOOL,
1857    ) -> HRESULT,
1858}}
1859RIDL!{#[uuid(0x3B6E233C, 0x52FB, 0x4063, 0xA4, 0xC9, 0x77, 0xC0, 0x75, 0xC2, 0xA0, 0x6B)]
1860interface IUIAutomationElement4(IUIAutomationElement4Vtbl):
1861        IUIAutomationElement3(IUIAutomationElement3Vtbl) {
1862    fn get_CurrentPositionInSet(
1863        retVal: *mut c_int,
1864    ) -> HRESULT,
1865    fn get_CurrentSizeOfSet(
1866        retVal: *mut c_int,
1867    ) -> HRESULT,
1868    fn get_CurrentLevel(
1869        retVal: *mut c_int,
1870    ) -> HRESULT,
1871    fn get_CurrentAnnotationTypes(
1872        retVal: *mut *mut SAFEARRAY,
1873    ) -> HRESULT,
1874    fn get_CurrentAnnotationObjects(
1875        retVal: *mut *mut IUIAutomationElementArray,
1876    ) -> HRESULT,
1877    fn get_CachedPositionInSet(
1878        retVal: *mut c_int,
1879    ) -> HRESULT,
1880    fn get_CachedSizeOfSet(
1881        retVal: *mut c_int,
1882    ) -> HRESULT,
1883    fn get_CachedLevel(
1884        retVal: *mut c_int,
1885    ) -> HRESULT,
1886    fn get_CachedAnnotationTypes(
1887        retVal: *mut *mut SAFEARRAY,
1888    ) -> HRESULT,
1889    fn get_CachedAnnotationObjects(
1890        retVal: *mut *mut IUIAutomationElementArray,
1891    ) -> HRESULT,
1892}}
1893RIDL!{#[uuid(0x98141C1D, 0x0D0E, 0x4175, 0xBB, 0xE2, 0x6B, 0xFF, 0x45, 0x58, 0x42, 0xA7)]
1894interface IUIAutomationElement5(IUIAutomationElement5Vtbl):
1895        IUIAutomationElement4(IUIAutomationElement4Vtbl) {
1896    fn get_CurrentLandmarkType(
1897        retVal: *mut LANDMARKTYPEID,
1898    ) -> HRESULT,
1899    fn get_CurrentLocalizedLandmarkType(
1900        retVal: *mut BSTR,
1901    ) -> HRESULT,
1902    fn get_CachedLandmarkType(
1903        retVal: *mut LANDMARKTYPEID,
1904    ) -> HRESULT,
1905    fn get_CachedLocalizedLandmarkType(
1906        retVal: *mut BSTR,
1907    ) -> HRESULT,
1908}}
1909RIDL!{#[uuid(0x4780d450, 0x8bca, 0x4977, 0xaf, 0xa5, 0xa4, 0xa5, 0x17, 0xf5, 0x55, 0xe3)]
1910interface IUIAutomationElement6(IUIAutomationElement6Vtbl):
1911        IUIAutomationElement5(IUIAutomationElement5Vtbl) {
1912    fn get_CurrentFullDescription(
1913        retVal: *mut BSTR,
1914    ) -> HRESULT,
1915    fn get_CachedFullDescription(
1916        retVal: *mut BSTR,
1917    ) -> HRESULT,
1918}}
1919RIDL!{#[uuid(0x204e8572, 0xcfc3, 0x4c11, 0xb0, 0xc8, 0x7d, 0xa7, 0x42, 0x07, 0x50, 0xb7)]
1920interface IUIAutomationElement7(IUIAutomationElement7Vtbl):
1921        IUIAutomationElement6(IUIAutomationElement6Vtbl) {
1922    fn FindFirstWithOptions(
1923        scope: TreeScope,
1924        condition: *mut IUIAutomationCondition,
1925        traversalOptions: TreeTraversalOptions,
1926        root: *mut IUIAutomationElement,
1927        found: *mut *mut IUIAutomationElement,
1928    ) -> HRESULT,
1929    fn FindAllWithOptions(
1930        scope: TreeScope,
1931        condition: *mut IUIAutomationCondition,
1932        traversalOptions: TreeTraversalOptions,
1933        root: *mut IUIAutomationElement,
1934        found: *mut *mut IUIAutomationElementArray,
1935    ) -> HRESULT,
1936    fn FindFirstWithOptionsBuildCache(
1937        scope: TreeScope,
1938        condition: *mut IUIAutomationCondition,
1939        cacheRequest: *mut IUIAutomationCacheRequest,
1940        traversalOptions: TreeTraversalOptions,
1941        root: *mut IUIAutomationElement,
1942        found: *mut *mut IUIAutomationElement,
1943    ) -> HRESULT,
1944    fn FindAllWithOptionsBuildCache(
1945        scope: TreeScope,
1946        condition: *mut IUIAutomationCondition,
1947        cacheRequest: *mut IUIAutomationCacheRequest,
1948        traversalOptions: TreeTraversalOptions,
1949        root: *mut IUIAutomationElement,
1950        found: *mut *mut IUIAutomationElementArray,
1951    ) -> HRESULT,
1952    fn GetCurrentMetadataValue(
1953        targetId: c_int,
1954        metadataId: METADATAID,
1955        returnVal: *mut VARIANT,
1956    ) -> HRESULT,
1957}}
1958RIDL!{#[uuid(0x8C60217D, 0x5411, 0x4CDE, 0xBC, 0xC0, 0x1C, 0xED, 0xA2, 0x23, 0x83, 0x0C)]
1959interface IUIAutomationElement8(IUIAutomationElement8Vtbl):
1960        IUIAutomationElement7(IUIAutomationElement7Vtbl) {
1961    fn get_CurrentHeadingLevel(
1962        retVal: *mut HEADINGLEVELID,
1963    ) -> HRESULT,
1964    fn get_CachedHeadingLevel(
1965        retVal: *mut HEADINGLEVELID,
1966    ) -> HRESULT,
1967}}
1968RIDL!{#[uuid(0x39325fac, 0x039d, 0x440e, 0xa3, 0xa3, 0x5e, 0xb8, 0x1a, 0x5c, 0xec, 0xc3)]
1969interface IUIAutomationElement9(IUIAutomationElement9Vtbl):
1970        IUIAutomationElement8(IUIAutomationElement8Vtbl) {
1971    fn get_CurrentIsDialog(
1972        retVal: *mut BOOL,
1973    ) -> HRESULT,
1974    fn get_CachedIsDialog(
1975        retVal: *mut BOOL,
1976    ) -> HRESULT,
1977}}
1978RIDL!{#[uuid(0x85b94ecd, 0x849d, 0x42b6, 0xb9, 0x4d, 0xd6, 0xdb, 0x23, 0xfd, 0xf5, 0xa4)]
1979interface IUIAutomationProxyFactory(IUIAutomationProxyFactoryVtbl): IUnknown(IUnknownVtbl) {
1980    fn CreateProvider(
1981        hwnd: UIA_HWND,
1982        idObject: LONG,
1983        idChild: LONG,
1984        provider: *mut *mut IRawElementProviderSimple,
1985    ) -> HRESULT,
1986    fn get_ProxyFactoryId(
1987        factoryId: *mut BSTR,
1988    ) -> HRESULT,
1989}}
1990RIDL!{#[uuid(0xd50e472e, 0xb64b, 0x490c, 0xbc, 0xa1, 0xd3, 0x06, 0x96, 0xf9, 0xf2, 0x89)]
1991interface IUIAutomationProxyFactoryEntry(IUIAutomationProxyFactoryEntryVtbl):
1992        IUnknown(IUnknownVtbl) {
1993    fn get_ProxyFactory(
1994        factory: *mut *mut IUIAutomationProxyFactory,
1995    ) -> HRESULT,
1996    fn get_ClassName(
1997        className: *mut BSTR,
1998    ) -> HRESULT,
1999    fn get_ImageName(
2000        imageName: *mut BSTR,
2001    ) -> HRESULT,
2002    fn get_AllowSubstringMatch(
2003        allowSubstringMatch: *mut BOOL,
2004    ) -> HRESULT,
2005    fn get_CanCheckBaseClass(
2006        canCheckBaseClass: *mut BOOL,
2007    ) -> HRESULT,
2008    fn get_NeedsAdviseEvents(
2009        adviseEvents: *mut BOOL,
2010    ) -> HRESULT,
2011    fn put_ClassName(
2012        className: LPCWSTR,
2013    ) -> HRESULT,
2014    fn put_ImageName(
2015        imageName: LPCWSTR,
2016    ) -> HRESULT,
2017    fn put_AllowSubstringMatch(
2018        allowSubstringMatch: BOOL,
2019    ) -> HRESULT,
2020    fn put_CanCheckBaseClass(
2021        canCheckBaseClass: BOOL,
2022    ) -> HRESULT,
2023    fn put_NeedsAdviseEvents(
2024        adviseEvents: BOOL,
2025    ) -> HRESULT,
2026    fn SetWinEventsForAutomationEvent(
2027        eventId: EVENTID,
2028        propertyId: PROPERTYID,
2029        winEvents: *mut SAFEARRAY,
2030    ) -> HRESULT,
2031    fn GetWinEventsForAutomationEvent(
2032        eventId: EVENTID,
2033        propertyId: PROPERTYID,
2034        winEvents: *mut *mut SAFEARRAY,
2035    ) -> HRESULT,
2036}}
2037RIDL!{#[uuid(0x09e31e18, 0x872d, 0x4873, 0x93, 0xd1, 0x1e, 0x54, 0x1e, 0xc1, 0x33, 0xfd)]
2038interface IUIAutomationProxyFactoryMapping(IUIAutomationProxyFactoryMappingVtbl):
2039        IUnknown(IUnknownVtbl) {
2040    fn get_Count(
2041        count: *mut UINT,
2042    ) -> HRESULT,
2043    fn GetTable(
2044        table: *mut *mut SAFEARRAY,
2045    ) -> HRESULT,
2046    fn GetEntry(
2047        index: UINT,
2048        entry: *mut *mut IUIAutomationProxyFactoryEntry,
2049    ) -> HRESULT,
2050    fn SetTable(
2051        factoryList: *mut SAFEARRAY,
2052    ) -> HRESULT,
2053    fn InsertEntries(
2054        before: UINT,
2055        factoryList: *mut SAFEARRAY,
2056    ) -> HRESULT,
2057    fn InsertEntry(
2058        before: UINT,
2059        factory: *mut IUIAutomationProxyFactoryEntry,
2060    ) -> HRESULT,
2061    fn RemoveEntry(
2062        index: UINT,
2063    ) -> HRESULT,
2064    fn ClearTable() -> HRESULT,
2065    fn RestoreDefaultTable() -> HRESULT,
2066}}
2067RIDL!{#[uuid(0xC9EE12F2, 0xC13B, 0x4408, 0x99, 0x7C, 0x63, 0x99, 0x14, 0x37, 0x7F, 0x4E)]
2068interface IUIAutomationEventHandlerGroup(IUIAutomationEventHandlerGroupVtbl):
2069        IUnknown(IUnknownVtbl) {
2070    fn AddActiveTextPositionChangedEventHandler(
2071        scope: TreeScope,
2072        cacheRequest: *mut IUIAutomationCacheRequest,
2073        handler: *mut IUIAutomationActiveTextPositionChangedEventHandler,
2074    ) -> HRESULT,
2075    fn AddAutomationEventHandler(
2076        eventId: EVENTID,
2077        scope: TreeScope,
2078        cacheRequest: *mut IUIAutomationCacheRequest,
2079        handler: *mut IUIAutomationEventHandler,
2080    ) -> HRESULT,
2081    fn AddChangesEventHandler(
2082        scope: TreeScope,
2083        changeTypes: *mut c_int,
2084        changesCount: c_int,
2085        cacheRequest: *mut IUIAutomationCacheRequest,
2086        handler: *mut IUIAutomationChangesEventHandler,
2087    ) -> HRESULT,
2088    fn AddNotificationEventHandler(
2089        scope: TreeScope,
2090        cacheRequest: *mut IUIAutomationCacheRequest,
2091        handler: *mut IUIAutomationNotificationEventHandler,
2092    ) -> HRESULT,
2093    fn AddPropertyChangedEventHandler(
2094        scope: TreeScope,
2095        cacheRequest: *mut IUIAutomationCacheRequest,
2096        handler: *mut IUIAutomationPropertyChangedEventHandler,
2097        propertyArray: *mut PROPERTYID,
2098        propertyCount: c_int,
2099    ) -> HRESULT,
2100    fn AddStructureChangedEventHandler(
2101        scope: TreeScope,
2102        cacheRequest: *mut IUIAutomationCacheRequest,
2103        handler: *mut IUIAutomationStructureChangedEventHandler,
2104    ) -> HRESULT,
2105    fn AddTextEditTextChangedEventHandler(
2106        scope: TreeScope,
2107        textEditChangeType: TextEditChangeType,
2108        cacheRequest: *mut IUIAutomationCacheRequest,
2109        handler: *mut IUIAutomationTextEditTextChangedEventHandler,
2110    ) -> HRESULT,
2111}}
2112RIDL!{#[uuid(0x30cbe57d, 0xd9d0, 0x452a, 0xab, 0x13, 0x7a, 0xc5, 0xac, 0x48, 0x25, 0xee)]
2113interface IUIAutomation(IUIAutomationVtbl): IUnknown(IUnknownVtbl) {
2114    fn CompareElements(
2115        el1: *mut IUIAutomationElement,
2116        el2: *mut IUIAutomationElement,
2117        areSame: *mut BOOL,
2118    ) -> HRESULT,
2119    fn CompareRuntimeIds(
2120        runtimeId1: *mut SAFEARRAY,
2121        runtimeId2: *mut SAFEARRAY,
2122        areSame: *mut BOOL,
2123    ) -> HRESULT,
2124    fn GetRootElement(
2125        root: *mut *mut IUIAutomationElement,
2126    ) -> HRESULT,
2127    fn ElementFromHandle(
2128        hwnd: UIA_HWND,
2129        element: *mut *mut IUIAutomationElement,
2130    ) -> HRESULT,
2131    fn ElementFromPoint(
2132        pt: POINT,
2133        element: *mut *mut IUIAutomationElement,
2134    ) -> HRESULT,
2135    fn GetFocusedElement(
2136        element: *mut *mut IUIAutomationElement,
2137    ) -> HRESULT,
2138    fn GetRootElementBuildCache(
2139        cacheRequest: *mut IUIAutomationCacheRequest,
2140        root: *mut *mut IUIAutomationElement,
2141    ) -> HRESULT,
2142    fn ElementFromHandleBuildCache(
2143        hwnd: UIA_HWND,
2144        cacheRequest: *mut IUIAutomationCacheRequest,
2145        element: *mut *mut IUIAutomationElement,
2146    ) -> HRESULT,
2147    fn ElementFromPointBuildCache(
2148        pt: POINT,
2149        cacheRequest: *mut IUIAutomationCacheRequest,
2150        element: *mut *mut IUIAutomationElement,
2151    ) -> HRESULT,
2152    fn GetFocusedElementBuildCache(
2153        cacheRequest: *mut IUIAutomationCacheRequest,
2154        element: *mut *mut IUIAutomationElement,
2155    ) -> HRESULT,
2156    fn CreateTreeWalker(
2157        pCondition: *mut IUIAutomationCondition,
2158        walker: *mut *mut IUIAutomationTreeWalker,
2159    ) -> HRESULT,
2160    fn get_ControlViewWalker(
2161        walker: *mut *mut IUIAutomationTreeWalker,
2162    ) -> HRESULT,
2163    fn get_ContentViewWalker(
2164        walker: *mut *mut IUIAutomationTreeWalker,
2165    ) -> HRESULT,
2166    fn get_RawViewWalker(
2167        walker: *mut *mut IUIAutomationTreeWalker,
2168    ) -> HRESULT,
2169    fn get_RawViewCondition(
2170        condition: *mut *mut IUIAutomationCondition,
2171    ) -> HRESULT,
2172    fn get_ControlViewCondition(
2173        condition: *mut *mut IUIAutomationCondition,
2174    ) -> HRESULT,
2175    fn get_ContentViewCondition(
2176        condition: *mut *mut IUIAutomationCondition,
2177    ) -> HRESULT,
2178    fn CreateCacheRequest(
2179        cacheRequest: *mut *mut IUIAutomationCacheRequest,
2180    ) -> HRESULT,
2181    fn CreateTrueCondition(
2182        newCondition: *mut *mut IUIAutomationCondition,
2183    ) -> HRESULT,
2184    fn CreateFalseCondition(
2185        newCondition: *mut *mut IUIAutomationCondition,
2186    ) -> HRESULT,
2187    fn CreatePropertyCondition(
2188        propertyId: PROPERTYID,
2189        value: VARIANT,
2190        newCondition: *mut *mut IUIAutomationCondition,
2191    ) -> HRESULT,
2192    fn CreatePropertyConditionEx(
2193        propertyId: PROPERTYID,
2194        value: VARIANT,
2195        flags: PropertyConditionFlags,
2196        newCondition: *mut *mut IUIAutomationCondition,
2197    ) -> HRESULT,
2198    fn CreateAndCondition(
2199        condition1: *mut IUIAutomationCondition,
2200        condition2: *mut IUIAutomationCondition,
2201        newCondition: *mut *mut IUIAutomationCondition,
2202    ) -> HRESULT,
2203    fn CreateAndConditionFromArray(
2204        conditions: *mut SAFEARRAY,
2205        newCondition: *mut *mut IUIAutomationCondition,
2206    ) -> HRESULT,
2207    fn CreateAndConditionFromNativeArray(
2208        conditions: *mut *mut IUIAutomationCondition,
2209        conditionCount: c_int,
2210        newCondition: *mut *mut IUIAutomationCondition,
2211    ) -> HRESULT,
2212    fn CreateOrCondition(
2213        condition1: *mut IUIAutomationCondition,
2214        condition2: *mut IUIAutomationCondition,
2215        newCondition: *mut *mut IUIAutomationCondition,
2216    ) -> HRESULT,
2217    fn CreateOrConditionFromArray(
2218        conditions: *mut SAFEARRAY,
2219        newCondition: *mut *mut IUIAutomationCondition,
2220    ) -> HRESULT,
2221    fn CreateOrConditionFromNativeArray(
2222        conditions: *mut *mut IUIAutomationCondition,
2223        conditionCount: c_int,
2224        newCondition: *mut *mut IUIAutomationCondition,
2225    ) -> HRESULT,
2226    fn CreateNotCondition(
2227        condition: *mut IUIAutomationCondition,
2228        newCondition: *mut *mut IUIAutomationCondition,
2229    ) -> HRESULT,
2230    fn AddAutomationEventHandler(
2231        eventId: EVENTID,
2232        element: *mut IUIAutomationElement,
2233        scope: TreeScope,
2234        cacheRequest: *mut IUIAutomationCacheRequest,
2235        handler: *mut IUIAutomationEventHandler,
2236    ) -> HRESULT,
2237    fn RemoveAutomationEventHandler(
2238        eventId: EVENTID,
2239        element: *mut IUIAutomationElement,
2240        handler: *mut IUIAutomationEventHandler,
2241    ) -> HRESULT,
2242    fn AddPropertyChangedEventHandlerNativeArray(
2243        element: *mut IUIAutomationElement,
2244        scope: TreeScope,
2245        cacheRequest: *mut IUIAutomationCacheRequest,
2246        handler: *mut IUIAutomationPropertyChangedEventHandler,
2247        propertyArray: *mut PROPERTYID,
2248        propertyCount: c_int,
2249    ) -> HRESULT,
2250    fn AddPropertyChangedEventHandler(
2251        element: *mut IUIAutomationElement,
2252        scope: TreeScope,
2253        cacheRequest: *mut IUIAutomationCacheRequest,
2254        handler: *mut IUIAutomationPropertyChangedEventHandler,
2255        propertyArray: *mut SAFEARRAY,
2256    ) -> HRESULT,
2257    fn RemovePropertyChangedEventHandler(
2258        element: *mut IUIAutomationElement,
2259        handler: *mut IUIAutomationPropertyChangedEventHandler,
2260    ) -> HRESULT,
2261    fn AddStructureChangedEventHandler(
2262        element: *mut IUIAutomationElement,
2263        scope: TreeScope,
2264        cacheRequest: *mut IUIAutomationCacheRequest,
2265        handler: *mut IUIAutomationStructureChangedEventHandler,
2266    ) -> HRESULT,
2267    fn RemoveStructureChangedEventHandler(
2268        element: *mut IUIAutomationElement,
2269        handler: *mut IUIAutomationStructureChangedEventHandler,
2270    ) -> HRESULT,
2271    fn AddFocusChangedEventHandler(
2272        cacheRequest: *mut IUIAutomationCacheRequest,
2273        handler: *mut IUIAutomationFocusChangedEventHandler,
2274    ) -> HRESULT,
2275    fn RemoveFocusChangedEventHandler(
2276        handler: *mut IUIAutomationFocusChangedEventHandler,
2277    ) -> HRESULT,
2278    fn RemoveAllEventHandlers() -> HRESULT,
2279    fn IntNativeArrayToSafeArray(
2280        array: *mut c_int,
2281        arrayCount: c_int,
2282        safeArray: *mut *mut SAFEARRAY,
2283    ) -> HRESULT,
2284    fn IntSafeArrayToNativeArray(
2285        intArray: *mut SAFEARRAY,
2286        array: *mut *mut c_int,
2287        arrayCount: *mut c_int,
2288    ) -> HRESULT,
2289    fn RectToVariant(
2290        rc: RECT,
2291        var: *mut VARIANT,
2292    ) -> HRESULT,
2293    fn VariantToRect(
2294        var: VARIANT,
2295        rc: *mut RECT,
2296    ) -> HRESULT,
2297    fn SafeArrayToRectNativeArray(
2298        rects: *mut SAFEARRAY,
2299        rectArray: *mut *mut RECT,
2300        rectArrayCount: *mut c_int,
2301    ) -> HRESULT,
2302    fn CreateProxyFactoryEntry(
2303        factory: *mut IUIAutomationProxyFactory,
2304        factoryEntry: *mut *mut IUIAutomationProxyFactoryEntry,
2305    ) -> HRESULT,
2306    fn get_ProxyFactoryMapping(
2307        factoryMapping: *mut *mut IUIAutomationProxyFactoryMapping,
2308    ) -> HRESULT,
2309    fn GetPropertyProgrammaticName(
2310        property: PROPERTYID,
2311        name: *mut BSTR,
2312    ) -> HRESULT,
2313    fn GetPatternProgrammaticName(
2314        pattern: PATTERNID,
2315        name: *mut BSTR,
2316    ) -> HRESULT,
2317    fn PollForPotentialSupportedPatterns(
2318        pElement: *mut IUIAutomationElement,
2319        patternIds: *mut *mut SAFEARRAY,
2320        patternNames: *mut *mut SAFEARRAY,
2321    ) -> HRESULT,
2322    fn PollForPotentialSupportedProperties(
2323        pElement: *mut IUIAutomationElement,
2324        propertyIds: *mut *mut SAFEARRAY,
2325        propertyNames: *mut *mut SAFEARRAY,
2326    ) -> HRESULT,
2327    fn CheckNotSupported(
2328        value: VARIANT,
2329        isNotSupported: *mut BOOL,
2330    ) -> HRESULT,
2331    fn get_ReservedNotSupportedValue(
2332        notSupportedValue: *mut *mut IUnknown,
2333    ) -> HRESULT,
2334    fn get_ReservedMixedAttributeValue(
2335        mixedAttributeValue: *mut *mut IUnknown,
2336    ) -> HRESULT,
2337    fn ElementFromIAccessible(
2338        accessible: *mut IAccessible,
2339        childId: c_int,
2340        element: *mut *mut IUIAutomationElement,
2341    ) -> HRESULT,
2342    fn ElementFromIAccessibleBuildCache(
2343        accessible: *mut IAccessible,
2344        childId: c_int,
2345        cacheRequest: *mut IUIAutomationCacheRequest,
2346        element: *mut *mut IUIAutomationElement,
2347    ) -> HRESULT,
2348}}
2349RIDL!{#[uuid(0x34723aff, 0x0c9d, 0x49d0, 0x98, 0x96, 0x7a, 0xb5, 0x2d, 0xf8, 0xcd, 0x8a)]
2350interface IUIAutomation2(IUIAutomation2Vtbl): IUIAutomation(IUIAutomationVtbl) {
2351    fn get_AutoSetFocus(
2352        autoSetFocus: *mut BOOL,
2353    ) -> HRESULT,
2354    fn put_AutoSetFocus(
2355        autoSetFocus: BOOL,
2356    ) -> HRESULT,
2357    fn get_ConnectionTimeout(
2358        timeout: *mut DWORD,
2359    ) -> HRESULT,
2360    fn put_ConnectionTimeout(
2361        timeout: DWORD,
2362    ) -> HRESULT,
2363    fn get_TransactionTimeout(
2364        timeout: *mut DWORD,
2365    ) -> HRESULT,
2366    fn put_TransactionTimeout(
2367        timeout: DWORD,
2368    ) -> HRESULT,
2369}}
2370RIDL!{#[uuid(0x73D768DA, 0x9B51, 0x4B89, 0x93, 0x6E, 0xC2, 0x09, 0x29, 0x09, 0x73, 0xE7)]
2371interface IUIAutomation3(IUIAutomation3Vtbl): IUIAutomation2(IUIAutomation2Vtbl) {
2372    fn AddTextEditTextChangedEventHandler(
2373        element: *mut IUIAutomationElement,
2374        scope: TreeScope,
2375        textEditChangeType: TextEditChangeType,
2376        cacheRequest: *mut IUIAutomationCacheRequest,
2377        handler: *mut IUIAutomationTextEditTextChangedEventHandler,
2378    ) -> HRESULT,
2379    fn RemoveTextEditTextChangedEventHandler(
2380        element: *mut IUIAutomationElement,
2381        handler: *mut IUIAutomationTextEditTextChangedEventHandler,
2382    ) -> HRESULT,
2383}}
2384RIDL!{#[uuid(0x1189C02A, 0x05F8, 0x4319, 0x8E, 0x21, 0xE8, 0x17, 0xE3, 0xDB, 0x28, 0x60)]
2385interface IUIAutomation4(IUIAutomation4Vtbl): IUIAutomation3(IUIAutomation3Vtbl) {
2386    fn AddChangesEventHandler(
2387        element: *mut IUIAutomationElement,
2388        scope: TreeScope,
2389        changeTypes: *mut c_int,
2390        changesCount: c_int,
2391        pCacheRequest: *mut IUIAutomationCacheRequest,
2392        handler: *mut IUIAutomationChangesEventHandler,
2393    ) -> HRESULT,
2394    fn RemoveChangesEventHandler(
2395        element: *mut IUIAutomationElement,
2396        handler: *mut IUIAutomationChangesEventHandler,
2397    ) -> HRESULT,
2398}}
2399RIDL!{#[uuid(0x25F700C8, 0xD816, 0x4057, 0xA9, 0xDC, 0x3C, 0xBD, 0xEE, 0x77, 0xE2, 0x56)]
2400interface IUIAutomation5(IUIAutomation5Vtbl): IUIAutomation4(IUIAutomation4Vtbl) {
2401    fn AddNotificationEventHandler(
2402        element: *mut IUIAutomationElement,
2403        scope: TreeScope,
2404        cacheRequest: *mut IUIAutomationCacheRequest,
2405        handler: *mut IUIAutomationNotificationEventHandler,
2406    ) -> HRESULT,
2407    fn RemoveNotificationEventHandler(
2408        element: *mut IUIAutomationElement,
2409        handler: *mut IUIAutomationNotificationEventHandler,
2410    ) -> HRESULT,
2411}}
2412RIDL!{#[uuid(0xAAE072DA, 0x29E3, 0x413D, 0x87, 0xA7, 0x19, 0x2D, 0xBF, 0x81, 0xED, 0x10)]
2413interface IUIAutomation6(IUIAutomation6Vtbl): IUIAutomation5(IUIAutomation5Vtbl) {
2414    fn CreateEventHandlerGroup(
2415        handlerGroup: *mut *mut IUIAutomationEventHandlerGroup,
2416    ) -> HRESULT,
2417    fn AddEventHandlerGroup(
2418        element: *mut IUIAutomationElement,
2419        handlerGroup: *mut IUIAutomationEventHandlerGroup,
2420    ) -> HRESULT,
2421    fn RemoveEventHandlerGroup(
2422        element: *mut IUIAutomationElement,
2423        handlerGroup: *mut IUIAutomationEventHandlerGroup,
2424    ) -> HRESULT,
2425    fn get_ConnectionRecoveryBehavior(
2426        connectionRecoveryBehaviorOptions: *mut ConnectionRecoveryBehaviorOptions,
2427    ) -> HRESULT,
2428    fn put_ConnectionRecoveryBehavior(
2429        connectionRecoveryBehaviorOptions: ConnectionRecoveryBehaviorOptions,
2430    ) -> HRESULT,
2431    fn get_CoalesceEvents(
2432        coalesceEventsOptions: *mut CoalesceEventsOptions,
2433    ) -> HRESULT,
2434    fn put_CoalesceEvents(
2435        coalesceEventsOptions: CoalesceEventsOptions,
2436    ) -> HRESULT,
2437    fn AddActiveTextPositionChangedEventHandler(
2438        element: *mut IUIAutomationElement,
2439        scope: TreeScope,
2440        cacheRequest: *mut IUIAutomationCacheRequest,
2441        handler: *mut IUIAutomationActiveTextPositionChangedEventHandler,
2442    ) -> HRESULT,
2443    fn RemoveActiveTextPositionChangedEventHandler(
2444        element: *mut IUIAutomationElement,
2445        handler: *mut IUIAutomationActiveTextPositionChangedEventHandler,
2446    ) -> HRESULT,
2447}}