/* * Copyright 2012 Jacek Caban for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #define DO_NO_IMPORTS import "oaidl.idl"; import "oleacc.idl"; enum NavigateDirection { NavigateDirection_Parent = 0x0000, NavigateDirection_NextSibling = 0x0001, NavigateDirection_PreviousSibling = 0x0002, NavigateDirection_FirstChild = 0x0003, NavigateDirection_LastChild = 0x0004, }; enum ProviderOptions { ProviderOptions_ClientSideProvider = 0x0001, ProviderOptions_ServerSideProvider = 0x0002, ProviderOptions_NonClientAreaProvider = 0x0004, ProviderOptions_OverrideProvider = 0x0008, ProviderOptions_ProviderOwnsSetFocus = 0x0010, ProviderOptions_UseComThreading = 0x0020, ProviderOptions_RefuseNonClientSupport = 0x0040, ProviderOptions_HasNativeIAccessible = 0x0080, ProviderOptions_UseClientCoordinates = 0x0100, }; enum StructureChangeType { StructureChangeType_ChildAdded = 0x0000, StructureChangeType_ChildRemoved = 0x0001, StructureChangeType_ChildrenInvalidated = 0x0002, StructureChangeType_ChildrenBulkAdded = 0x0003, StructureChangeType_ChildrenBulkRemoved = 0x0004, StructureChangeType_ChildrenReordered = 0x0005, }; enum TextEditChangeType { TextEditChangeType_None = 0x0000, TextEditChangeType_AutoCorrect = 0x0001, TextEditChangeType_Composition = 0x0002, TextEditChangeType_CompositionFinalized = 0x0003, TextEditChangeType_AutoComplete = 0x0004, }; enum OrientationType { OrientationType_None = 0x0000, OrientationType_Horizontal = 0x0001, OrientationType_Vertical = 0x0002, }; enum WindowVisualState { WindowVisualState_Normal = 0x0000, WindowVisualState_Maximized = 0x0001, WindowVisualState_Minimized = 0x0002, }; enum WindowInteractionState { WindowInteractionState_Running = 0x0000, WindowInteractionState_Closing = 0x0001, WindowInteractionState_ReadyForUserInteraction = 0x0002, WindowInteractionState_BlockedByModalWindow = 0x0003, WindowInteractionState_NotResponding = 0x0004, }; enum LiveSetting { Off = 0x0000, Polite = 0x0001, Assertive = 0x0002, }; typedef int PROPERTYID; typedef int PATTERNID; typedef int EVENTID; typedef int TEXTATTRIBUTEID; typedef int CONTROLTYPEID; typedef int LANDMARKTYPEID; typedef int METADATAID; typedef int HEADINGLEVELID; struct UiaRect { double left; double top; double width; double height; }; struct UiaChangeInfo { int uiaId; VARIANT payload; VARIANT extraInfo; }; [ version(1.0), uuid(930299ce-9965-4dec-b0f4-a54848d4b667), lcid(0), hidden ] library UIA { importlib("stdole2.tlb"); [ object, uuid(d6dd68d1-86fd-4332-8666-9abedea2d24c), pointer_default(unique), oleautomation ] interface IRawElementProviderSimple : IUnknown { [propget] HRESULT ProviderOptions([out, retval] enum ProviderOptions *pRetVal); HRESULT GetPatternProvider( [in] PATTERNID patternId, [out, retval] IUnknown **pRetVal); HRESULT GetPropertyValue( [in] PROPERTYID propertyId, [out, retval] VARIANT *pRetVal); [propget] HRESULT HostRawElementProvider([out, retval] IRawElementProviderSimple **pRetVal); } [ object, uuid(f8b80ada-2c44-48d0-89be-5ff23c9cd875), pointer_default(unique), oleautomation ] interface IAccessibleEx : IUnknown { HRESULT GetObjectForChild( [in] long idChild, [out, retval] IAccessibleEx **pRetVal); HRESULT GetIAccessiblePair( [out] IAccessible **ppAcc, [out] long *pidChild); HRESULT GetRuntimeId( [out, retval] SAFEARRAY(int) *pRetVal); HRESULT ConvertReturnedElement( [in] IRawElementProviderSimple *pIn, [out] IAccessibleEx **ppRetValOut); } interface IRawElementProviderFragmentRoot; [ object, uuid(f7063da8-8359-439c-9297-bbc5299a7d87), pointer_default(unique), oleautomation ] interface IRawElementProviderFragment : IUnknown { HRESULT Navigate( [in] enum NavigateDirection direction, [out, retval] IRawElementProviderFragment **pRetVal); HRESULT GetRuntimeId([out, retval] SAFEARRAY(int) *pRetVal); HRESULT get_BoundingRectangle([out, retval] struct UiaRect *pRetVal); /* * FIXME: Current versions of Windows SDK use * SAFEARRAY(IRawElementProviderFragmentRoot *) instead of * SAFEARRAY(VARIANT). The new type is currently unsupported * in widl, we should switch to it when it is. */ HRESULT GetEmbeddedFragmentRoots([out, retval] SAFEARRAY(VARIANT) *pRetVal); HRESULT SetFocus(); [propget] HRESULT FragmentRoot([out, retval] IRawElementProviderFragmentRoot **pRetVal); } [ object, uuid(620ce2a5-ab8f-40a9-86cb-de3c75599b58), pointer_default(unique), oleautomation ] interface IRawElementProviderFragmentRoot : IUnknown { HRESULT ElementProviderFromPoint( [in] double x, [in] double y, [out, retval] IRawElementProviderFragment **pRetVal); HRESULT GetFocus([out, retval] IRawElementProviderFragment **pRetVal); } [ object, uuid(1d5df27c-8947-4425-b8d9-79787bb460b8), pointer_default(unique), oleautomation ] interface IRawElementProviderHwndOverride : IUnknown { HRESULT GetOverrideProviderForHwnd( [in] HWND hwnd, [out, retval] IRawElementProviderSimple **pRetVal); } [ object, uuid(e44c3566-915d-4070-99c6-047bff5a08f5), pointer_default(unique), oleautomation ] interface ILegacyIAccessibleProvider : IUnknown { HRESULT Select(long flagsSelect); HRESULT DoDefaultAction(); HRESULT SetValue(LPCWSTR szValue); HRESULT GetIAccessible([out, retval] IAccessible **ppAccessible); [propget] HRESULT ChildId([out, retval] int *pRetVal); [propget] HRESULT Name([out, retval] BSTR *pszName); [propget] HRESULT Value([out, retval] BSTR *pszValue); [propget] HRESULT Description([out, retval] BSTR *pszDescription); [propget] HRESULT Role([out, retval] DWORD *pdwRole); [propget] HRESULT State([out, retval] DWORD *pdwState); [propget] HRESULT Help([out, retval] BSTR *pszHelp); [propget] HRESULT KeyboardShortcut([out, retval] BSTR *pszKeyboardShortcut); /* * FIXME: Current versions of Windows SDK use * SAFEARRAY(IRawElementProviderSimple *) instead of * SAFEARRAY(VARIANT). The new type is currently unsupported * in widl, we should switch to it when it is. */ HRESULT GetSelection([out, retval] SAFEARRAY(VARIANT) *pvarSelectedChildren); [propget] HRESULT DefaultAction([out, retval] BSTR *pszDefaultAction); } enum UIAutomationType { UIAutomationType_Int = 0x01, UIAutomationType_Bool = 0x02, UIAutomationType_String = 0x03, UIAutomationType_Double = 0x04, UIAutomationType_Point = 0x05, UIAutomationType_Rect = 0x06, UIAutomationType_Element = 0x07, UIAutomationType_Array = 0x00010000, UIAutomationType_Out = 0x00020000, UIAutomationType_IntArray = ( UIAutomationType_Int | UIAutomationType_Array ), UIAutomationType_BoolArray = ( UIAutomationType_Bool | UIAutomationType_Array ), UIAutomationType_StringArray = ( UIAutomationType_String | UIAutomationType_Array ), UIAutomationType_DoubleArray = ( UIAutomationType_Double | UIAutomationType_Array ), UIAutomationType_PointArray = ( UIAutomationType_Point | UIAutomationType_Array ), UIAutomationType_RectArray = ( UIAutomationType_Rect | UIAutomationType_Array ), UIAutomationType_ElementArray = ( UIAutomationType_Element | UIAutomationType_Array ), UIAutomationType_OutInt = ( UIAutomationType_Int | UIAutomationType_Out ), UIAutomationType_OutBool = ( UIAutomationType_Bool | UIAutomationType_Out ), UIAutomationType_OutString = ( UIAutomationType_String | UIAutomationType_Out ), UIAutomationType_OutDouble = ( UIAutomationType_Double | UIAutomationType_Out ), UIAutomationType_OutPoint = ( UIAutomationType_Point | UIAutomationType_Out ), UIAutomationType_OutRect = ( UIAutomationType_Rect | UIAutomationType_Out ), UIAutomationType_OutElement = ( UIAutomationType_Element | UIAutomationType_Out ), UIAutomationType_OutIntArray = ( UIAutomationType_Int | UIAutomationType_Array | UIAutomationType_Out ), UIAutomationType_OutBoolArray = ( UIAutomationType_Bool | UIAutomationType_Array | UIAutomationType_Out ), UIAutomationType_OutStringArray = ( UIAutomationType_String | UIAutomationType_Array | UIAutomationType_Out ), UIAutomationType_OutDoubleArray = ( UIAutomationType_Double | UIAutomationType_Array | UIAutomationType_Out ), UIAutomationType_OutPointArray = ( UIAutomationType_Point | UIAutomationType_Array | UIAutomationType_Out ), UIAutomationType_OutRectArray = ( UIAutomationType_Rect | UIAutomationType_Array | UIAutomationType_Out ), UIAutomationType_OutElementArray = ( UIAutomationType_Element | UIAutomationType_Array | UIAutomationType_Out ), }; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(UIAutomationType)") struct UIAutomationParameter { enum UIAutomationType type; void *pData; }; struct UIAutomationPropertyInfo { GUID guid; LPCWSTR pProgrammaticName; enum UIAutomationType type; }; struct UIAutomationEventInfo { GUID guid; LPCWSTR pProgrammaticName; }; struct UIAutomationMethodInfo { LPCWSTR pProgrammaticName; BOOL doSetFocus; UINT cInParameters; UINT cOutParameters; [size_is(cInParameters + cOutParameters)]enum UIAutomationType *pParameterTypes; [size_is(cInParameters + cOutParameters)]LPCWSTR *pParameterNames; }; [ object, uuid(c03a7fe4-9431-409f-bed8-ae7c2299bc8d), pointer_default(unique), oleautomation ] interface IUIAutomationPatternInstance : IUnknown { [local] HRESULT GetProperty( [in] UINT index, [in] BOOL cached, [in] enum UIAutomationType type, [out] void *pPtr); [local] HRESULT CallMethod( [in] UINT index, [in] const struct UIAutomationParameter *pParams, [in] UINT cParams); } [ object, uuid(d97022f3-a947-465e-8b2a-ac4315fa54e8), pointer_default(unique), oleautomation ] interface IUIAutomationPatternHandler : IUnknown { HRESULT CreateClientWrapper( [in] IUIAutomationPatternInstance *pPatternInstance, [out] IUnknown **pClientWrapper); [local] HRESULT Dispatch( [in] IUnknown *pTarget, [in] UINT index, [in] const struct UIAutomationParameter *pParams, [in] UINT cParams); } struct UIAutomationPatternInfo { GUID guid; LPCWSTR pProgrammaticName; GUID providerInterfaceId; GUID clientInterfaceId; UINT cProperties; [size_is(cProperties)]struct UIAutomationPropertyInfo *pProperties; UINT cMethods; [size_is(cMethods)]struct UIAutomationMethodInfo *pMethods; UINT cEvents; [size_is(cEvents)]struct UIAutomationEventInfo *pEvents; IUIAutomationPatternHandler *pPatternHandler; }; [ object, uuid(8609c4ec-4a1a-4d88-a357-5a66e060e1cf), pointer_default(unique), oleautomation ] interface IUIAutomationRegistrar : IUnknown { HRESULT RegisterProperty( [in] const struct UIAutomationPropertyInfo *property, [out] PROPERTYID *propertyId); HRESULT RegisterEvent( [in] const struct UIAutomationEventInfo *event, [out] EVENTID *eventId); HRESULT RegisterPattern( [in] const struct UIAutomationPatternInfo *pattern, [out] PATTERNID *pPatternId, [out] PROPERTYID *pPatternAvailablePropertyId, [in] UINT propertyIdCount, [out, size_is(propertyIdCount)] PROPERTYID *pPropertyIds, [in] UINT eventIdCount, [out, size_is(eventIdCount)] EVENTID *pEventIds); }; [ uuid(6e29fabf-9977-42d1-8d0e-ca7e61ad87e6), version(1.0), threading(both) ] coclass CUIAutomationRegistrar { [default] interface IUIAutomationRegistrar; } }