1use ctypes::{c_int, c_long, c_uchar, c_ulong, c_void};
8use shared::guiddef::{GUID, REFIID};
9use shared::minwindef::{BOOL, BYTE, DWORD, LRESULT, UINT, WPARAM};
10use shared::windef::{HMENU, HWND, POINT};
11use shared::winerror::HRESULT;
12use shared::wtypes::BSTR;
13use um::oaidl::{IDispatch, IDispatchVtbl, LPSAFEARRAY, SAFEARRAY, VARIANT};
14use um::unknwnbase::{IUnknown, IUnknownVtbl, LPUNKNOWN};
15use um::winnt::{LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR};
16FN!{stdcall LPFNLRESULTFROMOBJECT(
17 riid: REFIID,
18 wParam: WPARAM,
19 punk: LPUNKNOWN,
20) -> LRESULT}
21FN!{stdcall LPFNOBJECTFROMLRESULT(
22 lResult: LRESULT,
23 riid: REFIID,
24 wParam: WPARAM,
25 ppvObject: *mut *mut c_void,
26) -> HRESULT}
27FN!{stdcall LPFNACCESSIBLEOBJECTFROMWINDOW(
28 hwnd: HWND,
29 dwId: DWORD,
30 riid: REFIID,
31 ppvObject: *mut *mut c_void,
32) -> HRESULT}
33FN!{stdcall LPFNACCESSIBLEOBJECTFROMPOINT(
34 ptScreen: POINT,
35 ppacc: *mut *mut IAccessible,
36 pvarChild: *mut VARIANT,
37) -> HRESULT}
38FN!{stdcall LPFNCREATESTDACCESSIBLEOBJECT(
39 hwnd: HWND,
40 idObject: LONG,
41 riid: REFIID,
42 ppvObject: *mut *mut c_void,
43) -> HRESULT}
44FN!{stdcall LPFNACCESSIBLECHILDREN(
45 paccContainer: *mut IAccessible,
46 iChildStart: LONG,
47 cChildren: LONG,
48 rgvarChildren: *mut VARIANT,
49 pcObtained: *mut LONG,
50) -> HRESULT}
51DEFINE_GUID!{LIBID_Accessibility,
52 0x1ea4dbf0, 0x3c3b, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
53DEFINE_GUID!{IID_IAccessible,
54 0x618736e0, 0x3c3d, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
55DEFINE_GUID!{IID_IAccessibleHandler,
56 0x03022430, 0xABC4, 0x11d0, 0xBD, 0xE2, 0x00, 0xAA, 0x00, 0x1A, 0x19, 0x53}
57DEFINE_GUID!{IID_IAccIdentity,
58 0x7852b78d, 0x1cfd, 0x41c1, 0xa6, 0x15, 0x9c, 0x0c, 0x85, 0x96, 0x0b, 0x5f}
59DEFINE_GUID!{IID_IAccPropServer,
60 0x76c0dbbb, 0x15e0, 0x4e7b, 0xb6, 0x1b, 0x20, 0xee, 0xea, 0x20, 0x01, 0xe0}
61DEFINE_GUID!{IID_IAccPropServices,
62 0x6e26e776, 0x04f0, 0x495d, 0x80, 0xe4, 0x33, 0x30, 0x35, 0x2e, 0x31, 0x69}
63DEFINE_GUID!{IID_IAccPropMgrInternal,
64 0x2bd370a9, 0x3e7f, 0x4edd, 0x8a, 0x85, 0xf8, 0xfe, 0xd1, 0xf8, 0xe5, 0x1f}
65DEFINE_GUID!{CLSID_AccPropServices,
66 0xb5f8350b, 0x0548, 0x48b1, 0xa6, 0xee, 0x88, 0xbd, 0x00, 0xb4, 0xa5, 0xe7}
67DEFINE_GUID!{IIS_IsOleaccProxy,
68 0x902697fa, 0x80e4, 0x4560, 0x80, 0x2a, 0xa1, 0x3f, 0x22, 0xa6, 0x47, 0x09}
69DEFINE_GUID!{IIS_ControlAccessible,
70 0x38c682a6, 0x9731, 0x43f2, 0x9f, 0xae, 0xe9, 0x01, 0xe6, 0x41, 0xb1, 0x01}
71extern "C" {
72 pub fn LresultFromObject(
73 riid: REFIID,
74 wParam: WPARAM,
75 punk: LPUNKNOWN,
76 ) -> LRESULT;
77 pub fn ObjectFromLresult(
78 lResult: LRESULT,
79 riid: REFIID,
80 wParam: WPARAM,
81 ppvObject: *mut *mut c_void);
82 pub fn WindowFromAccessibleObject(
83 arg1: *mut IAccessible,
84 phwnd: *mut HWND);
85 pub fn AccessibleObjectFromWindow(
86 hwnd: HWND,
87 dwId: DWORD,
88 riid: REFIID,
89 ppvObject: *mut *mut c_void);
90 pub fn AccessibleObjectFromEvent(
91 hwnd: HWND,
92 dwId: DWORD,
93 dwChildId: DWORD,
94 ppacc: *mut *mut IAccessible,
95 pvarChild: *mut VARIANT);
96 pub fn AccessibleObjectFromPoint(
97 ptScreen: POINT,
98 ppacc: *mut *mut IAccessible,
99 pvarChild: *mut VARIANT);
100 pub fn AccessibleChildren(
101 paccContainer: *mut IAccessible,
102 iChildStart: LONG,
103 cChildren: LONG,
104 rgvarChildren: *mut VARIANT,
105 pcObtained: *mut LONG);
106 pub fn GetRoleTextA(
107 lRole: DWORD,
108 lpszRole: LPSTR,
109 cchRoleMax: UINT,
110 ) -> UINT;
111 pub fn GetRoleTextW(
112 lRole: DWORD,
113 lpszRole: LPWSTR,
114 cchRoleMax: UINT,
115 ) -> UINT;
116 pub fn GetStateTextA(
117 lStateBit: DWORD,
118 lpszState: LPSTR,
119 cchState: UINT,
120 ) -> UINT;
121 pub fn GetStateTextW(
122 lStateBit: DWORD,
123 lpszState: LPWSTR,
124 cchState: UINT,
125 ) -> UINT;
126 pub fn GetOleaccVersionInfo(
127 pVer: *mut DWORD,
128 pBuild: *mut DWORD);
129 pub fn CreateStdAccessibleObject(
130 hwnd: HWND,
131 idObject: LONG,
132 riid: REFIID,
133 ppvObject: *mut *mut c_void);
134 pub fn CreateStdAccessibleProxyA(
135 hwnd: HWND,
136 pClassName: LPCSTR,
137 idObject: LONG,
138 riid: REFIID,
139 ppvObject: *mut *mut c_void);
140 pub fn CreateStdAccessibleProxyW(
141 hwnd: HWND,
142 pClassName: LPCWSTR,
143 idObject: LONG,
144 riid: REFIID,
145 ppvObject: *mut *mut c_void);
146}
147pub const ANRUS_ON_SCREEN_KEYBOARD_ACTIVE: DWORD = 0x0000001;
148pub const ANRUS_TOUCH_MODIFICATION_ACTIVE: DWORD = 0x0000002;
149pub const ANRUS_PRIORITY_AUDIO_ACTIVE: DWORD = 0x0000004;
150pub const ANRUS_PRIORITY_AUDIO_ACTIVE_NODUCK: DWORD = 0x0000008;
151pub const ANRUS_PRIORITY_AUDIO_DYNAMIC_DUCK: DWORD = 0x0000010;
152extern "C" {
153 pub fn AccSetRunningUtilityState(
154 hwndApp: HWND,
155 dwUtilityStateMask: DWORD,
156 dwUtilityState: DWORD);
157 pub fn AccNotifyTouchInteraction(
158 hwndApp: HWND,
159 hwndTarget: HWND,
160 ptTarget: POINT);
161}
162pub const MSAA_MENU_SIG: DWORD = 0xAA0DF00D;
163STRUCT!{struct MSAAMENUINFO {
164 dwMSAASignature: DWORD,
165 cchWText: DWORD,
166 pszWText: LPWSTR,
167}}
168pub type LPMSAAMENUINFO = *mut MSAAMENUINFO;
169DEFINE_GUID!{PROPID_ACC_NAME,
170 0x608d3df8, 0x8128, 0x4aa7, 0xa4, 0x28, 0xf5, 0x5e, 0x49, 0x26, 0x72, 0x91}
171DEFINE_GUID!{PROPID_ACC_VALUE,
172 0x123fe443, 0x211a, 0x4615, 0x95, 0x27, 0xc4, 0x5a, 0x7e, 0x93, 0x71, 0x7a}
173DEFINE_GUID!{PROPID_ACC_DESCRIPTION,
174 0x4d48dfe4, 0xbd3f, 0x491f, 0xa6, 0x48, 0x49, 0x2d, 0x6f, 0x20, 0xc5, 0x88}
175DEFINE_GUID!{PROPID_ACC_ROLE,
176 0xcb905ff2, 0x7bd1, 0x4c05, 0xb3, 0xc8, 0xe6, 0xc2, 0x41, 0x36, 0x4d, 0x70}
177DEFINE_GUID!{PROPID_ACC_STATE,
178 0xa8d4d5b0, 0x0a21, 0x42d0, 0xa5, 0xc0, 0x51, 0x4e, 0x98, 0x4f, 0x45, 0x7b}
179DEFINE_GUID!{PROPID_ACC_HELP,
180 0xc831e11f, 0x44db, 0x4a99, 0x97, 0x68, 0xcb, 0x8f, 0x97, 0x8b, 0x72, 0x31}
181DEFINE_GUID!{PROPID_ACC_KEYBOARDSHORTCUT,
182 0x7d9bceee, 0x7d1e, 0x4979, 0x93, 0x82, 0x51, 0x80, 0xf4, 0x17, 0x2c, 0x34}
183DEFINE_GUID!{PROPID_ACC_DEFAULTACTION,
184 0x180c072b, 0xc27f, 0x43c7, 0x99, 0x22, 0xf6, 0x35, 0x62, 0xa4, 0x63, 0x2b}
185DEFINE_GUID!{PROPID_ACC_HELPTOPIC,
186 0x787d1379, 0x8ede, 0x440b, 0x8a, 0xec, 0x11, 0xf7, 0xbf, 0x90, 0x30, 0xb3}
187DEFINE_GUID!{PROPID_ACC_FOCUS,
188 0x6eb335df, 0x1c29, 0x4127, 0xb1, 0x2c, 0xde, 0xe9, 0xfd, 0x15, 0x7f, 0x2b}
189DEFINE_GUID!{PROPID_ACC_SELECTION,
190 0xb99d073c, 0xd731, 0x405b, 0x90, 0x61, 0xd9, 0x5e, 0x8f, 0x84, 0x29, 0x84}
191DEFINE_GUID!{PROPID_ACC_PARENT,
192 0x474c22b6, 0xffc2, 0x467a, 0xb1, 0xb5, 0xe9, 0x58, 0xb4, 0x65, 0x73, 0x30}
193DEFINE_GUID!{PROPID_ACC_NAV_UP,
194 0x016e1a2b, 0x1a4e, 0x4767, 0x86, 0x12, 0x33, 0x86, 0xf6, 0x69, 0x35, 0xec}
195DEFINE_GUID!{PROPID_ACC_NAV_DOWN,
196 0x031670ed, 0x3cdf, 0x48d2, 0x96, 0x13, 0x13, 0x8f, 0x2d, 0xd8, 0xa6, 0x68}
197DEFINE_GUID!{PROPID_ACC_NAV_LEFT,
198 0x228086cb, 0x82f1, 0x4a39, 0x87, 0x05, 0xdc, 0xdc, 0x0f, 0xff, 0x92, 0xf5}
199DEFINE_GUID!{PROPID_ACC_NAV_RIGHT,
200 0xcd211d9f, 0xe1cb, 0x4fe5, 0xa7, 0x7c, 0x92, 0x0b, 0x88, 0x4d, 0x09, 0x5b}
201DEFINE_GUID!{PROPID_ACC_NAV_PREV,
202 0x776d3891, 0xc73b, 0x4480, 0xb3, 0xf6, 0x07, 0x6a, 0x16, 0xa1, 0x5a, 0xf6}
203DEFINE_GUID!{PROPID_ACC_NAV_NEXT,
204 0x1cdc5455, 0x8cd9, 0x4c92, 0xa3, 0x71, 0x39, 0x39, 0xa2, 0xfe, 0x3e, 0xee}
205DEFINE_GUID!{PROPID_ACC_NAV_FIRSTCHILD,
206 0xcfd02558, 0x557b, 0x4c67, 0x84, 0xf9, 0x2a, 0x09, 0xfc, 0xe4, 0x07, 0x49}
207DEFINE_GUID!{PROPID_ACC_NAV_LASTCHILD,
208 0x302ecaa5, 0x48d5, 0x4f8d, 0xb6, 0x71, 0x1a, 0x8d, 0x20, 0xa7, 0x78, 0x32}
209DEFINE_GUID!{PROPID_ACC_ROLEMAP,
210 0xf79acda2, 0x140d, 0x4fe6, 0x89, 0x14, 0x20, 0x84, 0x76, 0x32, 0x82, 0x69}
211DEFINE_GUID!{PROPID_ACC_VALUEMAP,
212 0xda1c3d79, 0xfc5c, 0x420e, 0xb3, 0x99, 0x9d, 0x15, 0x33, 0x54, 0x9e, 0x75}
213DEFINE_GUID!{PROPID_ACC_STATEMAP,
214 0x43946c5e, 0x0ac0, 0x4042, 0xb5, 0x25, 0x07, 0xbb, 0xdb, 0xe1, 0x7f, 0xa7}
215DEFINE_GUID!{PROPID_ACC_DESCRIPTIONMAP,
216 0x1ff1435f, 0x8a14, 0x477b, 0xb2, 0x26, 0xa0, 0xab, 0xe2, 0x79, 0x97, 0x5d}
217DEFINE_GUID!{PROPID_ACC_DODEFAULTACTION,
218 0x1ba09523, 0x2e3b, 0x49a6, 0xa0, 0x59, 0x59, 0x68, 0x2a, 0x3c, 0x48, 0xfd}
219pub type LPACCESSIBLE = *mut IAccessible;
220pub const NAVDIR_MIN: LONG = 0;
221pub const NAVDIR_UP: LONG = 0x1;
222pub const NAVDIR_DOWN: LONG = 0x2;
223pub const NAVDIR_LEFT: LONG = 0x3;
224pub const NAVDIR_RIGHT: LONG = 0x4;
225pub const NAVDIR_NEXT: LONG = 0x5;
226pub const NAVDIR_PREVIOUS: LONG = 0x6;
227pub const NAVDIR_FIRSTCHILD: LONG = 0x7;
228pub const NAVDIR_LASTCHILD: LONG = 0x8;
229pub const NAVDIR_MAX: LONG = 0x9;
230pub const SELFLAG_NONE: LONG = 0;
231pub const SELFLAG_TAKEFOCUS: LONG = 0x1;
232pub const SELFLAG_TAKESELECTION: LONG = 0x2;
233pub const SELFLAG_EXTENDSELECTION: LONG = 0x4;
234pub const SELFLAG_ADDSELECTION: LONG = 0x8;
235pub const SELFLAG_REMOVESELECTION: LONG = 0x10;
236pub const SELFLAG_VALID: LONG = 0x1f;
237pub const STATE_SYSTEM_NORMAL: LONG = 0;
238pub const STATE_SYSTEM_UNAVAILABLE: LONG = 0x1;
239pub const STATE_SYSTEM_SELECTED: LONG = 0x2;
240pub const STATE_SYSTEM_FOCUSED: LONG = 0x4;
241pub const STATE_SYSTEM_PRESSED: LONG = 0x8;
242pub const STATE_SYSTEM_CHECKED: LONG = 0x10;
243pub const STATE_SYSTEM_MIXED: LONG = 0x20;
244pub const STATE_SYSTEM_INDETERMINATE: LONG = STATE_SYSTEM_MIXED;
245pub const STATE_SYSTEM_READONLY: LONG = 0x40;
246pub const STATE_SYSTEM_HOTTRACKED: LONG = 0x80;
247pub const STATE_SYSTEM_DEFAULT: LONG = 0x100;
248pub const STATE_SYSTEM_EXPANDED: LONG = 0x200;
249pub const STATE_SYSTEM_COLLAPSED: LONG = 0x400;
250pub const STATE_SYSTEM_BUSY: LONG = 0x800;
251pub const STATE_SYSTEM_FLOATING: LONG = 0x1000;
252pub const STATE_SYSTEM_MARQUEED: LONG = 0x2000;
253pub const STATE_SYSTEM_ANIMATED: LONG = 0x4000;
254pub const STATE_SYSTEM_INVISIBLE: LONG = 0x8000;
255pub const STATE_SYSTEM_OFFSCREEN: LONG = 0x10000;
256pub const STATE_SYSTEM_SIZEABLE: LONG = 0x20000;
257pub const STATE_SYSTEM_MOVEABLE: LONG = 0x40000;
258pub const STATE_SYSTEM_SELFVOICING: LONG = 0x80000;
259pub const STATE_SYSTEM_FOCUSABLE: LONG = 0x100000;
260pub const STATE_SYSTEM_SELECTABLE: LONG = 0x200000;
261pub const STATE_SYSTEM_LINKED: LONG = 0x400000;
262pub const STATE_SYSTEM_TRAVERSED: LONG = 0x800000;
263pub const STATE_SYSTEM_MULTISELECTABLE: LONG = 0x1000000;
264pub const STATE_SYSTEM_EXTSELECTABLE: LONG = 0x2000000;
265pub const STATE_SYSTEM_ALERT_LOW: LONG = 0x4000000;
266pub const STATE_SYSTEM_ALERT_MEDIUM: LONG = 0x8000000;
267pub const STATE_SYSTEM_ALERT_HIGH: LONG = 0x10000000;
268pub const STATE_SYSTEM_PROTECTED: LONG = 0x20000000;
269pub const STATE_SYSTEM_VALID: LONG = 0x7fffffff;
270pub const STATE_SYSTEM_HASPOPUP: LONG = 0x40000000;
271pub const ROLE_SYSTEM_TITLEBAR: LONG = 0x1;
272pub const ROLE_SYSTEM_MENUBAR: LONG = 0x2;
273pub const ROLE_SYSTEM_SCROLLBAR: LONG = 0x3;
274pub const ROLE_SYSTEM_GRIP: LONG = 0x4;
275pub const ROLE_SYSTEM_SOUND: LONG = 0x5;
276pub const ROLE_SYSTEM_CURSOR: LONG = 0x6;
277pub const ROLE_SYSTEM_CARET: LONG = 0x7;
278pub const ROLE_SYSTEM_ALERT: LONG = 0x8;
279pub const ROLE_SYSTEM_WINDOW: LONG = 0x9;
280pub const ROLE_SYSTEM_CLIENT: LONG = 0xa;
281pub const ROLE_SYSTEM_MENUPOPUP: LONG = 0xb;
282pub const ROLE_SYSTEM_MENUITEM: LONG = 0xc;
283pub const ROLE_SYSTEM_TOOLTIP: LONG = 0xd;
284pub const ROLE_SYSTEM_APPLICATION: LONG = 0xe;
285pub const ROLE_SYSTEM_DOCUMENT: LONG = 0xf;
286pub const ROLE_SYSTEM_PANE: LONG = 0x10;
287pub const ROLE_SYSTEM_CHART: LONG = 0x11;
288pub const ROLE_SYSTEM_DIALOG: LONG = 0x12;
289pub const ROLE_SYSTEM_BORDER: LONG = 0x13;
290pub const ROLE_SYSTEM_GROUPING: LONG = 0x14;
291pub const ROLE_SYSTEM_SEPARATOR: LONG = 0x15;
292pub const ROLE_SYSTEM_TOOLBAR: LONG = 0x16;
293pub const ROLE_SYSTEM_STATUSBAR: LONG = 0x17;
294pub const ROLE_SYSTEM_TABLE: LONG = 0x18;
295pub const ROLE_SYSTEM_COLUMNHEADER: LONG = 0x19;
296pub const ROLE_SYSTEM_ROWHEADER: LONG = 0x1a;
297pub const ROLE_SYSTEM_COLUMN: LONG = 0x1b;
298pub const ROLE_SYSTEM_ROW: LONG = 0x1c;
299pub const ROLE_SYSTEM_CELL: LONG = 0x1d;
300pub const ROLE_SYSTEM_LINK: LONG = 0x1e;
301pub const ROLE_SYSTEM_HELPBALLOON: LONG = 0x1f;
302pub const ROLE_SYSTEM_CHARACTER: LONG = 0x20;
303pub const ROLE_SYSTEM_LIST: LONG = 0x21;
304pub const ROLE_SYSTEM_LISTITEM: LONG = 0x22;
305pub const ROLE_SYSTEM_OUTLINE: LONG = 0x23;
306pub const ROLE_SYSTEM_OUTLINEITEM: LONG = 0x24;
307pub const ROLE_SYSTEM_PAGETAB: LONG = 0x25;
308pub const ROLE_SYSTEM_PROPERTYPAGE: LONG = 0x26;
309pub const ROLE_SYSTEM_INDICATOR: LONG = 0x27;
310pub const ROLE_SYSTEM_GRAPHIC: LONG = 0x28;
311pub const ROLE_SYSTEM_STATICTEXT: LONG = 0x29;
312pub const ROLE_SYSTEM_TEXT: LONG = 0x2a;
313pub const ROLE_SYSTEM_PUSHBUTTON: LONG = 0x2b;
314pub const ROLE_SYSTEM_CHECKBUTTON: LONG = 0x2c;
315pub const ROLE_SYSTEM_RADIOBUTTON: LONG = 0x2d;
316pub const ROLE_SYSTEM_COMBOBOX: LONG = 0x2e;
317pub const ROLE_SYSTEM_DROPLIST: LONG = 0x2f;
318pub const ROLE_SYSTEM_PROGRESSBAR: LONG = 0x30;
319pub const ROLE_SYSTEM_DIAL: LONG = 0x31;
320pub const ROLE_SYSTEM_HOTKEYFIELD: LONG = 0x32;
321pub const ROLE_SYSTEM_SLIDER: LONG = 0x33;
322pub const ROLE_SYSTEM_SPINBUTTON: LONG = 0x34;
323pub const ROLE_SYSTEM_DIAGRAM: LONG = 0x35;
324pub const ROLE_SYSTEM_ANIMATION: LONG = 0x36;
325pub const ROLE_SYSTEM_EQUATION: LONG = 0x37;
326pub const ROLE_SYSTEM_BUTTONDROPDOWN: LONG = 0x38;
327pub const ROLE_SYSTEM_BUTTONMENU: LONG = 0x39;
328pub const ROLE_SYSTEM_BUTTONDROPDOWNGRID: LONG = 0x3a;
329pub const ROLE_SYSTEM_WHITESPACE: LONG = 0x3b;
330pub const ROLE_SYSTEM_PAGETABLIST: LONG = 0x3c;
331pub const ROLE_SYSTEM_CLOCK: LONG = 0x3d;
332pub const ROLE_SYSTEM_SPLITBUTTON: LONG = 0x3e;
333pub const ROLE_SYSTEM_IPADDRESS: LONG = 0x3f;
334pub const ROLE_SYSTEM_OUTLINEBUTTON: LONG = 0x40;
335RIDL!{#[uuid(0x618736e0, 0x3c3d, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)]
336interface IAccessible(IAccessibleVtbl): IDispatch(IDispatchVtbl) {
337 fn get_accParent(
338 ppdispParent: *mut *mut IDispatch,
339 ) -> HRESULT,
340 fn get_accChildCount(
341 pcountChildren: *mut c_long,
342 ) -> HRESULT,
343 fn get_accChild(
344 varChild: VARIANT,
345 ppdispChild: *mut *mut IDispatch,
346 ) -> HRESULT,
347 fn get_accName(
348 varChild: VARIANT,
349 pszName: *mut BSTR,
350 ) -> HRESULT,
351 fn get_accValue(
352 varChild: VARIANT,
353 pszValue: *mut BSTR,
354 ) -> HRESULT,
355 fn get_accDescription(
356 varChild: VARIANT,
357 pszDescription: *mut BSTR,
358 ) -> HRESULT,
359 fn get_accRole(
360 varChild: VARIANT,
361 pvarRole: *mut VARIANT,
362 ) -> HRESULT,
363 fn get_accState(
364 varChild: VARIANT,
365 pvarState: *mut VARIANT,
366 ) -> HRESULT,
367 fn get_accHelp(
368 varChild: VARIANT,
369 pszHelp: *mut BSTR,
370 ) -> HRESULT,
371 fn get_accHelpTopic(
372 pszHelpFile: *mut BSTR,
373 varChild: VARIANT,
374 pidTopic: *mut c_long,
375 ) -> HRESULT,
376 fn get_accKeyboardShortcut(
377 varChild: VARIANT,
378 pszKeyboardShortcut: *mut BSTR,
379 ) -> HRESULT,
380 fn get_accFocus(
381 pvarChild: *mut VARIANT,
382 ) -> HRESULT,
383 fn get_accSelection(
384 pvarChildren: *mut VARIANT,
385 ) -> HRESULT,
386 fn get_accDefaultAction(
387 varChild: VARIANT,
388 pszDefaultAction: *mut BSTR,
389 ) -> HRESULT,
390 fn accSelect(
391 flagsSelect: c_long,
392 varChild: VARIANT,
393 ) -> HRESULT,
394 fn accLocation(
395 pxLeft: *mut c_long,
396 pyTop: *mut c_long,
397 pcxWidth: *mut c_long,
398 pcyHeight: *mut c_long,
399 varChild: VARIANT,
400 ) -> HRESULT,
401 fn accNavigate(
402 navDir: c_long,
403 varState: VARIANT,
404 pvarEndUpAt: *mut VARIANT,
405 ) -> HRESULT,
406 fn accHitTest(
407 xLeft: c_long,
408 yTop: c_long,
409 pvarChild: *mut VARIANT,
410 ) -> HRESULT,
411 fn accDoDefaultAction(
412 varChild: VARIANT,
413 ) -> HRESULT,
414 fn put_accName(
415 varChild: VARIANT,
416 szName: BSTR,
417 ) -> HRESULT,
418 fn put_accValue(
419 varChild: VARIANT,
420 szValue: BSTR,
421 ) -> HRESULT,
422}}
423pub type LPACCESSIBLEHANDLER = *mut IAccessibleHandler;
424RIDL!{#[uuid(0x03022430, 0xabc4, 0x11d0, 0xbd, 0xe2, 0x00, 0xaa, 0x00, 0x1a, 0x19, 0x53)]
425interface IAccessibleHandler(IAccessibleHandlerVtbl): IUnknown(IUnknownVtbl) {
426 fn AccessibleObjectFromID(
427 hwnd: c_long,
428 lObjectID: c_long,
429 pIAccessible: *mut LPACCESSIBLE,
430 ) -> HRESULT,
431}}
432pub type LPACCESSIBLEWINDOWLESSSITE = *mut IAccessibleWindowlessSite;
433RIDL!{#[uuid(0xbf3abd9c, 0x76da, 0x4389, 0x9e, 0xb6, 0x14, 0x27, 0xd2, 0x5a, 0xba, 0xb7)]
434interface IAccessibleWindowlessSite(IAccessibleWindowlessSiteVtbl): IUnknown(IUnknownVtbl) {
435 fn AcquireObjectIdRange(
436 rangeSize: c_long,
437 pRangeOwner: *mut IAccessibleHandler,
438 pRangeBase: *mut c_long,
439 ) -> HRESULT,
440 fn ReleaseObjectIdRange(
441 rangeBase: c_long,
442 pRangeOwner: *mut IAccessibleHandler,
443 ) -> HRESULT,
444 fn QueryObjectIdRanges(
445 pRangesOwner: *mut IAccessibleHandler,
446 psaRanges: *mut *mut SAFEARRAY,
447 ) -> HRESULT,
448 fn GetParentAccessible(
449 ppParent: *mut *mut IAccessible,
450 ) -> HRESULT,
451}}
452ENUM!{enum AnnoScope {
453 ANNO_THIS = 0,
454 ANNO_CONTAINER = 1,
455}}
456pub type MSAAPROPID = GUID;
457RIDL!{#[uuid(0x7852b78d, 0x1cfd, 0x41c1, 0xa6, 0x15, 0x9c, 0x0c, 0x85, 0x96, 0x0b, 0x5f)]
458interface IAccIdentity(IAccIdentityVtbl): IUnknown(IUnknownVtbl) {
459 fn GetIdentityString(
460 dwIDChild: DWORD,
461 ppIDString: *mut *mut BYTE,
462 pdwIDStringLen: *mut BYTE,
463 ) -> HRESULT,
464}}
465RIDL!{#[uuid(0x76c0dbbb, 0x15e0, 0x4e7b, 0xb6, 0x1b, 0x20, 0xee, 0xea, 0x20, 0x01, 0xe0)]
466interface IAccPropServer(IAccPropServerVtbl): IUnknown(IUnknownVtbl) {
467 fn GetPropValue(
468 pIDString: *const BYTE,
469 dwIDStringLen: DWORD,
470 idProp: MSAAPROPID,
471 pvarValue: VARIANT,
472 pfHasProp: *mut BOOL,
473 ) -> HRESULT,
474}}
475RIDL!{#[uuid(0x6e26e776, 0x04f0, 0x495d, 0x80, 0xe4, 0x33, 0x30, 0x35, 0x2e, 0x31, 0x69)]
476interface IAccPropServices(IAccPropServicesVtbl): IUnknown(IUnknownVtbl) {
477 fn SetPropValue(
478 pIDString: *const BYTE,
479 dwIDStringLen: DWORD,
480 idProp: MSAAPROPID,
481 var: VARIANT,
482 ) -> HRESULT,
483 fn SetPropServer(
484 pIDString: *const BYTE,
485 dwIDStringLen: DWORD,
486 paProps: *const MSAAPROPID,
487 cProps: c_int,
488 pServer: *mut IAccPropServer,
489 annoScope: AnnoScope,
490 ) -> HRESULT,
491 fn ClearProps(
492 pIDString: *const BYTE,
493 dwIDStringLen: DWORD,
494 paProps: *const MSAAPROPID,
495 cProps: c_int,
496 ) -> HRESULT,
497 fn SetHwndProp(
498 hwnd: HWND,
499 idObject: DWORD,
500 idChild: DWORD,
501 idProp: MSAAPROPID,
502 var: VARIANT,
503 ) -> HRESULT,
504 fn SetHwndPropStr(
505 hwnd: HWND,
506 idObject: DWORD,
507 idChild: DWORD,
508 idProp: MSAAPROPID,
509 str_: LPCWSTR,
510 ) -> HRESULT,
511 fn SetHwndPropServer(
512 hwnd: HWND,
513 idObject: DWORD,
514 idChild: DWORD,
515 paProps: *const MSAAPROPID,
516 cProps: c_int,
517 pServer: *mut IAccPropServer,
518 annoScope: AnnoScope,
519 ) -> HRESULT,
520 fn ClearHwndProps(
521 hwnd: HWND,
522 idObject: DWORD,
523 idChild: DWORD,
524 paProps: *const MSAAPROPID,
525 cProps: c_int,
526 ) -> HRESULT,
527 fn ComposeHwndIdentityString(
528 hwnd: HWND,
529 idObject: DWORD,
530 idChild: DWORD,
531 ppIDString: *mut *mut BYTE,
532 pdwIDStringLen: *mut DWORD,
533 ) -> HRESULT,
534 fn DecomposeHwndIdentityString(
535 pIDString: *const BYTE,
536 dwIDStringLen: DWORD,
537 phwnd: *mut HWND,
538 pidObject: *mut DWORD,
539 pidChild: *mut DWORD,
540 ) -> HRESULT,
541 fn SetHmenuProp(
542 hmenu: HMENU,
543 idChild: DWORD,
544 idProp: MSAAPROPID,
545 var: VARIANT,
546 ) -> HRESULT,
547 fn SetHmenuPropStr(
548 hmenu: HMENU,
549 idChild: DWORD,
550 idProp: MSAAPROPID,
551 str_: LPCWSTR,
552 ) -> HRESULT,
553 fn SetHmenuPropServer(
554 hmenu: HMENU,
555 idChild: DWORD,
556 paProps: *const MSAAPROPID,
557 cProps: c_int,
558 pServer: *mut IAccPropServer,
559 annoScope: AnnoScope,
560 ) -> HRESULT,
561 fn ClearHmenuProps(
562 hmenu: HMENU,
563 idChild: DWORD,
564 paProps: *const MSAAPROPID,
565 cProps: c_int,
566 ) -> HRESULT,
567 fn ComposeHmenuIdentityString(
568 hmenu: HMENU,
569 idChild: DWORD,
570 ppIDString: *mut *mut BYTE,
571 pdwIDStringLen: *mut DWORD,
572 ) -> HRESULT,
573 fn DecomposeHmenuIdentityString(
574 pIDString: *const BYTE,
575 dwIDStringLen: DWORD,
576 phmenu: *mut HMENU,
577 pidChild: *mut DWORD,
578 ) -> HRESULT,
579}}
580RIDL!{#[uuid(0xb5f8350b, 0x0548, 0x48b1, 0xa6, 0xee, 0x88, 0xbd, 0x00, 0xb4, 0xa5, 0xe7)]
581class CAccPropServices;}
582FN!{stdcall BSTR_UserSize(
583 *mut c_ulong,
584 c_ulong,
585 *mut BSTR,
586) -> c_ulong}
587FN!{stdcall BSTR_UserMarshal(
588 *mut c_ulong,
589 *mut c_uchar,
590 *mut BSTR,
591) -> *mut c_uchar}
592FN!{stdcall BSTR_UserUnmarshal(
593 *mut c_ulong,
594 *mut c_uchar,
595 *mut BSTR,
596) -> *mut c_uchar}
597FN!{stdcall BSTR_UserFree(
598 *mut c_ulong,
599 *mut BSTR,
600) -> c_void}
601FN!{stdcall HMENU_UserSize(
602 *mut c_ulong,
603 c_ulong,
604 *mut HMENU,
605) -> c_ulong}
606FN!{stdcall HMENU_UserMarshal(
607 *mut c_ulong,
608 *mut c_uchar,
609 *mut HMENU,
610) -> *mut c_uchar}
611FN!{stdcall HMENU_UserUnmarshal(
612 *mut c_ulong,
613 *mut c_uchar,
614 *mut HMENU,
615) -> *mut c_uchar}
616FN!{stdcall HMENU_UserFree(
617 *mut c_ulong,
618 *mut HMENU,
619) -> c_void}
620FN!{stdcall HWND_UserSize(
621 *mut c_ulong,
622 c_ulong,
623 *mut HWND,
624) -> c_ulong}
625FN!{stdcall HWND_UserMarshal(
626 *mut c_ulong,
627 *mut c_uchar,
628 *mut HWND,
629) -> *mut c_uchar}
630FN!{stdcall HWND_UserUnmarshal(
631 *mut c_ulong,
632 *mut c_uchar,
633 *mut HWND,
634) -> *mut c_uchar}
635FN!{stdcall HWND_UserFree(
636 *mut c_ulong,
637 *mut HWND,
638) -> c_void}
639FN!{stdcall LPSAFEARRAY_UserSize(
640 *mut c_ulong,
641 c_ulong,
642 *mut LPSAFEARRAY,
643) -> c_ulong}
644FN!{stdcall LPSAFEARRAY_UserMarshal(
645 *mut c_ulong,
646 *mut c_uchar,
647 *mut LPSAFEARRAY,
648) -> *mut c_uchar}
649FN!{stdcall LPSAFEARRAY_UserUnmarshal(
650 *mut c_ulong,
651 *mut c_uchar,
652 *mut LPSAFEARRAY,
653) -> *mut c_uchar}
654FN!{stdcall LPSAFEARRAY_UserFree(
655 *mut c_ulong,
656 *mut LPSAFEARRAY,
657) -> c_void}
658FN!{stdcall VARIANT_UserSize(
659 *mut c_ulong,
660 c_ulong,
661 *mut VARIANT,
662) -> c_ulong}
663FN!{stdcall VARIANT_UserMarshal(
664 *mut c_ulong,
665 *mut c_uchar,
666 *mut VARIANT,
667) -> *mut c_uchar}
668FN!{stdcall VARIANT_UserUnmarshal(
669 *mut c_ulong,
670 *mut c_uchar,
671 *mut VARIANT,
672) -> *mut c_uchar}
673FN!{stdcall VARIANT_UserFree(
674 *mut c_ulong,
675 *mut VARIANT,
676) -> c_void}