Fix the case of product and company names.
[wine] / include / shobjidl.idl
1 /*
2  * COM interfaces for shell objects
3  *
4  * Copyright (C) 1999 Juergen Schmied
5  * Copyright (C) 2003 Alexandre Julliard
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  */
21
22 import "objidl.idl";
23 import "oleidl.idl";
24 import "oaidl.idl";
25 import "shtypes.idl";
26 import "servprov.idl";
27 import "comcat.idl";
28 /*import "propidl.idl";*/
29 /*import "prsht.idl";*/
30 /*import "msxml.idl";*/
31
32
33 /*****************************************************************************
34  * IPersistFolder interface
35  */
36 [
37     object,
38     uuid(000214ea-0000-0000-c000-000000000046),
39     pointer_default(unique)
40 ]
41 interface IPersistFolder : IPersist
42 {
43     typedef IPersistFolder *LPPERSISTFOLDER;
44
45     HRESULT Initialize( [in] LPCITEMIDLIST pidl );
46 }
47
48
49 /*****************************************************************************
50  * IPersistFolder2 interface
51  */
52 [
53     object,
54     uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f),
55     pointer_default(unique)
56 ]
57 interface IPersistFolder2 : IPersistFolder
58 {
59     typedef IPersistFolder2 *LPPERSISTFOLDER2;
60
61     HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl );
62 }
63
64
65 /*****************************************************************************
66  * IEnumIDList interface
67  */
68 [
69     object,
70     uuid(000214f2-0000-0000-c000-000000000046),
71     pointer_default(unique)
72 ]
73 interface IEnumIDList : IUnknown
74 {
75     typedef IEnumIDList *LPENUMIDLIST;
76
77     HRESULT Next(
78         [in] ULONG celt,
79         [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt,
80         [out] ULONG *pceltFetched);
81
82     HRESULT Skip( [in] ULONG celt );
83     HRESULT Reset();
84     HRESULT Clone( [out] IEnumIDList **ppenum );
85 }
86
87
88 /*****************************************************************************
89  * IShellFolder interface
90  */
91 [
92     object,
93     uuid(000214e6-0000-0000-c000-000000000046),
94     pointer_default(unique)
95 ]
96 interface IShellFolder : IUnknown
97 {
98     typedef IShellFolder * LPSHELLFOLDER;
99
100     typedef enum tagSHGDN
101     {
102         SHGDN_NORMAL = 0,
103         SHGDN_INFOLDER = 1,
104         SHGDN_FOREDITING = 0x1000,
105         SHGDN_INCLUDE_NONFILESYS = 0x2000,
106         SHGDN_FORADDRESSBAR = 0x4000,
107         SHGDN_FORPARSING = 0x8000
108     } SHGNO;
109
110     typedef DWORD SHGDNF;
111
112     enum tagSHCONTF
113     {
114         SHCONTF_FOLDERS = 32,
115         SHCONTF_NONFOLDERS = 64,
116         SHCONTF_INCLUDEHIDDEN = 128,
117         SHCONTF_INIT_ON_FIRST_NEXT = 256,
118         SHCONTF_NETPRINTERSRCH = 512,
119         SHCONTF_SHAREABLE = 1024,
120         SHCONTF_STORAGE = 2048
121     };
122
123     typedef DWORD SHCONTF;
124
125     cpp_quote("#define SFGAO_CANCOPY           DROPEFFECT_COPY")
126     cpp_quote("#define SFGAO_CANMOVE           DROPEFFECT_MOVE")
127     cpp_quote("#define SFGAO_CANLINK           DROPEFFECT_LINK")
128     cpp_quote("#define SFGAO_CANRENAME         0x00000010L")
129     cpp_quote("#define SFGAO_CANDELETE         0x00000020L")
130     cpp_quote("#define SFGAO_HASPROPSHEET      0x00000040L")
131     cpp_quote("#define SFGAO_DROPTARGET        0x00000100L")
132     cpp_quote("#define SFGAO_CAPABILITYMASK    0x00000177L")
133     cpp_quote("#define SFGAO_LINK              0x00010000L")
134     cpp_quote("#define SFGAO_SHARE             0x00020000L")
135     cpp_quote("#define SFGAO_READONLY          0x00040000L")
136     cpp_quote("#define SFGAO_GHOSTED           0x00080000L")
137     cpp_quote("#define SFGAO_HIDDEN            0x00080000L")
138     cpp_quote("#define SFGAO_DISPLAYATTRMASK   0x000F0000L")
139     cpp_quote("#define SFGAO_FILESYSANCESTOR   0x10000000L")
140     cpp_quote("#define SFGAO_FOLDER            0x20000000L")
141     cpp_quote("#define SFGAO_FILESYSTEM        0x40000000L")
142     cpp_quote("#define SFGAO_HASSUBFOLDER      0x80000000L")
143     cpp_quote("#define SFGAO_CONTENTSMASK      0x80000000L")
144     cpp_quote("#define SFGAO_VALIDATE          0x01000000L")
145     cpp_quote("#define SFGAO_REMOVABLE         0x02000000L")
146     cpp_quote("#define SFGAO_COMPRESSED        0x04000000L")
147     cpp_quote("#define SFGAO_BROWSABLE         0x08000000L")
148     cpp_quote("#define SFGAO_NONENUMERATED     0x00100000L")
149     cpp_quote("#define SFGAO_NEWCONTENT        0x00200000L")
150
151     typedef ULONG SFGAOF;
152
153     HRESULT ParseDisplayName(
154         [in] HWND hwndOwner,
155         [in] LPBC pbcReserved,
156         [in, string] LPOLESTR lpszDisplayName,
157         [out] ULONG *pchEaten,
158         [out] LPITEMIDLIST *ppidl,
159         [in, out, unique] ULONG *pdwAttributes);
160
161     HRESULT EnumObjects(
162         [in] HWND hwndOwner,
163         [in] SHCONTF grfFlags,
164         [out] IEnumIDList **ppenumIDList);
165
166     HRESULT BindToObject(
167         [in] LPCITEMIDLIST pidl,
168         [in] LPBC pbcReserved,
169         [in] REFIID riid,
170         [out, iid_is(riid)] void **ppvOut);
171
172     HRESULT BindToStorage(
173         [in] LPCITEMIDLIST pidl,
174         [in] LPBC pbcReserved,
175         [in] REFIID riid,
176         [out, iid_is(riid)] void **ppvObj);
177
178     HRESULT CompareIDs(
179         [in] LPARAM lParam,
180         [in] LPCITEMIDLIST pidl1,
181         [in] LPCITEMIDLIST pidl2);
182
183     HRESULT CreateViewObject(
184         [in] HWND hwndOwner,
185         [in] REFIID riid,
186         [out, iid_is(riid)] void **ppvOut);
187
188     HRESULT GetAttributesOf(
189         [in] UINT cidl,
190         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
191         [in, out] SFGAOF *rgfInOut);
192
193     HRESULT GetUIObjectOf(
194         [in] HWND hwndOwner,
195         [in] UINT cidl,
196         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
197         [in] REFIID riid,
198         [in, out, unique] UINT *prgfInOut,
199         [out, iid_is(riid)] void **ppvOut);
200
201     HRESULT GetDisplayNameOf(
202         [in] LPCITEMIDLIST pidl,
203         [in] SHGDNF uFlags,
204         [out] STRRET *lpName);
205
206     HRESULT SetNameOf(
207         [in] HWND hwnd,
208         [in] LPCITEMIDLIST pidl,
209         [in, string] LPCOLESTR lpszName,
210         [in] SHGDNF uFlags,
211         [out] LPITEMIDLIST *ppidlOut);
212 }
213
214
215 /*****************************************************************************
216  * IEnumExtraSearch interface
217  */
218 [
219     object,
220     uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13),
221     pointer_default(unique)
222 ]
223 interface IEnumExtraSearch : IUnknown
224 {
225     typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
226
227     typedef struct
228     {
229         GUID guidSearch;
230         WCHAR wszFriendlyName[80];
231         /*
232          *WCHAR wszMenuText[80];
233          *WCHAR wszHelpText[MAX_PATH];
234          */
235         WCHAR wszUrl[2084];
236         /*
237          *WCHAR wszIcon[MAX_PATH+10];
238          *WCHAR wszGreyIcon[MAX_PATH+10];
239          *WCHAR wszClrIcon[MAX_PATH+10];
240          */
241     } EXTRASEARCH, *LPEXTRASEARCH;
242
243     HRESULT Next(
244         [in] ULONG celt,
245         [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt,
246         [out] ULONG *pceltFetched);
247
248     HRESULT Skip( [in] ULONG celt );
249     HRESULT Reset();
250     HRESULT Clone( [out] IEnumExtraSearch **ppenum );
251 }
252
253
254 /*****************************************************************************
255  * IShellFolder2 interface
256  */
257 [
258     object,
259     uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1),
260     pointer_default(unique)
261 ]
262 interface IShellFolder2 : IShellFolder
263 {
264     typedef enum
265     {
266         SHCOLSTATE_TYPE_STR = 0x00000001,
267         SHCOLSTATE_TYPE_INT = 0x00000002,
268         SHCOLSTATE_TYPE_DATE = 0x00000003,
269         SHCOLSTATE_TYPEMASK = 0x0000000f,
270         SHCOLSTATE_ONBYDEFAULT = 0x00000010,
271         SHCOLSTATE_SLOW = 0x00000020,
272         SHCOLSTATE_EXTENDED = 0x00000040,
273         SHCOLSTATE_SECONDARYUI = 0x00000080,
274         SHCOLSTATE_HIDDEN = 0x00000100,
275         SHCOLSTATE_PREFER_VARCMP = 0x00000200
276     } SHCOLSTATE;
277
278     typedef DWORD SHCOLSTATEF;
279
280     typedef struct
281     {
282         GUID    fmtid;
283         DWORD   pid;
284     } SHCOLUMNID, *LPSHCOLUMNID;
285     typedef const SHCOLUMNID *LPCSHCOLUMNID;
286
287     HRESULT GetDefaultSearchGUID( [out] GUID *lpguid );
288     HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum );
289     HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay );
290     HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags );
291     HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
292     HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
293     HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
294 }
295
296
297
298 /*****************************************************************************
299  * FOLDERSETTINGS
300  */
301 typedef char *LPVIEWSETTINGS;
302
303 typedef enum
304 {
305     FWF_AUTOARRANGE         = 0x00000001,
306     FWF_ABBREVIATEDNAMES    = 0x00000002,
307     FWF_SNAPTOGRID          = 0x00000004,
308     FWF_OWNERDATA           = 0x00000008,
309     FWF_BESTFITWINDOW       = 0x00000010,
310     FWF_DESKTOP             = 0x00000020,
311     FWF_SINGLESEL           = 0x00000040,
312     FWF_NOSUBFOLDERS        = 0x00000080,
313     FWF_TRANSPARENT         = 0x00000100,
314     FWF_NOCLIENTEDGE        = 0x00000200,
315     FWF_NOSCROLL            = 0x00000400,
316     FWF_ALIGNLEFT           = 0x00000800,
317     FWF_NOICONS             = 0x00001000,
318     FWF_SHOWSELALWAYS       = 0x00002000,
319     FWF_NOVISIBLE           = 0x00004000,
320     FWF_SINGLECLICKACTIVATE = 0x00008000,
321     FWF_NOWEBVIEW           = 0x00010000,
322     FWF_HIDEFILENAMES       = 0x00020000,
323     FWF_CHECKSELECT         = 0x00040000
324 } FOLDERFLAGS;
325
326 typedef enum
327 {
328     FVM_ICON       = 1,
329     FVM_FIRST      = FVM_ICON,
330     FVM_SMALLICON  = 2,
331     FVM_LIST       = 3,
332     FVM_DETAILS    = 4,
333     FVM_THUMBNAIL  = 5,
334     FVM_TILE       = 6,
335     FVM_THUMBSTRIP = 7,
336     FVM_LAST       = FVM_THUMBSTRIP
337 } FOLDERVIEWMODE;
338
339 typedef struct
340 {
341     UINT ViewMode;
342     UINT fFlags;
343 } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
344 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
345
346
347 /*****************************************************************************
348  * IShellView interface
349  */
350 interface IShellBrowser;  /* forward declaration */
351 [
352     object,
353     uuid(000214e3-0000-0000-c000-000000000046),
354     pointer_default(unique)
355 ]
356 interface IShellView : IOleWindow
357 {
358     typedef IShellView *LPSHELLVIEW;
359
360     cpp_quote("#define SVSI_DESELECT       0x00000000")
361     cpp_quote("#define SVSI_SELECT         0x00000001")
362     cpp_quote("#define SVSI_EDIT           0x00000003")
363     cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
364     cpp_quote("#define SVSI_ENSUREVISIBLE  0x00000008")
365     cpp_quote("#define SVSI_FOCUSED        0x00000010")
366     cpp_quote("#define SVSI_TRANSLATEPT    0x00000020")
367     cpp_quote("#define SVSI_SELECTIONMARK  0x00000040")
368     cpp_quote("#define SVSI_POSITIONITEM   0x00000080")
369     cpp_quote("#define SVSI_CHECK          0x00000100")
370     cpp_quote("#define SVSI_NOSTATECHANGE  0x80000000")
371
372     typedef UINT SVSIF;
373
374     typedef enum
375     {
376         SVGIO_BACKGROUND     = 0x00000000,
377         SVGIO_SELECTION      = 0x00000001,
378         SVGIO_ALLVIEW        = 0x00000002,
379         SVGIO_CHECKED        = 0x00000003,
380         SVGIO_TYPE_MASK      = 0x0000000f,
381         SVGIO_FLAG_VIEWORDER = 0x80000000,
382     } SVGIO;
383
384     typedef enum
385     {
386         SVUIA_DEACTIVATE       = 0,
387         SVUIA_ACTIVATE_NOFOCUS = 1,
388         SVUIA_ACTIVATE_FOCUS   = 2,
389         SVUIA_INPLACEACTIVATE  = 3
390     } SVUIA_STATUS;
391
392 cpp_quote("#if 0")
393     typedef LPARAM LPFNSVADDPROPSHEETPAGE;
394 cpp_quote("#else")
395 cpp_quote("#include <prsht.h>")
396 cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;")
397 cpp_quote("#endif")
398
399     HRESULT TranslateAccelerator( [in] MSG *pmsg );
400     HRESULT EnableModeless( [in] BOOL fEnable );
401     HRESULT UIActivate( [in] UINT uState );
402     HRESULT Refresh();
403     HRESULT CreateViewWindow(
404         [in] IShellView *psvPrevious,
405         [in] LPCFOLDERSETTINGS lpfs,
406         [in] IShellBrowser *psb,
407         [out] RECT *prcView,
408         [out] HWND *phWnd);
409
410     HRESULT DestroyViewWindow();
411     HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs );
412
413     [local] HRESULT AddPropertySheetPages(
414         [in] DWORD dwReserved,
415         [in] LPFNSVADDPROPSHEETPAGE pfn,
416         [in] LPARAM lparam);
417
418     HRESULT SaveViewState();
419     HRESULT SelectItem(
420         [in] LPCITEMIDLIST pidlItem,
421         [in] SVSIF uFlags);
422     HRESULT GetItemObject(
423         [in] UINT uItem,
424         [in] REFIID riid,
425         [out, iid_is(riid)] void **ppv);
426 }
427
428
429 /*****************************************************************************
430  * IShellBrowser interface
431  */
432 [
433     object,
434     uuid(000214e2-0000-0000-c000-000000000046),
435     pointer_default(unique)
436 ]
437 interface IShellBrowser : IOleWindow
438 {
439     typedef IShellBrowser *LPSHELLBROWSER;
440
441 cpp_quote("#define SBSP_DEFBROWSER            0x00000000")
442 cpp_quote("#define SBSP_SAMEBROWSER           0x00000001")
443 cpp_quote("#define SBSP_NEWBROWSER            0x00000002")
444 cpp_quote("#define SBSP_DEFMODE               0x00000000")
445 cpp_quote("#define SBSP_OPENMODE              0x00000010")
446 cpp_quote("#define SBSP_EXPLOREMODE           0x00000020")
447 cpp_quote("#define SBSP_HELPMODE              0x00000040")
448 cpp_quote("#define SBSP_NOTRANSFERHIST        0x00000080")
449 cpp_quote("#define SBSP_ABSOLUTE              0x00000000")
450 cpp_quote("#define SBSP_RELATIVE              0x00001000")
451 cpp_quote("#define SBSP_PARENT                0x00002000")
452 cpp_quote("#define SBSP_NAVIGATEBACK          0x00004000")
453 cpp_quote("#define SBSP_NAVIGATEFORWARD       0x00008000")
454 cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE    0x00010000")
455 cpp_quote("#define SBSP_NOAUTOSELECT          0x04000000")
456 cpp_quote("#define SBSP_WRITENOHISTORY        0x08000000")
457 cpp_quote("#define SBSP_REDIRECT              0x40000000")
458 cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
459
460 cpp_quote("#define FCW_STATUS      0x0001")
461 cpp_quote("#define FCW_TOOLBAR     0x0002")
462 cpp_quote("#define FCW_TREE        0x0003")
463 cpp_quote("#define FCW_INTERNETBAR 0x0006")
464 cpp_quote("#define FCW_PROGRESS    0x0008")
465
466 cpp_quote("#define FCT_MERGE       0x0001")
467 cpp_quote("#define FCT_CONFIGABLE  0x0002")
468 cpp_quote("#define FCT_ADDTOEND    0x0004")
469
470 cpp_quote("#if 0")
471     typedef LPARAM LPTBBUTTONSB;
472 cpp_quote("#else")
473 cpp_quote("#include <commctrl.h>")
474 cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;")
475 cpp_quote("#endif")
476
477     HRESULT InsertMenusSB(
478         [in] HMENU hmenuShared,
479         [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
480
481     HRESULT SetMenuSB(
482         [in] HMENU hmenuShared,
483         [in] HOLEMENU holemenuReserved,
484         [in] HWND hwndActiveObject);
485
486     HRESULT RemoveMenusSB( [in] HMENU hmenuShared );
487     HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText );
488     HRESULT EnableModelessSB( [in] BOOL fEnable );
489     HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID );
490
491     HRESULT BrowseObject(
492         [in] LPCITEMIDLIST pidl,
493         [in] UINT wFlags);
494
495     HRESULT GetViewStateStream(
496         [in] DWORD grfMode,
497         [out] IStream **ppStrm);
498
499     HRESULT GetControlWindow(
500         [in] UINT id,
501         [out] HWND *phwnd);
502
503     [local] HRESULT SendControlMsg(
504         [in] UINT id,
505         [in] UINT uMsg,
506         [in] WPARAM wParam,
507         [in] LPARAM lParam,
508         [in] LRESULT *pret);
509
510     HRESULT QueryActiveShellView( [out] IShellView **ppshv );
511     HRESULT OnViewWindowActive( [in] IShellView *pshv );
512
513     [local]
514     HRESULT SetToolbarItems(
515         [in] LPTBBUTTONSB lpButtons,
516         [in] UINT nButtons,
517         [in] UINT uFlags);
518 }
519
520
521 /*****************************************************************************
522  * IShellLinkA interface
523  */
524 [
525     object,
526     uuid(000214ee-0000-0000-c000-000000000046),
527     pointer_default(unique)
528 ]
529 interface IShellLinkA : IUnknown
530 {
531     typedef enum
532     {
533         SLR_NO_UI               = 0x0001,
534         SLR_ANY_MATCH           = 0x0002,
535         SLR_UPDATE              = 0x0004,
536         SLR_NOUPDATE            = 0x0008,
537         SLR_NOSEARCH            = 0x0010,
538         SLR_NOTRACK             = 0x0020,
539         SLR_NOLINKINFO          = 0x0040,
540         SLR_INVOKE_MSI          = 0x0080,
541         SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
542     } SLR_FLAGS;
543
544     typedef enum
545     {
546         SLGP_SHORTPATH   = 0x0001,
547         SLGP_UNCPRIORITY = 0x0002,
548         SLGP_RAWPATH     = 0x0004,
549     } SLGP_FLAGS;
550
551     HRESULT GetPath(
552         [out, size_is(cch)] LPSTR pszFile,
553         [in] int cch,
554         [in, out] WIN32_FIND_DATAA *pfd,
555         [in] DWORD fFlags);
556
557     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
558
559     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
560
561     HRESULT GetDescription(
562         [out, size_is(cch)] LPSTR pszName,
563         [in] int cch);
564
565     HRESULT SetDescription( [in] LPCSTR pszName );
566
567     HRESULT GetWorkingDirectory(
568         [out, size_is(cch)] LPSTR pszDir,
569         [in] int cch);
570
571     HRESULT SetWorkingDirectory( [in] LPCSTR pszDir );
572
573     HRESULT GetArguments(
574         [out, size_is(cch)] LPSTR pszArgs,
575         [in] int cch);
576
577     HRESULT SetArguments( [in] LPCSTR pszArgs );
578
579     HRESULT GetHotkey( [out] WORD *pwHotkey );
580
581     HRESULT SetHotkey( [in] WORD wHotkey );
582
583     HRESULT GetShowCmd( [out] int *piShowCmd );
584
585     HRESULT SetShowCmd( [in] int iShowCmd );
586
587     HRESULT GetIconLocation(
588         [out, size_is(cch)] LPSTR pszIconPath,
589         [in] int cch,
590         [out] int *piIcon);
591
592     HRESULT SetIconLocation(
593         [in] LPCSTR pszIconPath,
594         [in] int iIcon);
595
596     HRESULT SetRelativePath(
597         [in] LPCSTR pszPathRel,
598         [in] DWORD dwReserved);
599
600     HRESULT Resolve(
601         [in] HWND hwnd,
602         [in] DWORD fFlags);
603
604     HRESULT SetPath( [in] LPCSTR pszFile );
605 }
606
607
608 /*****************************************************************************
609  * IShellLinkW interface
610  */
611 [
612     object,
613     uuid(000214f9-0000-0000-c000-000000000046),
614     pointer_default(unique)
615 ]
616 interface IShellLinkW : IUnknown
617 {
618     HRESULT GetPath(
619         [out, size_is(cch)] LPWSTR pszFile,
620         [in] int cch,
621         [in, out] WIN32_FIND_DATAW *pfd,
622         [in] DWORD fFlags);
623
624     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
625
626     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
627
628     HRESULT GetDescription(
629         [out, size_is(cch)] LPWSTR pszName,
630         [in] int cch);
631
632     HRESULT SetDescription( [in] LPCWSTR pszName );
633
634     HRESULT GetWorkingDirectory(
635         [out, size_is(cch)] LPWSTR pszDir,
636         [in] int cch);
637
638     HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir );
639
640     HRESULT GetArguments(
641         [out, size_is(cch)] LPWSTR pszArgs,
642         [in] int cch);
643
644     HRESULT SetArguments( [in] LPCWSTR pszArgs );
645
646     HRESULT GetHotkey( [out] WORD *pwHotkey );
647
648     HRESULT SetHotkey( [in] WORD wHotkey );
649
650     HRESULT GetShowCmd( [out] int *piShowCmd );
651
652     HRESULT SetShowCmd( [in] int iShowCmd );
653
654     HRESULT GetIconLocation(
655         [out, size_is(cch)] LPWSTR pszIconPath,
656         [in] int cch,
657         [out] int *piIcon);
658
659     HRESULT SetIconLocation(
660         [in] LPCWSTR pszIconPath,
661         [in] int iIcon);
662
663     HRESULT SetRelativePath(
664         [in] LPCWSTR pszPathRel,
665         [in] DWORD dwReserved);
666
667     HRESULT Resolve(
668         [in] HWND hwnd,
669         [in] DWORD fFlags);
670
671     HRESULT SetPath( [in] LPCWSTR pszFile );
672 }
673
674 cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)")
675
676
677 /*****************************************************************************
678  * IShellExtInit interface
679  */
680 [
681     object,
682     uuid(000214e8-0000-0000-c000-000000000046),
683     pointer_default(unique)
684 ]
685 interface IShellExtInit : IUnknown
686 {
687     typedef IShellExtInit *LPSHELLEXTINIT;
688
689     HRESULT Initialize(
690         [in] LPCITEMIDLIST pidlFolder,
691         [in] IDataObject *pdtobj,
692         [in] HKEY hkeyProgID);
693 }