uia_classes.idl 3.52 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/*
 * Copyright 2022 Connor McAdams 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
 */

19
#pragma makedep regtypelib
20 21

import "oaidl.idl";
22
import "uiautomationcore.idl";
23

24 25 26
struct uia_prop_info {
    const GUID *guid;
    int prop_id;
27
    int prop_type;
28
    int type;
29
    int pattern_id;
30 31
};

32 33 34 35 36 37
struct uia_event_info {
    const GUID *guid;
    int event_id;
    int event_arg_type;
};

38 39 40 41 42 43
struct uia_pattern_info {
    const GUID *guid;
    int pattern_id;
    const GUID *pattern_iid;
};

44 45 46 47 48
struct uia_control_type_info {
    const GUID *guid;
    int control_type_id;
};

49
[
50 51
   version(1.0),
   uuid(8a9ca8eb-856b-43d9-abd7-4a590054064f),
52
   id(1),
53
]
54
library UIA_wine_private
55
{
56
    importlib("stdole2.tlb");
57

58 59 60 61 62 63 64 65 66 67
    [
        object,
        uuid(9a754e12-e570-49ab-b223-6f6871007d28),
        pointer_default(unique),
    ]
    interface IWineUiaEventAdviser : IUnknown
    {
        HRESULT advise([in]BOOL advise_added, [in]LONG_PTR huiaevent);
    }

68 69 70 71
    [
        object,
        uuid(5e60162c-ab0e-4e22-a61d-3a3acd442aba),
        pointer_default(unique),
72
        oleautomation,
73 74 75
    ]
    interface IWineUiaEvent : IUnknown
    {
76
        HRESULT advise_events([in]BOOL advise_added, [in]long adviser_start_idx);
77 78
        HRESULT set_event_data([in]const GUID *event_guid, [in]long scope, [in]VARIANT runtime_id,
                               [in]IWineUiaEvent *event_iface);
79
        HRESULT raise_event([in]VARIANT in_node, [in]VARIANT in_nav_start_node);
80 81
    }

82 83 84 85 86 87 88 89 90
    [
        object,
        uuid(57865755-6c05-4522-98df-4ca658b768ef),
        pointer_default(unique),
        oleautomation,
    ]
    interface IWineUiaProvider : IUnknown
    {
        HRESULT get_prop_val([in]const struct uia_prop_info *prop_info, [out, retval]VARIANT *ret_val);
91
        HRESULT get_prov_opts([out, retval]int *out_opts);
92
        HRESULT has_parent([out, retval]BOOL *out_val);
93
        HRESULT navigate([in]int nav_dir, [out, retval]VARIANT *ret_val);
94
        HRESULT get_focus([in]long flags, [out, retval]VARIANT *ret_val);
95
        HRESULT attach_event([in]LONG_PTR huiaevent);
96 97
        HRESULT respond_to_win_event([in]DWORD win_event, [in]ULONG hwnd, [in]LONG obj_id, [in]LONG child_id,
                                    [in]IProxyProviderWinEventSink *sink);
98
        HRESULT create_node_from_prov([in]long flags, [out, retval]VARIANT *ret_val);
99 100 101 102 103 104
    }

    [
        object,
        uuid(bccb6799-d831-4057-bd50-6425823ff1a3),
        pointer_default(unique),
105
        oleautomation,
106 107 108
    ]
    interface IWineUiaNode : IUnknown
    {
109
        HRESULT get_provider([in]int idx, [out, retval]IWineUiaProvider **out_prov);
110
        HRESULT get_prop_val([in]const GUID *prop_guid, [out, retval]VARIANT *ret_val);
111
        HRESULT disconnect();
112
        HRESULT get_hwnd([out, retval]ULONG *out_hwnd);
113
        HRESULT attach_event([in]long proc_id, [in]long event_cookie, [out, retval]IWineUiaEvent **ret_event);
114
    }
115
}