mpr: Move MAX_INTERFACE_NAME_LEN to mprapi.h and add related constants.
[wine] / include / hlink.idl
1 /*
2  * Copyright 2005 Jacek Caban
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "urlmon.idl";
20
21 interface IHlink;
22 interface IHlinkSite;
23 interface IHlinkFrame;
24 interface IHlinkBrowseContext;
25
26 cpp_quote("HRESULT WINAPI HlinkCreateFromMoniker(IMoniker*, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
27 cpp_quote("HRESULT WINAPI HlinkCreateFromString(LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
28 cpp_quote("HRESULT WINAPI HlinkCreateFromData(IDataObject*, IHlinkSite*, DWORD dwSiteData, IUnknown*, REFIID, void**);")
29 cpp_quote("HRESULT WINAPI HlinkCreateExtensionServices(LPCWSTR, HWND, LPCWSTR, LPCWSTR, IUnknown*, REFIID, void**);")
30 cpp_quote("HRESULT WINAPI HlinkQueryCreateFromData(IDataObject*);")
31 cpp_quote("HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);")
32 cpp_quote("HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);")
33 cpp_quote("HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
34 cpp_quote("HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
35 cpp_quote("HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);")
36 cpp_quote("HRESULT WINAPI HlinkIsShortcut(LPCWSTR);")
37 cpp_quote("HRESULT WINAPI HlinkTranslateURL(LPCWSTR,DWORD,LPWSTR*);")
38
39 cpp_quote("#define SID_SHlinkFrame IID_IHlinkFrame")
40
41 /*****************************************************************************
42  *    IHlink interface
43  */
44 [
45     object,
46     uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
47     pointer_default(unique)
48 ]
49 interface IHlink: IUnknown
50 {
51     typedef [unique] IHlink *LPHLINK;
52
53     typedef enum {
54         HLNF_INTERNALJUMP          = 0x00000001,
55         HLNF_OPENINNEWWINDOW       = 0x00000002,
56         HLNF_NAVIGATINGBACK        = 0x00000004,
57         HLNF_NAVIGATINGFORWARD     = 0x00000008,
58         HLNF_NAVIGATINGTOSTACKITEM = 0x00000010,
59         HLNF_CREATENOHISTORY       = 0x00000020
60     } HLNF;
61
62     typedef enum {
63         HLINKGETREF_DEFAULT  = 0,
64         HLINKGETREF_ABSOLUTE = 1,
65         HLINKGETREF_RELATIVE = 2,
66     } HLINKGETREF;
67
68     typedef enum {
69         HLFNAMEF_DEFAULT          = 0x00000000,
70         HLFNAMEF_TRYCACHE         = 0x00000001,
71         HLFNAMEF_TRYPRETTYTARGET  = 0x00000002,
72         HLFNAMEF_TRYFULLTARGET    = 0x00000004,
73         HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008
74     } HLFNAMEF;
75
76     typedef enum {
77         HLINKMISC_RELATIVE = 0x00000001,
78     } HLINKMISC;
79
80     typedef enum {
81         HLINKSETF_TARGET   = 0x00000001,
82         HLINKSETF_LOCATION = 0x00000002
83     } HLINKSETF;
84
85     HRESULT SetHlinkSite(
86         [in, unique] IHlinkSite *pihlSite,
87         [in] DWORD dwSiteData);
88
89     HRESULT GetHlinkSite(
90         [out] IHlinkSite **ppihlSite,
91         [out] DWORD *pdwSiteData);
92
93     HRESULT SetMonikerReference(
94         [in] DWORD grfHLSETF,
95         [in, unique] IMoniker *pimkTarget,
96         [in, unique] LPCWSTR pwzLocation);
97
98     HRESULT GetMonikerReference(
99         [in]  DWORD dwWhichRef,
100         [out] IMoniker **ppimkTarget,
101         [out] LPWSTR *ppwzLocation);
102
103     HRESULT SetStringReference(
104         [in] DWORD grfHLSETF,
105         [in, unique] LPCWSTR pwzTarget,
106         [in, unique] LPCWSTR pwzLocation);
107
108     HRESULT GetStringReference(
109         [in]  DWORD dwWhichRef,
110         [out] LPWSTR *ppwzTarget,
111         [out] LPWSTR *ppwzLocation);
112
113     HRESULT SetFriendlyName(
114         [in, unique] LPCWSTR pwzFriendlyName);
115
116     HRESULT GetFriendlyName(
117         [in]  DWORD grfHLFNAMEF,
118         [out] LPWSTR *ppwzFriendlyName);
119
120     HRESULT SetTargetFrameName(
121         [in, unique] LPCWSTR pwzTargetFrameName);
122
123     HRESULT GetTargetFrameName(
124         [out] LPWSTR *ppwzTargetFrameName);
125
126     HRESULT GetMiscStatus(
127         [out] DWORD *pdwStatus);
128
129     HRESULT Navigate(
130         [in] DWORD grfHLNF,
131         [in, unique] LPBC pibc,
132         [in, unique] IBindStatusCallback *pibsc,
133         [in, unique] IHlinkBrowseContext *pihlbc);
134
135     HRESULT SetAdditionalParams(
136         [in, unique] LPCWSTR pwzAdditionalParams);
137
138     HRESULT GetAdditionalParams(
139         [out] LPWSTR *ppwzAdditionalParams);
140 }
141
142 /*****************************************************************************
143  *    IHlink interface
144  */
145 [
146     object,
147     uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
148     pointer_default(unique)
149 ]
150 interface IHlinkSite: IUnknown
151 {
152     typedef [unique] IHlinkSite *LPHLINKSITE;
153
154     typedef enum {
155         HLINKWHICHMK_CONTAINER = 1,
156         HLINKWHICHMK_BASE      = 2,
157     } HLINKWHICHMK;
158
159     HRESULT QueryService(
160         [in] DWORD dwSiteData,
161         [in] REFGUID guidService,
162         [in] REFIID riid,
163         [out, iid_is(riid)] IUnknown **ppiunk);
164
165     HRESULT GetMoniker(
166         [in] DWORD dwSiteData,
167         [in] DWORD dwAssign,
168         [in] DWORD dwWhich,
169         [out] IMoniker **ppimk);
170
171     HRESULT ReadyToNavigate(
172         [in] DWORD dwSiteData,
173         [in] DWORD dwReserved);
174
175     HRESULT OnNavigationComplete(
176         [in] DWORD dwSiteData,
177         [in] DWORD dwreserved,
178         [in] HRESULT hrError,
179         [in, unique] LPCWSTR pwzError);
180 }
181
182 /*****************************************************************************
183  *    IEnumHLITEM interface
184  */
185 [
186     local,
187     object,
188     uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
189     pointer_default(unique)
190 ]
191 interface IEnumHLITEM : IUnknown
192 {
193     typedef [unique] IEnumHLITEM *LPENUMHLITEM;
194
195     typedef struct tagHLITEM {
196         ULONG  uHLID;
197         LPWSTR pwzFriendlyName;
198     } HLITEM;
199     typedef [unique] HLITEM *LPHLITEM;
200
201     HRESULT Next(
202         [in]  ULONG celt,
203         [out] HLITEM *rgelt,
204         [out] ULONG *pceltFetched);
205
206     HRESULT Skip(
207         [in] ULONG celt);
208
209     HRESULT Reset();
210
211     HRESULT Clone(
212         [out] IEnumHLITEM **ppienumhlitem);
213 }
214
215 /*****************************************************************************
216  *    IHlinkBrowseContext interface
217  */
218 [
219     local,
220     object,
221     uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
222     pointer_default(unique)
223 ]
224 interface IHlinkBrowseContext : IUnknown
225 {
226     typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
227
228     enum {
229         HLTB_DOCKEDLEFT    = 0,
230         HLTB_DOCKEDTOP     = 1,
231         HLTB_DOCKEDRIGHT   = 2,
232         HLTB_DOCKEDBOTTOM  = 3,
233         HLTB_FLOATING      = 4
234     };
235
236     typedef struct _tagHLTBINFO {
237         ULONG uDockType;
238         RECT  rcTbPos;
239     } HLTBINFO;
240
241     enum {
242         HLBWIF_HASFRAMEWNDINFO   = 0x00000001,
243         HLBWIF_HASDOCWNDINFO     = 0x00000002,
244         HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004,
245         HLBWIF_DOCWNDMAXIMIZED   = 0x00000008,
246         HLBWIF_HASWEBTOOLBARINFO = 0x00000010,
247         HLBWIF_WEBTOOLBARHIDDEN  = 0x00000020
248     };
249
250     typedef struct _tagHLBWINFO {
251         ULONG    cbSize;
252         DWORD    grfHLBWIF;
253         RECT     rcFramePos;
254         RECT     rcDocPos;
255         HLTBINFO hltbinfo;
256     } HLBWINFO;
257
258     typedef [unique] HLBWINFO *LPHLBWINFO;
259
260     enum {
261         HLID_INVALID     = 0x00000000,
262         HLID_PREVIOUS    = 0xFFFFFFFF,
263         HLID_NEXT        = 0xFFFFFFFE,
264         HLID_CURRENT     = 0xFFFFFFFD,
265         HLID_STACKBOTTOM = 0xFFFFFFFC,
266         HLID_STACKTOP    = 0xFFFFFFFB
267     };
268
269     enum {
270         HLQF_ISVALID   = 0x00000001,
271         HLQF_ISCURRENT = 0x00000002
272     };
273
274     HRESULT Register(
275         [in] DWORD reserved,
276         [in, unique] IUnknown *piunk,
277         [in, unique] IMoniker *pimk,
278         [out] DWORD *pdwRegister);
279
280     HRESULT GetObject(
281         [in, unique] IMoniker *pimk,
282         [in] BOOL fBindIfRootRegistered,
283         [out] IUnknown **ppiunk);
284
285     HRESULT Revoke(
286         [in] DWORD dwRegister);
287
288     HRESULT SetBrowseWindowInfo(
289         [in, unique] HLBWINFO *phlbwi);
290
291     HRESULT GetBrowseWindowInfo(
292         [out] HLBWINFO *phlbwi);
293
294     HRESULT SetInitialHlink(
295         [in, unique] IMoniker * pimkTarget,
296         [in, unique] LPCWSTR pwzLocation,
297         [in, unique] LPCWSTR pwzFriendlyName);
298
299     HRESULT OnNavigateHlink(
300         [in] DWORD grfHLNF,
301         [in, unique] IMoniker *pimkTarget,
302         [in, unique] LPCWSTR pwzLocation,
303         [in, unique] LPCWSTR pwzFriendlyName,
304         [out] ULONG *puHLID);
305
306     HRESULT UpdateHlink(
307         [in] ULONG uHLID,
308         [in, unique] IMoniker *pimkTarget,
309         [in, unique] LPCWSTR pwzLocation,
310         [in, unique] LPCWSTR pwzFriendlyName);
311
312     HRESULT EnumNavigationStack(
313         [in] DWORD dwReserved,
314         [in] DWORD grfHLFNAMEF,
315         [out] IEnumHLITEM **ppienumhlitem);
316
317     HRESULT QueryHlink(
318         [in] DWORD grfHLQF,
319         [in] ULONG uHLID);
320
321     HRESULT GetHlink(
322         [in] ULONG uHLID,
323         [out] IHlink **ppihl);
324
325     HRESULT SetCurrentHlink(
326         [in] ULONG uHLID);
327
328     HRESULT Clone(
329         [in, unique] IUnknown *piunkOuter,
330         [in] REFIID riid,
331         [out, iid_is(riid)] IUnknown **ppiunkObj);
332
333     HRESULT Close(
334         [in] DWORD reserved);
335 }
336
337
338 /*****************************************************************************
339  *    IHlinkTarget interface
340  */
341 [
342     object,
343     uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
344     pointer_default(unique)
345 ]
346 interface IHlinkTarget : IUnknown
347 {
348     typedef [unique] IHlinkTarget *LPHLINKTARGET;
349
350     HRESULT SetBrowseContext(
351         [in, unique] IHlinkBrowseContext *pihlbc);
352
353     HRESULT GetBrowseContext(
354         [out] IHlinkBrowseContext **ppihlbc);
355
356     HRESULT Navigate(
357         [in] DWORD grfHLNF,
358         [in, unique] LPCWSTR pwzJumpLocation);
359
360     HRESULT GetMoniker(
361         [in,unique]  LPCWSTR pwzLocation,
362         [in] DWORD dwAssign,
363         [out] IMoniker **ppimkLocation);
364
365     HRESULT GetFriendlyName(
366         [in,unique]  LPCWSTR pwzLocation,
367         [out] LPWSTR *ppwzFriendlyName);
368 }
369
370 /*****************************************************************************
371  *    IHlinkFrame interface
372  */
373 [
374     object,
375     uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
376     pointer_default(unique)
377 ]
378
379 interface IHlinkFrame : IUnknown
380 {
381     typedef IHlinkFrame *LPHLINKFRAME;
382
383     HRESULT SetBrowseContext( 
384         [in, unique] IHlinkBrowseContext * pihlbc);
385     HRESULT GetBrowseContext( 
386         [out] IHlinkBrowseContext ** ppihlbc);
387     HRESULT Navigate( 
388         [in] DWORD grfHLNF, 
389         [in, unique] LPBC pbc, 
390         [in, unique] IBindStatusCallback *pibsc, 
391         [in, unique] IHlink *pihlNavigate);
392     HRESULT OnNavigate( 
393         [in] DWORD grfHLNF, 
394         [in, unique] IMoniker *pimkTarget, 
395         [in, unique] LPCWSTR pwzLocation, 
396         [in, unique] LPCWSTR pwzFriendlyName, 
397         [in] DWORD dwreserved);
398     HRESULT UpdateHlink( 
399         [in] ULONG uHLID, 
400         [in, unique] IMoniker *pimkTarget, 
401         [in, unique] LPCWSTR pwzLocation, 
402         [in, unique] LPCWSTR pwzFriendlyName);
403 }