shlwapi: Add tests for PathCanonicalize.
[wine/wine64.git] / include / hlink.idl
blob8843dc0b5e91981745933aa67cdfbe910d99e85e
1 /*
2 * Copyright 2005 Jacek Caban
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.
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.
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
19 import "urlmon.idl";
21 interface IHlink;
22 interface IHlinkSite;
23 interface IHlinkFrame;
24 interface IHlinkBrowseContext;
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 HlinkQueryCreateFromData(IDataObject*);");
30 cpp_quote("HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);");
31 cpp_quote("HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);");
32 cpp_quote("HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);");
33 cpp_quote("HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);");
34 cpp_quote("HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);");
36 /*****************************************************************************
37 * IHlink interface
40 object,
41 uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
42 pointer_default(unique)
44 interface IHlink: IUnknown
46 typedef [unique] IHlink *LPHLINK;
48 typedef enum {
49 HLNF_INTERNALJUMP = 0x00000001,
50 HLNF_OPENINNEWWINDOW = 0x00000002,
51 HLNF_NAVIGATINGBACK = 0x00000004,
52 HLNF_NAVIGATINGFORWARD = 0x00000008,
53 HLNF_NAVIGATINGTOSTACKITEM = 0x00000010,
54 HLNF_CREATENOHISTORY = 0x00000020
55 } HLNF;
57 typedef enum {
58 HLINKGETREF_DEFAULT = 0,
59 HLINKGETREF_ABSOLUTE = 1,
60 HLINKGETREF_RELATIVE = 2,
61 } HLINKGETREF;
63 typedef enum {
64 HLFNAMEF_DEFAULT = 0x00000000,
65 HLFNAMEF_TRYCACHE = 0x00000001,
66 HLFNAMEF_TRYPRETTYTARGET = 0x00000002,
67 HLFNAMEF_TRYFULLTARGET = 0x00000004,
68 HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008
69 } HLFNAMEF;
71 typedef enum {
72 HLINKMISC_RELATIVE = 0x00000001,
73 } HLINKMISC;
75 typedef enum {
76 HLINKSETF_TARGET = 0x00000001,
77 HLINKSETF_LOCATION = 0x00000002
78 } HLINKSETF;
80 HRESULT SetHlinkSite(
81 [in, unique] IHlinkSite *pihlSite,
82 [in] DWORD dwSiteData);
84 HRESULT GetHlinkSite(
85 [out] IHlinkSite **ppihlSite,
86 [out] DWORD *pdwSiteData);
88 HRESULT SetMonikerReference(
89 [in] DWORD grfHLSETF,
90 [in, unique] IMoniker *pimkTarget,
91 [in, unique] LPCWSTR pwzLocation);
93 HRESULT GetMonikerReference(
94 [in] DWORD dwWhichRef,
95 [out] IMoniker **ppimkTarget,
96 [out] LPWSTR *ppwzLocation);
98 HRESULT SetStringReference(
99 [in] DWORD grfHLSETF,
100 [in, unique] LPCWSTR pwzTarget,
101 [in, unique] LPCWSTR pwzLocation);
103 HRESULT GetStringReference(
104 [in] DWORD dwWhichRef,
105 [out] LPWSTR *ppwzTarget,
106 [out] LPWSTR *ppwzLocation);
108 HRESULT SetFriendlyName(
109 [in, unique] LPCWSTR pwzFriendlyName);
111 HRESULT GetFriendlyName(
112 [in] DWORD grfHLFNAMEF,
113 [out] LPWSTR *ppwzFriendlyName);
115 HRESULT SetTargetFrameName(
116 [in, unique] LPCWSTR pwzTargetFrameName);
118 HRESULT GetTargetFrameName(
119 [out] LPWSTR *ppwzTargetFrameName);
121 HRESULT GetMiscStatus(
122 [out] DWORD *pdwStatus);
124 HRESULT Navigate(
125 [in] DWORD grfHLNF,
126 [in, unique] LPBC pibc,
127 [in, unique] IBindStatusCallback *pibsc,
128 [in, unique] IHlinkBrowseContext *pihlbc);
130 HRESULT SetAdditionalParams(
131 [in, unique] LPCWSTR pwzAdditionalParams);
133 HRESULT GetAdditionalParams(
134 [out] LPWSTR *ppwzAdditionalParams);
137 /*****************************************************************************
138 * IHlink interface
141 object,
142 uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
143 pointer_default(unique)
145 interface IHlinkSite: IUnknown
147 typedef [unique] IHlinkSite *LPHLINKSITE;
149 typedef enum {
150 HLINKWHICHMK_CONTAINER = 1,
151 HLINKWHICHMK_BASE = 2,
152 } HLINKWHICHMK;
154 HRESULT QueryService(
155 [in] DWORD dwSiteData,
156 [in] REFGUID guidService,
157 [in] REFIID riid,
158 [out, iid_is(riid)] IUnknown **ppiunk);
160 HRESULT GetMoniker(
161 [in] DWORD dwSiteData,
162 [in] DWORD dwAssign,
163 [in] DWORD dwWhich,
164 [out] IMoniker **ppimk);
166 HRESULT ReadyToNavigate(
167 [in] DWORD dwSiteData,
168 [in] DWORD dwReserved);
170 HRESULT OnNavigationComplete(
171 [in] DWORD dwSiteData,
172 [in] DWORD dwreserved,
173 [in] HRESULT hrError,
174 [in, unique] LPCWSTR pwzError);
177 /*****************************************************************************
178 * IEnumHLITEM interface
181 local,
182 object,
183 uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
184 pointer_default(unique)
186 interface IEnumHLITEM : IUnknown
188 typedef [unique] IEnumHLITEM *LPENUMHLITEM;
190 typedef struct tagHLITEM {
191 ULONG uHLID;
192 LPWSTR pwzFriendlyName;
193 } HLITEM;
194 typedef [unique] HLITEM *LPHLITEM;
196 HRESULT Next(
197 [in] ULONG celt,
198 [out] HLITEM *rgelt,
199 [out] ULONG *pceltFetched);
201 HRESULT Skip(
202 [in] ULONG celt);
204 HRESULT Reset();
206 HRESULT Clone(
207 [out] IEnumHLITEM **ppienumhlitem);
210 /*****************************************************************************
211 * IHlinkBrowseContext interface
214 local,
215 object,
216 uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
217 pointer_default(unique)
219 interface IHlinkBrowseContext : IUnknown
221 typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
223 enum {
224 HLTB_DOCKEDLEFT = 0,
225 HLTB_DOCKEDTOP = 1,
226 HLTB_DOCKEDRIGHT = 2,
227 HLTB_DOCKEDBOTTOM = 3,
228 HLTB_FLOATING = 4
231 typedef struct _tagHLTBINFO {
232 ULONG uDockType;
233 RECT rcTbPos;
234 } HLTBINFO;
236 enum {
237 HLBWIF_HASFRAMEWNDINFO = 0x00000001,
238 HLBWIF_HASDOCWNDINFO = 0x00000002,
239 HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004,
240 HLBWIF_DOCWNDMAXIMIZED = 0x00000008,
241 HLBWIF_HASWEBTOOLBARINFO = 0x00000010,
242 HLBWIF_WEBTOOLBARHIDDEN = 0x00000020
245 typedef struct _tagHLBWINFO {
246 ULONG cbSize;
247 DWORD grfHLBWIF;
248 RECT rcFramePos;
249 RECT rcDocPos;
250 HLTBINFO hltbinfo;
251 } HLBWINFO;
253 typedef [unique] HLBWINFO *LPHLBWINFO;
255 enum {
256 HLID_INVALID = 0x00000000,
257 HLID_PREVIOUS = 0xFFFFFFFF,
258 HLID_NEXT = 0xFFFFFFFE,
259 HLID_CURRENT = 0xFFFFFFFD,
260 HLID_STACKBOTTOM = 0xFFFFFFFC,
261 HLID_STACKTOP = 0xFFFFFFFB
264 enum {
265 HLQF_ISVALID = 0x00000001,
266 HLQF_ISCURRENT = 0x00000002
269 HRESULT Register(
270 [in] DWORD reserved,
271 [in, unique] IUnknown *piunk,
272 [in, unique] IMoniker *pimk,
273 [out] DWORD *pdwRegister);
275 HRESULT GetObject(
276 [in, unique] IMoniker *pimk,
277 [in] BOOL fBindIfRootRegistered,
278 [out] IUnknown **ppiunk);
280 HRESULT Revoke(
281 [in] DWORD dwRegister);
283 HRESULT SetBrowseWindowInfo(
284 [in, unique] HLBWINFO *phlbwi);
286 HRESULT GetBrowseWindowInfo(
287 [out] HLBWINFO *phlbwi);
289 HRESULT SetInitialHlink(
290 [in, unique] IMoniker * pimkTarget,
291 [in, unique] LPCWSTR pwzLocation,
292 [in, unique] LPCWSTR pwzFriendlyName);
294 HRESULT OnNavigateHlink(
295 [in] DWORD grfHLNF,
296 [in, unique] IMoniker *pimkTarget,
297 [in, unique] LPCWSTR pwzLocation,
298 [in, unique] LPCWSTR pwzFriendlyName,
299 [out] ULONG *puHLID);
301 HRESULT UpdateHlink(
302 [in] ULONG uHLID,
303 [in, unique] IMoniker *pimkTarget,
304 [in, unique] LPCWSTR pwzLocation,
305 [in, unique] LPCWSTR pwzFriendlyName);
307 HRESULT EnumNavigationStack(
308 [in] DWORD dwReserved,
309 [in] DWORD grfHLFNAMEF,
310 [out] IEnumHLITEM **ppienumhlitem);
312 HRESULT QueryHlink(
313 [in] DWORD grfHLQF,
314 [in] ULONG uHLID);
316 HRESULT GetHlink(
317 [in] ULONG uHLID,
318 [out] IHlink **ppihl);
320 HRESULT SetCurrentHlink(
321 [in] ULONG uHLID);
323 HRESULT Clone(
324 [in, unique] IUnknown *piunkOuter,
325 [in] REFIID riid,
326 [out, iid_is(riid)] IUnknown **ppiunkObj);
328 HRESULT Close(
329 [in] DWORD reserved);
333 /*****************************************************************************
334 * IHlinkTarget interface
337 object,
338 uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
339 pointer_default(unique)
341 interface IHlinkTarget : IUnknown
343 typedef [unique] IHlinkTarget *LPHLINKTARGET;
345 HRESULT SetBrowseContext(
346 [in, unique] IHlinkBrowseContext *pihlbc);
348 HRESULT GetBrowseContext(
349 [out] IHlinkBrowseContext **ppihlbc);
351 HRESULT Navigate(
352 [in] DWORD grfHLNF,
353 [in, unique] LPCWSTR pwzJumpLocation);
355 HRESULT GetMoniker(
356 [in,unique] LPCWSTR pwzLocation,
357 [in] DWORD dwAssign,
358 [out] IMoniker **ppimkLocation);
360 HRESULT GetFriendlyName(
361 [in,unique] LPCWSTR pwzLocation,
362 [out] LPWSTR *ppwzFriendlyName);
365 /*****************************************************************************
366 * IHlinkFrame interface
369 object,
370 uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
371 pointer_default(unique)
374 interface IHlinkFrame : IUnknown
376 typedef IHlinkFrame *LPHLINKFRAME;
378 HRESULT SetBrowseContext(
379 [in, unique] IHlinkBrowseContext * pihlbc);
380 HRESULT GetBrowseContext(
381 [out] IHlinkBrowseContext ** ppihlbc);
382 HRESULT Navigate(
383 [in] DWORD grfHLNF,
384 [in, unique] LPBC pbc,
385 [in, unique] IBindStatusCallback *pibsc,
386 [in, unique] IHlink *pihlNavigate);
387 HRESULT OnNavigate(
388 [in] DWORD grfHLNF,
389 [in, unique] IMoniker *pimkTarget,
390 [in, unique] LPCWSTR pwzLocation,
391 [in, unique] LPCWSTR pwzFriendlyName,
392 [in] DWORD dwreserved);
393 HRESULT UpdateHlink(
394 [in] ULONG uHLID,
395 [in, unique] IMoniker *pimkTarget,
396 [in, unique] LPCWSTR pwzLocation,
397 [in, unique] LPCWSTR pwzFriendlyName);