winapi_ui_automation/um/
uiautomationcore.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 UIAutomationCore.h
7use ctypes::{c_double, c_int, c_long, c_void};
8use shared::guiddef::GUID;
9use shared::minwindef::{BOOL, DWORD, UINT};
10use shared::windef::HWND;
11use shared::winerror::HRESULT;
12use shared::wtypes::BSTR;
13use um::oaidl::{SAFEARRAY, VARIANT};
14use um::oleacc::IAccessible;
15use um::unknwnbase::{IUnknown, IUnknownVtbl};
16use um::winnt::LPCWSTR;
17ENUM!{enum NavigateDirection {
18    NavigateDirection_Parent = 0,
19    NavigateDirection_NextSibling = 1,
20    NavigateDirection_PreviousSibling = 2,
21    NavigateDirection_FirstChild = 3,
22    NavigateDirection_LastChild = 4,
23}}
24ENUM!{enum ProviderOptions {
25    ProviderOptions_ClientSideProvider = 0x1,
26    ProviderOptions_ServerSideProvider = 0x2,
27    ProviderOptions_NonClientAreaProvider = 0x4,
28    ProviderOptions_OverrideProvider = 0x8,
29    ProviderOptions_ProviderOwnsSetFocus = 0x10,
30    ProviderOptions_UseComThreading = 0x20,
31    ProviderOptions_RefuseNonClientSupport = 0x40,
32    ProviderOptions_HasNativeIAccessible = 0x80,
33    ProviderOptions_UseClientCoordinates = 0x100,
34}}
35//DEFINE_ENUM_FLAG_OPERATORS(ProviderOptions);
36ENUM!{enum StructureChangeType {
37    StructureChangeType_ChildAdded = 0,
38    StructureChangeType_ChildRemoved = StructureChangeType_ChildAdded + 1,
39    StructureChangeType_ChildrenInvalidated = StructureChangeType_ChildRemoved + 1,
40    StructureChangeType_ChildrenBulkAdded = StructureChangeType_ChildrenInvalidated + 1,
41    StructureChangeType_ChildrenBulkRemoved = StructureChangeType_ChildrenBulkAdded + 1,
42    StructureChangeType_ChildrenReordered = StructureChangeType_ChildrenBulkRemoved + 1,
43}}
44ENUM!{enum TextEditChangeType {
45    TextEditChangeType_None = 0,
46    TextEditChangeType_AutoCorrect = 1,
47    TextEditChangeType_Composition = 2,
48    TextEditChangeType_CompositionFinalized = 3,
49    TextEditChangeType_AutoComplete = 4,
50}}
51ENUM!{enum OrientationType {
52    OrientationType_None = 0,
53    OrientationType_Horizontal = 1,
54    OrientationType_Vertical = 2,
55}}
56ENUM!{enum DockPosition {
57    DockPosition_Top = 0,
58    DockPosition_Left = 1,
59    DockPosition_Bottom = 2,
60    DockPosition_Right = 3,
61    DockPosition_Fill = 4,
62    DockPosition_None = 5,
63}}
64ENUM!{enum ExpandCollapseState {
65    ExpandCollapseState_Collapsed = 0,
66    ExpandCollapseState_Expanded = 1,
67    ExpandCollapseState_PartiallyExpanded = 2,
68    ExpandCollapseState_LeafNode = 3,
69}}
70ENUM!{enum ScrollAmount {
71    ScrollAmount_LargeDecrement = 0,
72    ScrollAmount_SmallDecrement = 1,
73    ScrollAmount_NoAmount = 2,
74    ScrollAmount_LargeIncrement = 3,
75    ScrollAmount_SmallIncrement = 4,
76}}
77ENUM!{enum RowOrColumnMajor {
78    RowOrColumnMajor_RowMajor = 0,
79    RowOrColumnMajor_ColumnMajor = 1,
80    RowOrColumnMajor_Indeterminate = 2,
81}}
82ENUM!{enum ToggleState {
83    ToggleState_Off = 0,
84    ToggleState_On = 1,
85    ToggleState_Indeterminate = 2,
86}}
87ENUM!{enum WindowVisualState {
88    WindowVisualState_Normal = 0,
89    WindowVisualState_Maximized = 1,
90    WindowVisualState_Minimized = 2,
91}}
92ENUM!{enum SynchronizedInputType {
93    SynchronizedInputType_KeyUp = 0x1,
94    SynchronizedInputType_KeyDown = 0x2,
95    SynchronizedInputType_LeftMouseUp = 0x4,
96    SynchronizedInputType_LeftMouseDown = 0x8,
97    SynchronizedInputType_RightMouseUp = 0x10,
98    SynchronizedInputType_RightMouseDown = 0x20,
99}}
100//DEFINE_ENUM_FLAG_OPERATORS(SynchronizedInputType);
101ENUM!{enum WindowInteractionState {
102    WindowInteractionState_Running = 0,
103    WindowInteractionState_Closing = 1,
104    WindowInteractionState_ReadyForUserInteraction = 2,
105    WindowInteractionState_BlockedByModalWindow = 3,
106    WindowInteractionState_NotResponding = 4,
107}}
108ENUM!{enum SayAsInterpretAs {
109    SayAsInterpretAs_None = 0,
110    SayAsInterpretAs_Spell = 1,
111    SayAsInterpretAs_Cardinal = 2,
112    SayAsInterpretAs_Ordinal = 3,
113    SayAsInterpretAs_Number = 4,
114    SayAsInterpretAs_Date = 5,
115    SayAsInterpretAs_Time = 6,
116    SayAsInterpretAs_Telephone = 7,
117    SayAsInterpretAs_Currency = 8,
118    SayAsInterpretAs_Net = 9,
119    SayAsInterpretAs_Url = 10,
120    SayAsInterpretAs_Address = 11,
121    SayAsInterpretAs_Alphanumeric = 12,
122    SayAsInterpretAs_Name = 13,
123    SayAsInterpretAs_Media = 14,
124    SayAsInterpretAs_Date_MonthDayYear = 15,
125    SayAsInterpretAs_Date_DayMonthYear = 16,
126    SayAsInterpretAs_Date_YearMonthDay = 17,
127    SayAsInterpretAs_Date_YearMonth = 18,
128    SayAsInterpretAs_Date_MonthYear = 19,
129    SayAsInterpretAs_Date_DayMonth = 20,
130    SayAsInterpretAs_Date_MonthDay = 21,
131    SayAsInterpretAs_Date_Year = 22,
132    SayAsInterpretAs_Time_HoursMinutesSeconds12 = 23,
133    SayAsInterpretAs_Time_HoursMinutes12 = 24,
134    SayAsInterpretAs_Time_HoursMinutesSeconds24 = 25,
135    SayAsInterpretAs_Time_HoursMinutes24 = 26,
136}}
137ENUM!{enum TextUnit {
138    TextUnit_Character = 0,
139    TextUnit_Format = 1,
140    TextUnit_Word = 2,
141    TextUnit_Line = 3,
142    TextUnit_Paragraph = 4,
143    TextUnit_Page = 5,
144    TextUnit_Document = 6,
145}}
146ENUM!{enum TextPatternRangeEndpoint {
147    TextPatternRangeEndpoint_Start = 0,
148    TextPatternRangeEndpoint_End = 1,
149}}
150ENUM!{enum SupportedTextSelection {
151    SupportedTextSelection_None = 0,
152    SupportedTextSelection_Single = 1,
153    SupportedTextSelection_Multiple = 2,
154}}
155ENUM!{enum LiveSetting {
156    Off = 0,
157    Polite = 1,
158    Assertive = 2,
159}}
160ENUM!{enum ActiveEnd {
161    ActiveEnd_None = 0,
162    ActiveEnd_Start = 1,
163    ActiveEnd_End = 2,
164}}
165ENUM!{enum CaretPosition {
166    CaretPosition_Unknown = 0,
167    CaretPosition_EndOfLine = 1,
168    CaretPosition_BeginningOfLine = 2,
169}}
170ENUM!{enum CaretBidiMode {
171    CaretBidiMode_LTR = 0,
172    CaretBidiMode_RTL = 1,
173}}
174ENUM!{enum ZoomUnit {
175    ZoomUnit_NoAmount = 0,
176    ZoomUnit_LargeDecrement = 1,
177    ZoomUnit_SmallDecrement = 2,
178    ZoomUnit_LargeIncrement = 3,
179    ZoomUnit_SmallIncrement = 4,
180}}
181pub type AnimationStyle = i32;
182pub const AnimationStyle_None: AnimationStyle = 0;
183pub const AnimationStyle_LasVegasLights: AnimationStyle = 1;
184pub const AnimationStyle_BlinkingBackground: AnimationStyle = 2;
185pub const AnimationStyle_SparkleText: AnimationStyle = 3;
186pub const AnimationStyle_MarchingBlackAnts: AnimationStyle = 4;
187pub const AnimationStyle_MarchingRedAnts: AnimationStyle = 5;
188pub const AnimationStyle_Shimmer: AnimationStyle = 6;
189pub const AnimationStyle_Other: AnimationStyle = -1;
190pub type BulletStyle = i32;
191pub const BulletStyle_None: BulletStyle = 0;
192pub const BulletStyle_HollowRoundBullet: BulletStyle = 1;
193pub const BulletStyle_FilledRoundBullet: BulletStyle = 2;
194pub const BulletStyle_HollowSquareBullet: BulletStyle = 3;
195pub const BulletStyle_FilledSquareBullet: BulletStyle = 4;
196pub const BulletStyle_DashBullet: BulletStyle = 5;
197pub const BulletStyle_Other: BulletStyle = -1;
198pub type CapStyle = i32;
199pub const CapStyle_None: CapStyle = 0;
200pub const CapStyle_SmallCap: CapStyle = 1;
201pub const CapStyle_AllCap: CapStyle = 2;
202pub const CapStyle_AllPetiteCaps: CapStyle = 3;
203pub const CapStyle_PetiteCaps: CapStyle = 4;
204pub const CapStyle_Unicase: CapStyle = 5;
205pub const CapStyle_Titling: CapStyle = 6;
206pub const CapStyle_Other: CapStyle = -1;
207ENUM!{enum FillType {
208    FillType_None = 0,
209    FillType_Color = 1,
210    FillType_Gradient = 2,
211    FillType_Picture = 3,
212    FillType_Pattern = 4,
213}}
214ENUM!{enum FlowDirections {
215    FlowDirections_Default = 0,
216    FlowDirections_RightToLeft = 0x1,
217    FlowDirections_BottomToTop = 0x2,
218    FlowDirections_Vertical = 0x4,
219}}
220ENUM!{enum HorizontalTextAlignment {
221    HorizontalTextAlignment_Left = 0,
222    HorizontalTextAlignment_Centered = 1,
223    HorizontalTextAlignment_Right = 2,
224    HorizontalTextAlignment_Justified = 3,
225}}
226ENUM!{enum OutlineStyles {
227    OutlineStyles_None = 0,
228    OutlineStyles_Outline = 1,
229    OutlineStyles_Shadow = 2,
230    OutlineStyles_Engraved = 4,
231    OutlineStyles_Embossed = 8,
232}}
233pub type TextDecorationLineStyle = i32;
234pub const TextDecorationLineStyle_None: TextDecorationLineStyle = 0;
235pub const TextDecorationLineStyle_Single: TextDecorationLineStyle = 1;
236pub const TextDecorationLineStyle_WordsOnly: TextDecorationLineStyle = 2;
237pub const TextDecorationLineStyle_Double: TextDecorationLineStyle = 3;
238pub const TextDecorationLineStyle_Dot: TextDecorationLineStyle = 4;
239pub const TextDecorationLineStyle_Dash: TextDecorationLineStyle = 5;
240pub const TextDecorationLineStyle_DashDot: TextDecorationLineStyle = 6;
241pub const TextDecorationLineStyle_DashDotDot: TextDecorationLineStyle = 7;
242pub const TextDecorationLineStyle_Wavy: TextDecorationLineStyle = 8;
243pub const TextDecorationLineStyle_ThickSingle: TextDecorationLineStyle = 9;
244pub const TextDecorationLineStyle_DoubleWavy: TextDecorationLineStyle = 11;
245pub const TextDecorationLineStyle_ThickWavy: TextDecorationLineStyle = 12;
246pub const TextDecorationLineStyle_LongDash: TextDecorationLineStyle = 13;
247pub const TextDecorationLineStyle_ThickDash: TextDecorationLineStyle = 14;
248pub const TextDecorationLineStyle_ThickDashDot: TextDecorationLineStyle = 15;
249pub const TextDecorationLineStyle_ThickDashDotDot: TextDecorationLineStyle = 16;
250pub const TextDecorationLineStyle_ThickDot: TextDecorationLineStyle = 17;
251pub const TextDecorationLineStyle_ThickLongDash: TextDecorationLineStyle = 18;
252pub const TextDecorationLineStyle_Other: TextDecorationLineStyle = -1;
253ENUM!{enum VisualEffects {
254    VisualEffects_None = 0,
255    VisualEffects_Shadow = 1 << 0,
256    VisualEffects_Reflection = 1 << 1,
257    VisualEffects_Glow = 1 << 2,
258    VisualEffects_SoftEdges = 1 << 3,
259    VisualEffects_Bevel = 1 << 4,
260}}
261ENUM!{enum NotificationProcessing {
262    NotificationProcessing_ImportantAll = 0,
263    NotificationProcessing_ImportantMostRecent = 1,
264    NotificationProcessing_All = 2,
265    NotificationProcessing_MostRecent = 3,
266    NotificationProcessing_CurrentThenMostRecent = 4,
267}}
268ENUM!{enum NotificationKind {
269    NotificationKind_ItemAdded = 0,
270    NotificationKind_ItemRemoved = 1,
271    NotificationKind_ActionCompleted = 2,
272    NotificationKind_ActionAborted = 3,
273    NotificationKind_Other = 4,
274}}
275pub type PROPERTYID = c_int;
276pub type PATTERNID = c_int;
277pub type EVENTID = c_int;
278pub type TEXTATTRIBUTEID = c_int;
279pub type CONTROLTYPEID = c_int;
280pub type LANDMARKTYPEID = c_int;
281pub type METADATAID = c_int;
282pub type HEADINGLEVELID = c_int;
283STRUCT!{struct UiaRect {
284    left: c_double,
285    top: c_double,
286    width: c_double,
287    height: c_double,
288}}
289STRUCT!{struct UiaPoint {
290    x: c_double,
291    y: c_double,
292}}
293STRUCT!{struct UiaChangeInfo {
294    uiaId: c_int,
295    payload: VARIANT,
296    extraInfo: VARIANT,
297}}
298ENUM!{enum UIAutomationType {
299    UIAutomationType_Int = 0x1,
300    UIAutomationType_Bool = 0x2,
301    UIAutomationType_String = 0x3,
302    UIAutomationType_Double = 0x4,
303    UIAutomationType_Point = 0x5,
304    UIAutomationType_Rect = 0x6,
305    UIAutomationType_Element = 0x7,
306    UIAutomationType_Array = 0x10000,
307    UIAutomationType_Out = 0x20000,
308    UIAutomationType_IntArray = UIAutomationType_Int | UIAutomationType_Array,
309    UIAutomationType_BoolArray = UIAutomationType_Bool | UIAutomationType_Array,
310    UIAutomationType_StringArray = UIAutomationType_String | UIAutomationType_Array,
311    UIAutomationType_DoubleArray = UIAutomationType_Double | UIAutomationType_Array,
312    UIAutomationType_PointArray = UIAutomationType_Point | UIAutomationType_Array,
313    UIAutomationType_RectArray = UIAutomationType_Rect | UIAutomationType_Array,
314    UIAutomationType_ElementArray = UIAutomationType_Element | UIAutomationType_Array,
315    UIAutomationType_OutInt = UIAutomationType_Int | UIAutomationType_Out,
316    UIAutomationType_OutBool = UIAutomationType_Bool | UIAutomationType_Out,
317    UIAutomationType_OutString = UIAutomationType_String | UIAutomationType_Out,
318    UIAutomationType_OutDouble = UIAutomationType_Double | UIAutomationType_Out,
319    UIAutomationType_OutPoint = UIAutomationType_Point | UIAutomationType_Out,
320    UIAutomationType_OutRect = UIAutomationType_Rect | UIAutomationType_Out,
321    UIAutomationType_OutElement = UIAutomationType_Element | UIAutomationType_Out,
322    UIAutomationType_OutIntArray = (UIAutomationType_Int | UIAutomationType_Array)
323        | UIAutomationType_Out,
324    UIAutomationType_OutBoolArray = (UIAutomationType_Bool | UIAutomationType_Array)
325        | UIAutomationType_Out,
326    UIAutomationType_OutStringArray = (UIAutomationType_String | UIAutomationType_Array)
327        | UIAutomationType_Out,
328    UIAutomationType_OutDoubleArray = (UIAutomationType_Double | UIAutomationType_Array)
329        | UIAutomationType_Out,
330    UIAutomationType_OutPointArray = (UIAutomationType_Point | UIAutomationType_Array)
331        | UIAutomationType_Out,
332    UIAutomationType_OutRectArray = (UIAutomationType_Rect | UIAutomationType_Array)
333        | UIAutomationType_Out,
334    UIAutomationType_OutElementArray = (UIAutomationType_Element | UIAutomationType_Array)
335        | UIAutomationType_Out,
336}}
337//DEFINE_ENUM_FLAG_OPERATORS(UIAutomationType);
338STRUCT!{struct UIAutomationParameter {
339    type_: UIAutomationType,
340    pData: *mut c_void,
341}}
342STRUCT!{struct UIAutomationPropertyInfo {
343    guid: GUID,
344    pProgrammaticName: LPCWSTR,
345    type_: UIAutomationType,
346}}
347STRUCT!{struct UIAutomationEventInfo {
348    guid: GUID,
349    pProgrammaticName: LPCWSTR,
350}}
351STRUCT!{struct UIAutomationMethodInfo {
352    pProgrammaticName: LPCWSTR,
353    doSetFocus: BOOL,
354    cInParameters: UINT,
355    cOutParameters: UINT,
356    pParameterTypes: *mut UIAutomationType,
357    pParameterNames: *mut LPCWSTR,
358}}
359STRUCT!{struct UIAutomationPatternInfo {
360    guid: GUID,
361    pProgrammaticName: LPCWSTR,
362    providerInterfaceId: GUID,
363    clientInterfaceId: GUID,
364    cProperties: UINT,
365    pProperties: *mut UIAutomationPropertyInfo,
366    cMethods: UINT,
367    pMethods: *mut UIAutomationMethodInfo,
368    cEvents: UINT,
369    pEvents: *mut UIAutomationEventInfo,
370    pPatternHandler: *mut IUIAutomationPatternHandler,
371}}
372pub const UIA_ScrollPatternNoScroll: c_double = -1.0;
373RIDL!{#[uuid(0xd6dd68d1, 0x86fd, 0x4332, 0x86, 0x66, 0x9a, 0xbe, 0xde, 0xa2, 0xd2, 0x4c)]
374interface IRawElementProviderSimple(IRawElementProviderSimpleVtbl): IUnknown(IUnknownVtbl) {
375    fn get_ProviderOptions(
376        pRetVal: *mut ProviderOptions,
377    ) -> HRESULT,
378    fn GetPatternProvider(
379        patternId: PATTERNID,
380        pRetVal: *mut *mut IUnknown,
381    ) -> HRESULT,
382    fn GetPropertyValue(
383        propertyId: PROPERTYID,
384        pRetVal: *mut *mut VARIANT,
385    ) -> HRESULT,
386    fn get_HostRawElementProvider(
387        pRetVal: *mut *mut IRawElementProviderSimple,
388    ) -> HRESULT,
389}}
390RIDL!{#[uuid(0xf8b80ada, 0x2c44, 0x48d0, 0x89, 0xbe, 0x5f, 0xf2, 0x3c, 0x9c, 0xd8, 0x75)]
391interface IAccessibleEx(IAccessibleExVtbl): IUnknown(IUnknownVtbl) {
392    fn GetObjectForChild(
393        idChild: c_long,
394        pRetVal: *mut *mut IAccessibleEx,
395    ) -> HRESULT,
396    fn GetIAccessiblePair(
397        ppAcc: *mut *mut IAccessible,
398        pidChild: *mut c_long,
399    ) -> HRESULT,
400    fn GetRuntimeId(
401        pRetVal: *mut *mut SAFEARRAY,
402    ) -> HRESULT,
403    fn ConvertReturnedElement (
404        pIn: *mut IRawElementProviderSimple,
405        ppRetValOut: *mut *mut IAccessibleEx,
406    ) -> HRESULT,
407}}
408RIDL!{#[uuid(0xa0a839a9, 0x8da1, 0x4a82, 0x80, 0x6a, 0x8e, 0x0d, 0x44, 0xe7, 0x9f, 0x56)]
409interface IRawElementProviderSimple2(IRawElementProviderSimple2Vtbl):
410        IRawElementProviderSimple(IRawElementProviderSimpleVtbl) {
411    fn ShowContextMenu() -> HRESULT,
412}}
413RIDL!{#[uuid(0xfcf5d820, 0xd7ec, 0x4613, 0xbd, 0xf6, 0x42, 0xa8, 0x4c, 0xe7, 0xda, 0xaf)]
414interface IRawElementProviderSimple3(IRawElementProviderSimple3Vtbl):
415        IRawElementProviderSimple2(IRawElementProviderSimple2Vtbl) {
416    fn GetMetadataValue(
417        targetId: c_int,
418        metadataId: METADATAID,
419        returnVal: *mut VARIANT,
420    ) -> HRESULT,
421}}
422RIDL!{#[uuid(0x620ce2a5, 0xab8f, 0x40a9, 0x86, 0xcb, 0xde, 0x3c, 0x75, 0x59, 0x9b, 0x58)]
423interface IRawElementProviderFragmentRoot(IRawElementProviderFragmentRootVtbl):
424        IUnknown(IUnknownVtbl) {
425    fn ElementProviderFromPoint(
426        x: c_double,
427        y: c_double,
428        pRetVal: *mut *mut IRawElementProviderFragment,
429    ) -> HRESULT,
430    fn GetFocus(
431        pRetVal: *mut *mut IRawElementProviderFragment,
432    ) -> HRESULT,
433}}
434RIDL!{#[uuid(0xf7063da8, 0x8359, 0x439c, 0x92, 0x97, 0xbb, 0xc5, 0x29, 0x9a, 0x7d, 0x87)]
435interface IRawElementProviderFragment(IRawElementProviderFragmentVtbl): IUnknown(IUnknownVtbl) {
436    fn Navigate(
437        direction: NavigateDirection,
438        pRetVal: *mut *mut IRawElementProviderFragment,
439    ) -> HRESULT,
440    fn GetRuntimeId(
441        pRetVal: *mut *mut SAFEARRAY,
442    ) -> HRESULT,
443    fn get_BoundingRectangle(
444        pRetVal: *mut UiaRect,
445    ) -> HRESULT,
446    fn GetEmbeddedFragmentRoots(
447        pRetVal: *mut *mut SAFEARRAY,
448    ) -> HRESULT,
449    fn SetFocus() -> HRESULT,
450    fn get_FragmentRoot(
451        pRetVal: *mut *mut IRawElementProviderFragmentRoot,
452    ) -> HRESULT,
453}}
454RIDL!{#[uuid(0xa407b27b, 0x0f6d, 0x4427, 0x92, 0x92, 0x47, 0x3c, 0x7b, 0xf9, 0x32, 0x58)]
455interface IRawElementProviderAdviseEvents(IRawElementProviderAdviseEventsVtbl):
456        IUnknown(IUnknownVtbl) {
457    fn AdviseEventAdded(
458        eventId: EVENTID,
459        propertyIDs: *mut SAFEARRAY,
460    ) -> HRESULT,
461    fn AdviseEventRemoved(
462        eventId: EVENTID,
463        propertyIDs: *mut SAFEARRAY,
464    ) -> HRESULT,
465}}
466RIDL!{#[uuid(0x1d5df27c, 0x8947, 0x4425, 0xb8, 0xd9, 0x79, 0x78, 0x7b, 0xb4, 0x60, 0xb8)]
467interface IRawElementProviderHwndOverride(IRawElementProviderHwndOverrideVtbl):
468        IUnknown(IUnknownVtbl) {
469    fn GetOverrideProviderForHwnd(
470        hwnd: HWND,
471        pRetVal: *mut *mut IRawElementProviderSimple,
472    ) -> HRESULT,
473}}
474RIDL!{#[uuid(0x4fd82b78, 0xa43e, 0x46ac, 0x98, 0x03, 0x0a, 0x69, 0x69, 0xc7, 0xc1, 0x83)]
475interface IProxyProviderWinEventSink(IProxyProviderWinEventSinkVtbl): IUnknown(IUnknownVtbl) {
476    fn AddAutomationPropertyChangedEvent(
477        pProvider: *mut IRawElementProviderSimple,
478        id: PROPERTYID,
479        newValue: VARIANT,
480    ) -> HRESULT,
481    fn AddAutomationEvent(
482        pProvider: *mut IRawElementProviderSimple,
483        id: EVENTID,
484    ) -> HRESULT,
485    fn AddStructureChangedEvent(
486        pProvider: *mut IRawElementProviderSimple,
487        structureChangeType: StructureChangeType,
488        runtimeId: *mut SAFEARRAY,
489    ) -> HRESULT,
490}}
491RIDL!{#[uuid(0x89592ad4, 0xf4e0, 0x43d5, 0xa3, 0xb6, 0xba, 0xd7, 0xe1, 0x11, 0xb4, 0x35)]
492interface IProxyProviderWinEventHandler(IProxyProviderWinEventHandlerVtbl):
493        IUnknown(IUnknownVtbl) {
494    fn RespondToWinEvent(
495        idWinEvent: DWORD,
496        hwnd: HWND,
497        idObject: c_long,
498        idChild: c_long,
499        pSink: *mut IProxyProviderWinEventSink,
500    ) -> HRESULT,
501}}
502RIDL!{#[uuid(0x0a2a93cc, 0xbfad, 0x42ac, 0x9b, 0x2e, 0x09, 0x91, 0xfb, 0x0d, 0x3e, 0xa0)]
503interface IRawElementProviderWindowlessSite(IRawElementProviderWindowlessSiteVtbl):
504        IUnknown(IUnknownVtbl) {
505    fn GetAdjacentFragment(
506        direction: NavigateDirection,
507        ppParent: *mut *mut IRawElementProviderFragment,
508    ) -> HRESULT,
509    fn GetRuntimeIdPrefix(
510        pRetVal: *mut *mut SAFEARRAY,
511    ) -> HRESULT,
512}}
513RIDL!{#[uuid(0x33ac331b, 0x943e, 0x4020, 0xb2, 0x95, 0xdb, 0x37, 0x78, 0x49, 0x74, 0xa3)]
514interface IAccessibleHostingElementProviders(IAccessibleHostingElementProvidersVtbl):
515        IUnknown(IUnknownVtbl) {
516    fn GetEmbeddedFragmentRoots(
517        pRetVal: *mut *mut SAFEARRAY,
518    ) -> HRESULT,
519    fn GetObjectIdForProvider(
520        pProvider: *mut IRawElementProviderSimple,
521        pidObject: *mut c_long,
522    ) -> HRESULT,
523}}
524RIDL!{#[uuid(0x24be0b07, 0xd37d, 0x487a, 0x98, 0xcf, 0xa1, 0x3e, 0xd4, 0x65, 0xe9, 0xb3)]
525interface IRawElementProviderHostingAccessibles(IRawElementProviderHostingAccessiblesVtbl):
526        IUnknown(IUnknownVtbl) {
527    fn GetEmbeddedAccessibles(
528        pRetVal: *mut *mut SAFEARRAY,
529    ) -> HRESULT,
530}}
531RIDL!{#[uuid(0x159bc72c, 0x4ad3, 0x485e, 0x96, 0x37, 0xd7, 0x05, 0x2e, 0xdf, 0x01, 0x46)]
532interface IDockProvider(IDockProviderVtbl): IUnknown(IUnknownVtbl) {
533    fn SetDockPosition(
534        dockPosition: DockPosition,
535    ) -> HRESULT,
536    fn get_DockPosition(
537        pRetVal: *mut DockPosition,
538    ) -> HRESULT,
539}}
540RIDL!{#[uuid(0xd847d3a5, 0xcab0, 0x4a98, 0x8c, 0x32, 0xec, 0xb4, 0x5c, 0x59, 0xad, 0x24)]
541interface IExpandCollapseProvider(IExpandCollapseProviderVtbl): IUnknown(IUnknownVtbl) {
542    fn Expand() -> HRESULT,
543    fn Collapse() -> HRESULT,
544    fn get_ExpandCollapseState(
545        pRetVal: *mut ExpandCollapseState,
546    ) -> HRESULT,
547}}
548RIDL!{#[uuid(0xb17d6187, 0x0907, 0x464b, 0xa1, 0x68, 0x0e, 0xf1, 0x7a, 0x15, 0x72, 0xb1)]
549interface IGridProvider(IGridProviderVtbl): IUnknown(IUnknownVtbl) {
550    fn GetItem(
551        row: c_int,
552        column: c_int,
553        pRetVal: *mut *mut IRawElementProviderSimple,
554    ) -> HRESULT,
555    fn get_RowCount(
556        pRetVal: *mut c_int,
557    ) -> HRESULT,
558    fn get_ColumnCount(
559        pRetVal: *mut c_int,
560    ) -> HRESULT,
561}}
562RIDL!{#[uuid(0xd02541f1, 0xfb81, 0x4d64, 0xae, 0x32, 0xf5, 0x20, 0xf8, 0xa6, 0xdb, 0xd1)]
563interface IGridItemProvider(IGridItemProviderVtbl): IUnknown(IUnknownVtbl) {
564    fn get_Row(
565        pRetVal: *mut c_int,
566    ) -> HRESULT,
567    fn get_Column(
568        pRetVal: *mut c_int,
569    ) -> HRESULT,
570    fn get_RowSpan(
571        pRetVal: *mut c_int,
572    ) -> HRESULT,
573    fn get_ColumnSpan(
574        pRetVal: *mut c_int,
575    ) -> HRESULT,
576    fn get_ContainingGrid(
577        pRetVal: *mut *mut IRawElementProviderSimple,
578    ) -> HRESULT,
579}}
580RIDL!{#[uuid(0x54fcb24b, 0xe18e, 0x47a2, 0xb4, 0xd3, 0xec, 0xcb, 0xe7, 0x75, 0x99, 0xa2)]
581interface IInvokeProvider(IInvokeProviderVtbl): IUnknown(IUnknownVtbl) {
582    fn Invoke() -> HRESULT,
583}}
584RIDL!{#[uuid(0x6278cab1, 0xb556, 0x4a1a, 0xb4, 0xe0, 0x41, 0x8a, 0xcc, 0x52, 0x32, 0x01)]
585interface IMultipleViewProvider(IMultipleViewProviderVtbl): IUnknown(IUnknownVtbl) {
586    fn GetViewName(
587        viewId: c_int,
588        pRetVal: *mut BSTR,
589    ) -> HRESULT,
590    fn SetCurrentView(
591        viewId: c_int,
592    ) -> HRESULT,
593    fn get_CurrentView(
594        pRetVal: *mut c_int,
595    ) -> HRESULT,
596    fn GetSupportedViews(
597        pRetVal: *mut *mut SAFEARRAY,
598    ) -> HRESULT,
599}}
600RIDL!{#[uuid(0x36dc7aef, 0x33e6, 0x4691, 0xaf, 0xe1, 0x2b, 0xe7, 0x27, 0x4b, 0x3d, 0x33)]
601interface IRangeValueProvider(IRangeValueProviderVtbl): IUnknown(IUnknownVtbl) {
602    fn SetValue(
603        val: c_double,
604    ) -> HRESULT,
605    fn get_Value(
606        pRetVal: *mut c_double,
607    ) -> HRESULT,
608    fn get_IsReadOnly(
609        pRetVal: *mut BOOL,
610    ) -> HRESULT,
611    fn get_Maximum(
612        pRetVal: *mut c_double,
613    ) -> HRESULT,
614    fn get_Minimum(
615        pRetVal: *mut c_double,
616    ) -> HRESULT,
617    fn get_LargeChange(
618        pRetVal: *mut c_double,
619    ) -> HRESULT,
620    fn get_SmallChange(
621        pRetVal: *mut c_double,
622    ) -> HRESULT,
623}}
624RIDL!{#[uuid(0x2360c714, 0x4bf1, 0x4b26, 0xba, 0x65, 0x9b, 0x21, 0x31, 0x61, 0x27, 0xeb)]
625interface IScrollItemProvider(IScrollItemProviderVtbl): IUnknown(IUnknownVtbl) {
626    fn ScrollIntoView() -> HRESULT,
627}}
628RIDL!{#[uuid(0xfb8b03af, 0x3bdf, 0x48d4, 0xbd, 0x36, 0x1a, 0x65, 0x79, 0x3b, 0xe1, 0x68)]
629interface ISelectionProvider(ISelectionProviderVtbl): IUnknown(IUnknownVtbl) {
630    fn GetSelection(
631        pRetVal: *mut *mut SAFEARRAY,
632    ) -> HRESULT,
633    fn get_CanSelectMultiple(
634        pRetVal: *mut BOOL,
635    ) -> HRESULT,
636    fn get_IsSelectionRequired(
637        pRetVal: *mut BOOL,
638    ) -> HRESULT,
639}}
640RIDL!{#[uuid(0x14f68475, 0xee1c, 0x44f6, 0xa8, 0x69, 0xd2, 0x39, 0x38, 0x1f, 0x0f, 0xe7)]
641interface ISelectionProvider2(ISelectionProvider2Vtbl):
642        ISelectionProvider(ISelectionProviderVtbl) {
643    fn get_FirstSelectedItem(
644        retVal: *mut *mut IRawElementProviderSimple,
645    ) -> HRESULT,
646    fn get_LastSelectedItem(
647        retVal: *mut *mut IRawElementProviderSimple,
648    ) -> HRESULT,
649    fn get_CurrentSelectedItem(
650        retVal: *mut *mut IRawElementProviderSimple,
651    ) -> HRESULT,
652    fn get_ItemCount(
653        retVal: *mut c_int,
654    ) -> HRESULT,
655}}
656RIDL!{#[uuid(0xb38b8077, 0x1fc3, 0x42a5, 0x8c, 0xae, 0xd4, 0x0c, 0x22, 0x15, 0x05, 0x5a)]
657interface IScrollProvider(IScrollProviderVtbl): IUnknown(IUnknownVtbl) {
658    fn Scroll(
659        horizontalAmount: ScrollAmount,
660        verticalAmount: ScrollAmount,
661    ) -> HRESULT,
662    fn SetScrollPercent(
663        horizontalPercent: c_double,
664        verticalPercent: c_double,
665    ) -> HRESULT,
666    fn get_HorizontalScrollPercent(
667        pRetVal: *mut c_double,
668    ) -> HRESULT,
669    fn get_VerticalScrollPercent(
670        pRetVal: *mut c_double,
671    ) -> HRESULT,
672    fn get_HorizontalViewSize(
673        pRetVal: *mut c_double,
674    ) -> HRESULT,
675    fn get_VerticalViewSize(
676        pRetVal: *mut c_double,
677    ) -> HRESULT,
678    fn get_HorizontallyScrollable(
679        pRetVal: *mut BOOL,
680    ) -> HRESULT,
681    fn get_VerticallyScrollable(
682        pRetVal: *mut BOOL,
683    ) -> HRESULT,
684}}
685RIDL!{#[uuid(0x2acad808, 0xb2d4, 0x452d, 0xa4, 0x07, 0x91, 0xff, 0x1a, 0xd1, 0x67, 0xb2)]
686interface ISelectionItemProvider(ISelectionItemProviderVtbl): IUnknown(IUnknownVtbl) {
687    fn Select() -> HRESULT,
688    fn AddToSelection() -> HRESULT,
689    fn RemoveFromSelection() -> HRESULT,
690    fn get_IsSelected(
691        pRetVal: *mut BOOL,
692    ) -> HRESULT,
693    fn get_SelectionContainer(
694        pRetVal: *mut *mut IRawElementProviderSimple,
695    ) -> HRESULT,
696}}
697RIDL!{#[uuid(0x29db1a06, 0x02ce, 0x4cf7, 0x9b, 0x42, 0x56, 0x5d, 0x4f, 0xab, 0x20, 0xee)]
698interface ISynchronizedInputProvider(ISynchronizedInputProviderVtbl): IUnknown(IUnknownVtbl) {
699    fn StartListening(
700        inputType: SynchronizedInputType,
701    ) -> HRESULT,
702    fn Cancel() -> HRESULT,
703}}
704RIDL!{#[uuid(0x9c860395, 0x97b3, 0x490a, 0xb5, 0x2a, 0x85, 0x8c, 0xc2, 0x2a, 0xf1, 0x66)]
705interface ITableProvider(ITableProviderVtbl): IUnknown(IUnknownVtbl) {
706    fn GetRowHeaders(
707        pRetVal: *mut *mut SAFEARRAY,
708    ) -> HRESULT,
709    fn GetColumnHeaders(
710        pRetVal: *mut *mut SAFEARRAY,
711    ) -> HRESULT,
712    fn get_RowOrColumnMajor(
713        pRetVal: *mut RowOrColumnMajor,
714    ) -> HRESULT,
715}}
716RIDL!{#[uuid(0xb9734fa6, 0x771f, 0x4d78, 0x9c, 0x90, 0x25, 0x17, 0x99, 0x93, 0x49, 0xcd)]
717interface ITableItemProvider(ITableItemProviderVtbl): IUnknown(IUnknownVtbl) {
718    fn GetRowHeaderItems(
719        pRetVal: *mut *mut SAFEARRAY,
720    ) -> HRESULT,
721    fn GetColumnHeaderItems(
722        pRetVal: *mut *mut SAFEARRAY,
723    ) -> HRESULT,
724}}
725RIDL!{#[uuid(0x56d00bd0, 0xc4f4, 0x433c, 0xa8, 0x36, 0x1a, 0x52, 0xa5, 0x7e, 0x08, 0x92)]
726interface IToggleProvider(IToggleProviderVtbl): IUnknown(IUnknownVtbl) {
727    fn Toggle() -> HRESULT,
728    fn get_ToggleState(
729        pRetVal: *mut ToggleState,
730    ) -> HRESULT,
731}}
732RIDL!{#[uuid(0x6829ddc4, 0x4f91, 0x4ffa, 0xb8, 0x6f, 0xbd, 0x3e, 0x29, 0x87, 0xcb, 0x4c)]
733interface ITransformProvider(ITransformProviderVtbl): IUnknown(IUnknownVtbl) {
734    fn Move(
735        x: c_double,
736        y: c_double,
737    ) -> HRESULT,
738    fn Resize(
739        width: c_double,
740        height: c_double,
741    ) -> HRESULT,
742    fn Rotate(
743        degrees: c_double,
744    ) -> HRESULT,
745    fn get_CanMove(
746        pRetVal: *mut BOOL,
747    ) -> HRESULT,
748    fn get_CanResize(
749        pRetVal: *mut BOOL,
750    ) -> HRESULT,
751    fn get_CanRotate(
752        pRetVal: *mut BOOL,
753    ) -> HRESULT,
754}}
755RIDL!{#[uuid(0xc7935180, 0x6fb3, 0x4201, 0xb1, 0x74, 0x7d, 0xf7, 0x3a, 0xdb, 0xf6, 0x4a)]
756interface IValueProvider(IValueProviderVtbl): IUnknown(IUnknownVtbl) {
757    fn SetValue(
758        val: LPCWSTR,
759    ) -> HRESULT,
760    fn get_Value(
761        pRetVal: *mut BSTR,
762    ) -> HRESULT,
763    fn get_IsReadOnly(
764        pRetVal: *mut BOOL,
765    ) -> HRESULT,
766}}
767RIDL!{#[uuid(0x987df77b, 0xdb06, 0x4d77, 0x8f, 0x8a, 0x86, 0xa9, 0xc3, 0xbb, 0x90, 0xb9)]
768interface IWindowProvider(IWindowProviderVtbl): IUnknown(IUnknownVtbl) {
769    fn SetVisualState(
770        state: WindowVisualState,
771    ) -> HRESULT,
772    fn Close() -> HRESULT,
773    fn WaitForInputIdle(
774        milliseconds: c_int,
775        pRetVal: *mut BOOL,
776    ) -> HRESULT,
777    fn get_CanMaximize(
778        pRetVal: *mut BOOL,
779    ) -> HRESULT,
780    fn get_CanMinimize(
781        pRetVal: *mut BOOL,
782    ) -> HRESULT,
783    fn get_IsModal(
784        pRetVal: *mut BOOL,
785    ) -> HRESULT,
786    fn get_WindowVisualState(
787        pRetVal: *mut WindowVisualState,
788    ) -> HRESULT,
789    fn get_WindowInteractionState(
790        pRetVal: *mut WindowInteractionState,
791    ) -> HRESULT,
792    fn get_IsTopmost(
793        pRetVal: *mut BOOL,
794    ) -> HRESULT,
795}}
796RIDL!{#[uuid(0xe44c3566, 0x915d, 0x4070, 0x99, 0xc6, 0x04, 0x7b, 0xff, 0x5a, 0x08, 0xf5)]
797interface ILegacyIAccessibleProvider(ILegacyIAccessibleProviderVtbl): IUnknown(IUnknownVtbl) {
798    fn Select(
799        flagsSelect: c_long,
800    ) -> HRESULT,
801    fn DoDefaultAction() -> HRESULT,
802    fn SetValue(
803        szValue: LPCWSTR,
804    ) -> HRESULT,
805    fn GetIAccessible(
806        ppIAccessible: *mut *mut IAccessible,
807    ) -> HRESULT,
808    fn get_ChildId(
809        pRetVal: *mut c_int,
810    ) -> HRESULT,
811    fn get_Name(
812        pszName: *mut BSTR,
813    ) -> HRESULT,
814    fn get_Value(
815        pszValue: *mut BSTR,
816    ) -> HRESULT,
817    fn get_Description(
818        pszDescription: *mut BSTR,
819    ) -> HRESULT,
820    fn get_Role(
821        pdwRole: *mut DWORD,
822    ) -> HRESULT,
823    fn get_State(
824        pdwState: *mut DWORD,
825    ) -> HRESULT,
826    fn get_Help(
827        pszHelp: *mut BSTR,
828    ) -> HRESULT,
829    fn get_KeyboardShortcut(
830        pszKeyboardShortcut: *mut BSTR,
831    ) -> HRESULT,
832    fn GetSelection(
833        pvarSelectedChildren: *mut *mut SAFEARRAY,
834    ) -> HRESULT,
835    fn get_DefaultAction(
836        pszDefaultAction: *mut BSTR,
837    ) -> HRESULT,
838}}
839RIDL!{#[uuid(0xe747770b, 0x39ce, 0x4382, 0xab, 0x30, 0xd8, 0xfb, 0x3f, 0x33, 0x6f, 0x24)]
840interface IItemContainerProvider(IItemContainerProviderVtbl): IUnknown(IUnknownVtbl) {
841    fn FindItemByProperty(
842        pStartAfter: *mut IRawElementProviderSimple,
843        propertyId: PROPERTYID,
844        value: VARIANT,
845        pFound: *mut *mut IRawElementProviderSimple,
846    ) -> HRESULT,
847}}
848RIDL!{#[uuid(0xcb98b665, 0x2d35, 0x4fac, 0xad, 0x35, 0xf3, 0xc6, 0x0d, 0x0c, 0x0b, 0x8b)]
849interface IVirtualizedItemProvider(IVirtualizedItemProviderVtbl): IUnknown(IUnknownVtbl) {
850    fn Realize() -> HRESULT,
851}}
852RIDL!{#[uuid(0x3ad86ebd, 0xf5ef, 0x483d, 0xbb, 0x18, 0xb1, 0x04, 0x2a, 0x47, 0x5d, 0x64)]
853interface IObjectModelProvider(IObjectModelProviderVtbl): IUnknown(IUnknownVtbl) {
854    fn GetUnderlyingObjectModel(
855        ppUnknown: *mut *mut IUnknown,
856    ) -> HRESULT,
857}}
858RIDL!{#[uuid(0xf95c7e80, 0xbd63, 0x4601, 0x97, 0x82, 0x44, 0x5e, 0xbf, 0xf0, 0x11, 0xfc)]
859interface IAnnotationProvider(IAnnotationProviderVtbl): IUnknown(IUnknownVtbl) {
860    fn get_AnnotationTypeId(
861        retVal: *mut c_int,
862    ) -> HRESULT,
863    fn get_AnnotationTypeName(
864        retVal: *mut BSTR,
865    ) -> HRESULT,
866    fn get_Author(
867        retVal: *mut BSTR,
868    ) -> HRESULT,
869    fn get_DateTime(
870        retVal: *mut BSTR,
871    ) -> HRESULT,
872    fn get_Target(
873        retVal: *mut *mut IRawElementProviderSimple,
874    ) -> HRESULT,
875}}
876RIDL!{#[uuid(0x19b6b649, 0xf5d7, 0x4a6d, 0xbd, 0xcb, 0x12, 0x92, 0x52, 0xbe, 0x58, 0x8a)]
877interface IStylesProvider(IStylesProviderVtbl): IUnknown(IUnknownVtbl) {
878    fn get_StyleId(
879        retVal: *mut c_int,
880    ) -> HRESULT,
881    fn get_StyleName(
882        retVal: *mut BSTR,
883    ) -> HRESULT,
884    fn get_FillColor(
885        retVal: *mut c_int,
886    ) -> HRESULT,
887    fn get_FillPatternStyle(
888        retVal: *mut BSTR,
889    ) -> HRESULT,
890    fn get_Shape(
891        retVal: BSTR,
892    ) -> HRESULT,
893    fn get_FillPatternColor(
894        retVal: *mut c_int,
895    ) -> HRESULT,
896    fn get_ExtendedProperties(
897        retVal: *mut BSTR,
898    ) -> HRESULT,
899}}
900RIDL!{#[uuid(0x6f6b5d35, 0x5525, 0x4f80, 0xb7, 0x58, 0x85, 0x47, 0x38, 0x32, 0xff, 0xc7)]
901interface ISpreadsheetProvider(ISpreadsheetProviderVtbl): IUnknown(IUnknownVtbl) {
902    fn GetItemByName(
903        name: LPCWSTR,
904        pRetVal: *mut *mut IRawElementProviderSimple,
905    ) -> HRESULT,
906}}
907RIDL!{#[uuid(0xeaed4660, 0x7b3d, 0x4879, 0xa2, 0xe6, 0x36, 0x5c, 0xe6, 0x03, 0xf3, 0xd0)]
908interface ISpreadsheetItemProvider(ISpreadsheetItemProviderVtbl): IUnknown(IUnknownVtbl) {
909    fn get_Formula(
910        pRetVal: *mut BSTR,
911    ) -> HRESULT,
912    fn GetAnnotationObjects(
913        pRetVal: *mut *mut SAFEARRAY,
914    ) -> HRESULT,
915    fn GetAnnotationTypes(
916        pRetVal: *mut *mut SAFEARRAY,
917    ) -> HRESULT,
918}}
919RIDL!{#[uuid(0x4758742f, 0x7ac2, 0x460c, 0xbc, 0x48, 0x09, 0xfc, 0x09, 0x30, 0x8a, 0x93)]
920interface ITransformProvider2(ITransformProvider2Vtbl):
921        ITransformProvider(ITransformProviderVtbl) {
922    fn Zoom(
923        zoom: c_double,
924    ) -> HRESULT,
925    fn get_CanZoom(
926        pRetVal: *mut BOOL,
927    ) -> HRESULT,
928    fn get_ZoomLevel(
929        pRetVal: *mut c_double,
930    ) -> HRESULT,
931    fn get_ZoomMinimum(
932        pRetVal: *mut c_double,
933    ) -> HRESULT,
934    fn get_ZoomMaximum(
935        pRetVal: *mut c_double,
936    ) -> HRESULT,
937    fn ZoomByUnit(
938        zoomUnit: ZoomUnit,
939    ) -> HRESULT,
940}}
941RIDL!{#[uuid(0x6aa7bbbb, 0x7ff9, 0x497d, 0x90, 0x4f, 0xd2, 0x0b, 0x89, 0x79, 0x29, 0xd8)]
942interface IDragProvider(IDragProviderVtbl): IUnknown(IUnknownVtbl) {
943    fn get_IsGrabbed(
944        pRetVal: *mut BOOL,
945    ) -> HRESULT,
946    fn get_DropEffect(
947        pRetVal: *mut BSTR,
948    ) -> HRESULT,
949    fn get_DropEffects(
950        pRetVal: *mut *mut SAFEARRAY,
951    ) -> HRESULT,
952    fn GetGrabbedItems(
953        pRetVal: *mut *mut SAFEARRAY,
954    ) -> HRESULT,
955}}
956RIDL!{#[uuid(0xbae82bfd, 0x358a, 0x481c, 0x85, 0xa0, 0xd8, 0xb4, 0xd9, 0x0a, 0x5d, 0x61)]
957interface IDropTargetProvider(IDropTargetProviderVtbl): IUnknown(IUnknownVtbl) {
958    fn get_DropTargetEffect(
959        pRetVal: *mut BSTR,
960    ) -> HRESULT,
961    fn get_DropTargetEffects(
962        pRetVal: *mut *mut SAFEARRAY,
963    ) -> HRESULT,
964}}
965RIDL!{#[uuid(0x5347ad7b, 0xc355, 0x46f8, 0xaf, 0xf5, 0x90, 0x90, 0x33, 0x58, 0x2f, 0x63)]
966interface ITextRangeProvider(ITextRangeProviderVtbl): IUnknown(IUnknownVtbl) {
967    fn Clone(
968        pRetVal: *mut *mut ITextRangeProvider,
969    ) -> HRESULT,
970    fn Compare(
971        range: *mut ITextRangeProvider,
972        pRetVal: *mut BOOL,
973    ) -> HRESULT,
974    fn CompareEndpoints(
975        endpoint: TextPatternRangeEndpoint,
976        targetRange: *mut ITextRangeProvider,
977        targetEndpoint: TextPatternRangeEndpoint,
978        pRetVal: *mut c_int,
979    ) -> HRESULT,
980    fn ExpandToEnclosingUnit(
981        unit: TextUnit,
982    ) -> HRESULT,
983    fn FindAttribute(
984        attributeId: TEXTATTRIBUTEID,
985        val: VARIANT,
986        backward: BOOL,
987        pRetVal: *mut *mut ITextRangeProvider,
988    ) -> HRESULT,
989    fn FindText(
990        text: BSTR,
991        backward: BOOL,
992        ignoreCase: BOOL,
993        pRetVal: *mut *mut ITextRangeProvider,
994    ) -> HRESULT,
995    fn GetAttributeValue(
996        attributeId: TEXTATTRIBUTEID,
997        pRetVal: *mut VARIANT,
998    ) -> HRESULT,
999    fn GetBoundingRectangles(
1000        pRetVal: *mut *mut SAFEARRAY,
1001    ) -> HRESULT,
1002    fn GetEnclosingElement(
1003        pRetVal: *mut *mut IRawElementProviderSimple,
1004    ) -> HRESULT,
1005    fn GetText(
1006        maxLength: c_int,
1007        pRetVal: *mut BSTR,
1008    ) -> HRESULT,
1009    fn Move(
1010        unit: TextUnit,
1011        count: c_int,
1012        pRetVal: *mut c_int,
1013    ) -> HRESULT,
1014    fn MoveEndpointByUnit(
1015        endpoint: TextPatternRangeEndpoint,
1016        unit: TextUnit,
1017        count: c_int,
1018        pRetVal: *mut c_int,
1019    ) -> HRESULT,
1020    fn MoveEndpointByRange(
1021        endpoint: TextPatternRangeEndpoint,
1022        targetRange: *mut ITextRangeProvider,
1023        targetEndpoint: TextPatternRangeEndpoint,
1024    ) -> HRESULT,
1025    fn Select() -> HRESULT,
1026    fn AddToSelection() -> HRESULT,
1027    fn RemoveFromSelection() -> HRESULT,
1028    fn ScrollIntoView(
1029        alignToTop: BOOL,
1030    ) -> HRESULT,
1031    fn GetChildren(
1032        pRetVal: *mut *mut SAFEARRAY,
1033    ) -> HRESULT,
1034}}
1035RIDL!{#[uuid(0x3589c92c, 0x63f3, 0x4367, 0x99, 0xbb, 0xad, 0xa6, 0x53, 0xb7, 0x7c, 0xf2)]
1036interface ITextProvider(ITextProviderVtbl): IUnknown(IUnknownVtbl) {
1037    fn GetSelection(
1038        pRetVal: *mut *mut SAFEARRAY,
1039    ) -> HRESULT,
1040    fn GetVisibleRanges(
1041        pRetVal: *mut *mut SAFEARRAY,
1042    ) -> HRESULT,
1043    fn RangeFromChild(
1044        childElement: *mut IRawElementProviderSimple,
1045        pRetVal: *mut *mut ITextRangeProvider,
1046    ) -> HRESULT,
1047    fn RangeFromPoint(
1048        point: UiaPoint,
1049        pRetVal: *mut *mut ITextRangeProvider,
1050    ) -> HRESULT,
1051    fn get_DocumentRange(
1052        pRetVal: *mut *mut ITextRangeProvider,
1053    ) -> HRESULT,
1054    fn get_SupportedTextSelection(
1055        pRetVal: *mut SupportedTextSelection,
1056    ) -> HRESULT,
1057}}
1058RIDL!{#[uuid(0x0dc5e6ed, 0x3e16, 0x4bf1, 0x8f, 0x9a, 0xa9, 0x79, 0x87, 0x8b, 0xc1, 0x95)]
1059interface ITextProvider2(ITextProvider2Vtbl): ITextProvider(ITextProviderVtbl) {
1060    fn RangeFromAnnotation(
1061        annotationElement: *mut IRawElementProviderSimple,
1062        pRetVal: *mut *mut ITextRangeProvider,
1063    ) -> HRESULT,
1064    fn GetCaretRange(
1065        isActive: *mut BOOL,
1066        pRetVal: *mut *mut ITextRangeProvider,
1067    ) -> HRESULT,
1068}}
1069RIDL!{#[uuid(0xea3605b4, 0x3a05, 0x400e, 0xb5, 0xf9, 0x4e, 0x91, 0xb4, 0x0f, 0x61, 0x76)]
1070interface ITextEditProvider(ITextEditProviderVtbl): ITextProvider(ITextProviderVtbl) {
1071    fn GetActiveComposition(
1072        pRetVal: *mut *mut ITextRangeProvider,
1073    ) -> HRESULT,
1074    fn GetConversionTarget(
1075        pRetVal: *mut *mut ITextRangeProvider,
1076    ) -> HRESULT,
1077}}
1078RIDL!{#[uuid(0x9bbce42c, 0x1921, 0x4f18, 0x89, 0xca, 0xdb, 0xa1, 0x91, 0x0a, 0x03, 0x86)]
1079interface ITextRangeProvider2(ITextRangeProvider2Vtbl):
1080        ITextRangeProvider(ITextRangeProviderVtbl) {
1081    fn ShowContextMenu() -> HRESULT,
1082}}
1083RIDL!{#[uuid(0x4c2de2b9, 0xc88f, 0x4f88, 0xa1, 0x11, 0xf1, 0xd3, 0x36, 0xb7, 0xd1, 0xa9)]
1084interface ITextChildProvider(ITextChildProviderVtbl): IUnknown(IUnknownVtbl) {
1085    fn get_TextContainer(
1086        pRetVal: *mut *mut IRawElementProviderSimple,
1087    ) -> HRESULT,
1088    fn get_TextRange(
1089        pRetVal: *mut *mut ITextRangeProvider,
1090    ) -> HRESULT,
1091}}
1092RIDL!{#[uuid(0x2062a28a, 0x8c07, 0x4b94, 0x8e, 0x12, 0x70, 0x37, 0xc6, 0x22, 0xae, 0xb8)]
1093interface ICustomNavigationProvider(ICustomNavigationProviderVtbl): IUnknown(IUnknownVtbl) {
1094    fn Navigate(
1095        direction: NavigateDirection,
1096        pRetVal: *mut *mut IRawElementProviderSimple,
1097    ) -> HRESULT,
1098}}
1099RIDL!{#[uuid(0xc03a7fe4, 0x9431, 0x409f, 0xbe, 0xd8, 0xae, 0x7c, 0x22, 0x99, 0xbc, 0x8d)]
1100interface IUIAutomationPatternInstance(IUIAutomationPatternInstanceVtbl): IUnknown(IUnknownVtbl) {
1101    fn GetProperty(
1102        index: UINT,
1103        cached: BOOL,
1104        type_: UIAutomationType,
1105        pPtr: *mut c_void,
1106    ) -> HRESULT,
1107    fn CallMethod(
1108        index: UINT,
1109        pParams: *const UIAutomationParameter,
1110        cParams: UINT,
1111    ) -> HRESULT,
1112}}
1113RIDL!{#[uuid(0xd97022f3, 0xa947, 0x465e, 0x8b, 0x2a, 0xac, 0x43, 0x15, 0xfa, 0x54, 0xe8)]
1114interface IUIAutomationPatternHandler(IUIAutomationPatternHandlerVtbl): IUnknown(IUnknownVtbl) {
1115    fn CreateClientWrapper(
1116        pPatternInstance: *mut IUIAutomationPatternInstance,
1117        pClientWrapper: *mut *mut IUnknown,
1118    ) -> HRESULT,
1119    fn Dispatch(
1120        pTarget: *mut IUnknown,
1121        index: UINT,
1122        pParams: *const UIAutomationParameter,
1123        cParams: UINT,
1124    ) -> HRESULT,
1125}}
1126RIDL!{#[uuid(0x8609c4ec, 0x4a1a, 0x4d88, 0xa3, 0x57, 0x5a, 0x66, 0xe0, 0x60, 0xe1, 0xcf)]
1127interface IUIAutomationRegistrar(IUIAutomationRegistrarVtbl): IUnknown(IUnknownVtbl) {
1128    fn RegisterProperty(
1129        property: *const UIAutomationPropertyInfo,
1130        propertyId: *mut PROPERTYID,
1131    ) -> HRESULT,
1132    fn RegisterEvent(
1133        event: *const UIAutomationEventInfo,
1134        eventId: *mut EVENTID,
1135    ) -> HRESULT,
1136    fn RegisterPattern(
1137        pattern: *const UIAutomationPatternInfo,
1138        pPatternId: *mut PATTERNID,
1139        pPatternAvailablePropertyId: *mut PROPERTYID,
1140        propertyIdCount: UINT,
1141        pPropertyIds: *mut PROPERTYID,
1142        eventIdCount: UINT,
1143        pEventIds: *mut EVENTID,
1144    ) -> HRESULT,
1145}}
1146RIDL!{#[uuid(0x6e29fabf, 0x9977, 0x42d1, 0x8d, 0x0e, 0xca, 0x7e, 0x61, 0xad, 0x87, 0xe6)]
1147class CUIAutomationRegistrar;}