6cd84385df95584da1ede9f8a8d16a5f8820d6fd
[reactos.git] / reactos / include / psdk / 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 typedef enum _HLSR_NOREDEF10 {
40 HLSR_HOME,
41 HLSR_SEARCHPAGE,
42 HLSR_HISTORYFOLDER
43 } HLSR;
44
45 cpp_quote("HRESULT WINAPI HlinkSetSpecialReference(ULONG uReference, LPCWSTR pwzReference);")
46 cpp_quote("HRESULT WINAPI HlinkGetSpecialReference(ULONG uReference, LPWSTR *ppwzReference);")
47
48 cpp_quote("#define SID_SHlinkFrame IID_IHlinkFrame")
49
50 /*****************************************************************************
51 * IHlink interface
52 */
53 [
54 object,
55 uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
56 pointer_default(unique)
57 ]
58 interface IHlink: IUnknown
59 {
60 typedef [unique] IHlink *LPHLINK;
61
62 typedef enum {
63 HLNF_INTERNALJUMP = 0x00000001,
64 HLNF_OPENINNEWWINDOW = 0x00000002,
65 HLNF_NAVIGATINGBACK = 0x00000004,
66 HLNF_NAVIGATINGFORWARD = 0x00000008,
67 HLNF_NAVIGATINGTOSTACKITEM = 0x00000010,
68 HLNF_CREATENOHISTORY = 0x00000020
69 } HLNF;
70
71 typedef enum {
72 HLINKGETREF_DEFAULT = 0,
73 HLINKGETREF_ABSOLUTE = 1,
74 HLINKGETREF_RELATIVE = 2,
75 } HLINKGETREF;
76
77 typedef enum {
78 HLFNAMEF_DEFAULT = 0x00000000,
79 HLFNAMEF_TRYCACHE = 0x00000001,
80 HLFNAMEF_TRYPRETTYTARGET = 0x00000002,
81 HLFNAMEF_TRYFULLTARGET = 0x00000004,
82 HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008
83 } HLFNAMEF;
84
85 typedef enum {
86 HLINKMISC_RELATIVE = 0x00000001,
87 } HLINKMISC;
88
89 typedef enum {
90 HLINKSETF_TARGET = 0x00000001,
91 HLINKSETF_LOCATION = 0x00000002
92 } HLINKSETF;
93
94 HRESULT SetHlinkSite(
95 [in, unique] IHlinkSite *pihlSite,
96 [in] DWORD dwSiteData);
97
98 HRESULT GetHlinkSite(
99 [out] IHlinkSite **ppihlSite,
100 [out] DWORD *pdwSiteData);
101
102 HRESULT SetMonikerReference(
103 [in] DWORD grfHLSETF,
104 [in, unique] IMoniker *pimkTarget,
105 [in, unique] LPCWSTR pwzLocation);
106
107 HRESULT GetMonikerReference(
108 [in] DWORD dwWhichRef,
109 [out] IMoniker **ppimkTarget,
110 [out] LPWSTR *ppwzLocation);
111
112 HRESULT SetStringReference(
113 [in] DWORD grfHLSETF,
114 [in, unique] LPCWSTR pwzTarget,
115 [in, unique] LPCWSTR pwzLocation);
116
117 HRESULT GetStringReference(
118 [in] DWORD dwWhichRef,
119 [out] LPWSTR *ppwzTarget,
120 [out] LPWSTR *ppwzLocation);
121
122 HRESULT SetFriendlyName(
123 [in, unique] LPCWSTR pwzFriendlyName);
124
125 HRESULT GetFriendlyName(
126 [in] DWORD grfHLFNAMEF,
127 [out] LPWSTR *ppwzFriendlyName);
128
129 HRESULT SetTargetFrameName(
130 [in, unique] LPCWSTR pwzTargetFrameName);
131
132 HRESULT GetTargetFrameName(
133 [out] LPWSTR *ppwzTargetFrameName);
134
135 HRESULT GetMiscStatus(
136 [out] DWORD *pdwStatus);
137
138 HRESULT Navigate(
139 [in] DWORD grfHLNF,
140 [in, unique] LPBC pibc,
141 [in, unique] IBindStatusCallback *pibsc,
142 [in, unique] IHlinkBrowseContext *pihlbc);
143
144 HRESULT SetAdditionalParams(
145 [in, unique] LPCWSTR pwzAdditionalParams);
146
147 HRESULT GetAdditionalParams(
148 [out] LPWSTR *ppwzAdditionalParams);
149 }
150
151 /*****************************************************************************
152 * IHlink interface
153 */
154 [
155 object,
156 uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
157 pointer_default(unique)
158 ]
159 interface IHlinkSite: IUnknown
160 {
161 typedef [unique] IHlinkSite *LPHLINKSITE;
162
163 typedef enum {
164 HLINKWHICHMK_CONTAINER = 1,
165 HLINKWHICHMK_BASE = 2,
166 } HLINKWHICHMK;
167
168 HRESULT QueryService(
169 [in] DWORD dwSiteData,
170 [in] REFGUID guidService,
171 [in] REFIID riid,
172 [out, iid_is(riid)] IUnknown **ppiunk);
173
174 HRESULT GetMoniker(
175 [in] DWORD dwSiteData,
176 [in] DWORD dwAssign,
177 [in] DWORD dwWhich,
178 [out] IMoniker **ppimk);
179
180 HRESULT ReadyToNavigate(
181 [in] DWORD dwSiteData,
182 [in] DWORD dwReserved);
183
184 HRESULT OnNavigationComplete(
185 [in] DWORD dwSiteData,
186 [in] DWORD dwreserved,
187 [in] HRESULT hrError,
188 [in, unique] LPCWSTR pwzError);
189 }
190
191 /*****************************************************************************
192 * IEnumHLITEM interface
193 */
194 [
195 local,
196 object,
197 uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
198 pointer_default(unique)
199 ]
200 interface IEnumHLITEM : IUnknown
201 {
202 typedef [unique] IEnumHLITEM *LPENUMHLITEM;
203
204 typedef struct tagHLITEM {
205 ULONG uHLID;
206 LPWSTR pwzFriendlyName;
207 } HLITEM;
208 typedef [unique] HLITEM *LPHLITEM;
209
210 HRESULT Next(
211 [in] ULONG celt,
212 [out] HLITEM *rgelt,
213 [out] ULONG *pceltFetched);
214
215 HRESULT Skip(
216 [in] ULONG celt);
217
218 HRESULT Reset();
219
220 HRESULT Clone(
221 [out] IEnumHLITEM **ppienumhlitem);
222 }
223
224 /*****************************************************************************
225 * IHlinkBrowseContext interface
226 */
227 [
228 local,
229 object,
230 uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
231 pointer_default(unique)
232 ]
233 interface IHlinkBrowseContext : IUnknown
234 {
235 typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
236
237 enum {
238 HLTB_DOCKEDLEFT = 0,
239 HLTB_DOCKEDTOP = 1,
240 HLTB_DOCKEDRIGHT = 2,
241 HLTB_DOCKEDBOTTOM = 3,
242 HLTB_FLOATING = 4
243 };
244
245 typedef struct _tagHLTBINFO {
246 ULONG uDockType;
247 RECT rcTbPos;
248 } HLTBINFO;
249
250 enum {
251 HLBWIF_HASFRAMEWNDINFO = 0x00000001,
252 HLBWIF_HASDOCWNDINFO = 0x00000002,
253 HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004,
254 HLBWIF_DOCWNDMAXIMIZED = 0x00000008,
255 HLBWIF_HASWEBTOOLBARINFO = 0x00000010,
256 HLBWIF_WEBTOOLBARHIDDEN = 0x00000020
257 };
258
259 typedef struct _tagHLBWINFO {
260 ULONG cbSize;
261 DWORD grfHLBWIF;
262 RECT rcFramePos;
263 RECT rcDocPos;
264 HLTBINFO hltbinfo;
265 } HLBWINFO;
266
267 typedef [unique] HLBWINFO *LPHLBWINFO;
268
269 enum {
270 HLID_INVALID = 0x00000000,
271 HLID_PREVIOUS = 0xFFFFFFFF,
272 HLID_NEXT = 0xFFFFFFFE,
273 HLID_CURRENT = 0xFFFFFFFD,
274 HLID_STACKBOTTOM = 0xFFFFFFFC,
275 HLID_STACKTOP = 0xFFFFFFFB
276 };
277
278 enum {
279 HLQF_ISVALID = 0x00000001,
280 HLQF_ISCURRENT = 0x00000002
281 };
282
283 HRESULT Register(
284 [in] DWORD reserved,
285 [in, unique] IUnknown *piunk,
286 [in, unique] IMoniker *pimk,
287 [out] DWORD *pdwRegister);
288
289 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
290 cpp_quote("#undef GetObject")
291 cpp_quote("#endif")
292
293 HRESULT GetObject(
294 [in, unique] IMoniker *pimk,
295 [in] BOOL fBindIfRootRegistered,
296 [out] IUnknown **ppiunk);
297
298 HRESULT Revoke(
299 [in] DWORD dwRegister);
300
301 HRESULT SetBrowseWindowInfo(
302 [in, unique] HLBWINFO *phlbwi);
303
304 HRESULT GetBrowseWindowInfo(
305 [out] HLBWINFO *phlbwi);
306
307 HRESULT SetInitialHlink(
308 [in, unique] IMoniker * pimkTarget,
309 [in, unique] LPCWSTR pwzLocation,
310 [in, unique] LPCWSTR pwzFriendlyName);
311
312 HRESULT OnNavigateHlink(
313 [in] DWORD grfHLNF,
314 [in, unique] IMoniker *pimkTarget,
315 [in, unique] LPCWSTR pwzLocation,
316 [in, unique] LPCWSTR pwzFriendlyName,
317 [out] ULONG *puHLID);
318
319 HRESULT UpdateHlink(
320 [in] ULONG uHLID,
321 [in, unique] IMoniker *pimkTarget,
322 [in, unique] LPCWSTR pwzLocation,
323 [in, unique] LPCWSTR pwzFriendlyName);
324
325 HRESULT EnumNavigationStack(
326 [in] DWORD dwReserved,
327 [in] DWORD grfHLFNAMEF,
328 [out] IEnumHLITEM **ppienumhlitem);
329
330 HRESULT QueryHlink(
331 [in] DWORD grfHLQF,
332 [in] ULONG uHLID);
333
334 HRESULT GetHlink(
335 [in] ULONG uHLID,
336 [out] IHlink **ppihl);
337
338 HRESULT SetCurrentHlink(
339 [in] ULONG uHLID);
340
341 HRESULT Clone(
342 [in, unique] IUnknown *piunkOuter,
343 [in] REFIID riid,
344 [out, iid_is(riid)] IUnknown **ppiunkObj);
345
346 HRESULT Close(
347 [in] DWORD reserved);
348 }
349
350
351 /*****************************************************************************
352 * IHlinkTarget interface
353 */
354 [
355 object,
356 uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
357 pointer_default(unique)
358 ]
359 interface IHlinkTarget : IUnknown
360 {
361 typedef [unique] IHlinkTarget *LPHLINKTARGET;
362
363 HRESULT SetBrowseContext(
364 [in, unique] IHlinkBrowseContext *pihlbc);
365
366 HRESULT GetBrowseContext(
367 [out] IHlinkBrowseContext **ppihlbc);
368
369 HRESULT Navigate(
370 [in] DWORD grfHLNF,
371 [in, unique] LPCWSTR pwzJumpLocation);
372
373 HRESULT GetMoniker(
374 [in,unique] LPCWSTR pwzLocation,
375 [in] DWORD dwAssign,
376 [out] IMoniker **ppimkLocation);
377
378 HRESULT GetFriendlyName(
379 [in,unique] LPCWSTR pwzLocation,
380 [out] LPWSTR *ppwzFriendlyName);
381 }
382
383 /*****************************************************************************
384 * IHlinkFrame interface
385 */
386 [
387 object,
388 uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
389 pointer_default(unique)
390 ]
391
392 interface IHlinkFrame : IUnknown
393 {
394 typedef IHlinkFrame *LPHLINKFRAME;
395
396 HRESULT SetBrowseContext(
397 [in, unique] IHlinkBrowseContext * pihlbc);
398 HRESULT GetBrowseContext(
399 [out] IHlinkBrowseContext ** ppihlbc);
400 HRESULT Navigate(
401 [in] DWORD grfHLNF,
402 [in, unique] LPBC pbc,
403 [in, unique] IBindStatusCallback *pibsc,
404 [in, unique] IHlink *pihlNavigate);
405 HRESULT OnNavigate(
406 [in] DWORD grfHLNF,
407 [in, unique] IMoniker *pimkTarget,
408 [in, unique] LPCWSTR pwzLocation,
409 [in, unique] LPCWSTR pwzFriendlyName,
410 [in] DWORD dwreserved);
411 HRESULT UpdateHlink(
412 [in] ULONG uHLID,
413 [in, unique] IMoniker *pimkTarget,
414 [in, unique] LPCWSTR pwzLocation,
415 [in, unique] LPCWSTR pwzFriendlyName);
416 }