shobjidl.idl: Added NWMF declaration.
[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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21
22 import "objidl.idl";
23 import "oleidl.idl";
24 import "oaidl.idl";
25 import "docobj.idl";
26 import "shtypes.idl";
27 import "servprov.idl";
28 import "comcat.idl";
29 import "propidl.idl";
30 /* FIXME: import "prsht.idl";*/
31 import "msxml.idl";
32 import "wtypes.idl";
33 /* FIXME: import "propsys.idl"; */
34 /* FIXME: import "structuredquery.idl"; */
35
36 cpp_quote("/* FIXME: #include <sherrors.h> */")
37
38
39 /*****************************************************************************
40  * IPersistFolder interface
41  */
42 [
43     object,
44     uuid(000214ea-0000-0000-c000-000000000046),
45     pointer_default(unique)
46 ]
47 interface IPersistFolder : IPersist
48 {
49     typedef IPersistFolder *LPPERSISTFOLDER;
50
51     HRESULT Initialize( [in] LPCITEMIDLIST pidl );
52 }
53
54
55 /*****************************************************************************
56  * IPersistFolder2 interface
57  */
58 [
59     object,
60     uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f),
61     pointer_default(unique)
62 ]
63 interface IPersistFolder2 : IPersistFolder
64 {
65     typedef IPersistFolder2 *LPPERSISTFOLDER2;
66
67     HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl );
68 }
69
70
71 /*****************************************************************************
72  * IPersistIDList interface
73  */
74 [
75     object,
76     uuid(1079acfc-29bd-11d3-8e0d-00c04f6837d5),
77     pointer_default(unique)
78 ]
79 interface IPersistIDList : IPersist
80 {
81     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
82     HRESULT GetIDList( [out] LPITEMIDLIST *ppidl );
83 }
84
85
86 /*****************************************************************************
87  * IEnumIDList interface
88  */
89 [
90     object,
91     uuid(000214f2-0000-0000-c000-000000000046),
92     pointer_default(unique)
93 ]
94 interface IEnumIDList : IUnknown
95 {
96     typedef IEnumIDList *LPENUMIDLIST;
97
98     HRESULT Next(
99         [in] ULONG celt,
100         [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt,
101         [out] ULONG *pceltFetched);
102
103     HRESULT Skip( [in] ULONG celt );
104     HRESULT Reset();
105     HRESULT Clone( [out] IEnumIDList **ppenum );
106 }
107
108 /*****************************************************************************
109  * IShellPropSheetExt interface
110  */
111 cpp_quote("#if 0")
112     typedef LPARAM LPFNSVADDPROPSHEETPAGE;
113 cpp_quote("#else")
114 cpp_quote("#include <prsht.h>")
115 cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;")
116 cpp_quote("#endif")
117
118 [
119     object,
120     uuid(000214E9-0000-0000-C000-000000000046),
121     pointer_default(unique),
122     local
123 ]
124 interface IShellPropSheetExt : IUnknown
125 {
126     enum tagSHELLPROPSHEETEXTPAGEID {
127         EXPPS_FILETYPES = 0x1
128     };
129
130     typedef UINT EXPPS;
131
132     HRESULT AddPages(
133         [in] LPFNSVADDPROPSHEETPAGE pfnAddPage,
134         [in] LPARAM lParam);
135     HRESULT ReplacePage(
136         [in] EXPPS uPageID,
137         [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith,
138         [in] LPARAM lParam);
139 }
140 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
141
142 /*****************************************************************************
143  * IShellFolder interface
144  */
145 [
146     object,
147     uuid(000214e6-0000-0000-c000-000000000046),
148     pointer_default(unique)
149 ]
150 interface IShellFolder : IUnknown
151 {
152     typedef IShellFolder * LPSHELLFOLDER;
153
154     typedef enum tagSHGDN
155     {
156         SHGDN_NORMAL = 0,
157         SHGDN_INFOLDER = 1,
158         SHGDN_FOREDITING = 0x1000,
159         SHGDN_INCLUDE_NONFILESYS = 0x2000,
160         SHGDN_FORADDRESSBAR = 0x4000,
161         SHGDN_FORPARSING = 0x8000
162     } SHGNO;
163
164     typedef DWORD SHGDNF;
165
166     enum tagSHCONTF
167     {
168         SHCONTF_FOLDERS = 32,
169         SHCONTF_NONFOLDERS = 64,
170         SHCONTF_INCLUDEHIDDEN = 128,
171         SHCONTF_INIT_ON_FIRST_NEXT = 256,
172         SHCONTF_NETPRINTERSRCH = 512,
173         SHCONTF_SHAREABLE = 1024,
174         SHCONTF_STORAGE = 2048
175     };
176
177     typedef DWORD SHCONTF;
178
179     cpp_quote("#define SFGAO_CANCOPY           DROPEFFECT_COPY")
180     cpp_quote("#define SFGAO_CANMOVE           DROPEFFECT_MOVE")
181     cpp_quote("#define SFGAO_CANLINK           DROPEFFECT_LINK")
182     cpp_quote("#define SFGAO_STORAGE           0x00000008L")
183     cpp_quote("#define SFGAO_CANRENAME         0x00000010L")
184     cpp_quote("#define SFGAO_CANDELETE         0x00000020L")
185     cpp_quote("#define SFGAO_HASPROPSHEET      0x00000040L")
186     cpp_quote("#define SFGAO_DROPTARGET        0x00000100L")
187     cpp_quote("#define SFGAO_CAPABILITYMASK    0x00000177L")
188     cpp_quote("#define SFGAO_ENCRYPTED         0x00002000L")
189     cpp_quote("#define SFGAO_ISSLOW            0x00004000L")
190     cpp_quote("#define SFGAO_GHOSTED           0x00008000L")
191     cpp_quote("#define SFGAO_LINK              0x00010000L")
192     cpp_quote("#define SFGAO_SHARE             0x00020000L")
193     cpp_quote("#define SFGAO_READONLY          0x00040000L")
194     cpp_quote("#define SFGAO_HIDDEN            0x00080000L")
195     cpp_quote("#define SFGAO_DISPLAYATTRMASK   0x000FC000L")
196     cpp_quote("#define SFGAO_FILESYSANCESTOR   0x10000000L")
197     cpp_quote("#define SFGAO_FOLDER            0x20000000L")
198     cpp_quote("#define SFGAO_FILESYSTEM        0x40000000L")
199     cpp_quote("#define SFGAO_HASSUBFOLDER      0x80000000L")
200     cpp_quote("#define SFGAO_CONTENTSMASK      0x80000000L")
201     cpp_quote("#define SFGAO_VALIDATE          0x01000000L")
202     cpp_quote("#define SFGAO_REMOVABLE         0x02000000L")
203     cpp_quote("#define SFGAO_COMPRESSED        0x04000000L")
204     cpp_quote("#define SFGAO_BROWSABLE         0x08000000L")
205     cpp_quote("#define SFGAO_NONENUMERATED     0x00100000L")
206     cpp_quote("#define SFGAO_NEWCONTENT        0x00200000L")
207     cpp_quote("#define SFGAO_STREAM            0x00400000L")
208     cpp_quote("#define SFGAO_STORAGEANCESTOR   0x00800000L")
209
210     typedef ULONG SFGAOF;
211
212     HRESULT ParseDisplayName(
213         [in] HWND hwndOwner,
214         [in] LPBC pbcReserved,
215         [in, string] LPOLESTR lpszDisplayName,
216         [out] ULONG *pchEaten,
217         [out] LPITEMIDLIST *ppidl,
218         [in, out, unique] ULONG *pdwAttributes);
219
220     HRESULT EnumObjects(
221         [in] HWND hwndOwner,
222         [in] SHCONTF grfFlags,
223         [out] IEnumIDList **ppenumIDList);
224
225     HRESULT BindToObject(
226         [in] LPCITEMIDLIST pidl,
227         [in] LPBC pbcReserved,
228         [in] REFIID riid,
229         [out, iid_is(riid)] void **ppvOut);
230
231     HRESULT BindToStorage(
232         [in] LPCITEMIDLIST pidl,
233         [in] LPBC pbcReserved,
234         [in] REFIID riid,
235         [out, iid_is(riid)] void **ppvObj);
236
237     HRESULT CompareIDs(
238         [in] LPARAM lParam,
239         [in] LPCITEMIDLIST pidl1,
240         [in] LPCITEMIDLIST pidl2);
241
242     HRESULT CreateViewObject(
243         [in] HWND hwndOwner,
244         [in] REFIID riid,
245         [out, iid_is(riid)] void **ppvOut);
246
247     HRESULT GetAttributesOf(
248         [in] UINT cidl,
249         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
250         [in, out] SFGAOF *rgfInOut);
251
252     HRESULT GetUIObjectOf(
253         [in] HWND hwndOwner,
254         [in] UINT cidl,
255         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
256         [in] REFIID riid,
257         [in, out, unique] UINT *prgfInOut,
258         [out, iid_is(riid)] void **ppvOut);
259
260     HRESULT GetDisplayNameOf(
261         [in] LPCITEMIDLIST pidl,
262         [in] SHGDNF uFlags,
263         [out] STRRET *lpName);
264
265     HRESULT SetNameOf(
266         [in] HWND hwnd,
267         [in] LPCITEMIDLIST pidl,
268         [in, string] LPCOLESTR lpszName,
269         [in] SHGDNF uFlags,
270         [out] LPITEMIDLIST *ppidlOut);
271 }
272
273
274 /*****************************************************************************
275  * IEnumExtraSearch interface
276  */
277 [
278     object,
279     uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13),
280     pointer_default(unique)
281 ]
282 interface IEnumExtraSearch : IUnknown
283 {
284     typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
285
286     typedef struct
287     {
288         GUID guidSearch;
289         WCHAR wszFriendlyName[80];
290         /*
291          *WCHAR wszMenuText[80];
292          *WCHAR wszHelpText[MAX_PATH];
293          */
294         WCHAR wszUrl[2084];
295         /*
296          *WCHAR wszIcon[MAX_PATH+10];
297          *WCHAR wszGreyIcon[MAX_PATH+10];
298          *WCHAR wszClrIcon[MAX_PATH+10];
299          */
300     } EXTRASEARCH, *LPEXTRASEARCH;
301
302     HRESULT Next(
303         [in] ULONG celt,
304         [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt,
305         [out] ULONG *pceltFetched);
306
307     HRESULT Skip( [in] ULONG celt );
308     HRESULT Reset();
309     HRESULT Clone( [out] IEnumExtraSearch **ppenum );
310 }
311
312
313 /*****************************************************************************
314  * IShellFolder2 interface
315  */
316 [
317     object,
318     uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1),
319     pointer_default(unique)
320 ]
321 interface IShellFolder2 : IShellFolder
322 {
323     typedef struct
324     {
325         GUID    fmtid;
326         DWORD   pid;
327     } SHCOLUMNID, *LPSHCOLUMNID;
328     typedef const SHCOLUMNID *LPCSHCOLUMNID;
329
330     HRESULT GetDefaultSearchGUID( [out] GUID *lpguid );
331     HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum );
332     HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay );
333     HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags );
334     HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
335     HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
336     HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
337 }
338
339 /*****************************************************************************
340  * IShellItem interface
341  */
342 [
343     object,
344     uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe),
345     pointer_default(unique)
346 ]
347 interface IShellItem : IUnknown
348 {
349     typedef DWORD SIGDN;
350
351     typedef DWORD SICHINTF;
352
353     HRESULT BindToHandler(
354         [in] IBindCtx *pbc,
355         [in] REFGUID rbhid,
356         [in] REFIID riid,
357         [out, iid_is(riid)] void **ppvOut);
358
359     HRESULT GetParent( [out] IShellItem **ppsi );
360
361     HRESULT GetDisplayName(
362         [in] SIGDN sigdnName,
363         [out] LPWSTR *ppszName);
364
365     HRESULT GetAttributes(
366         [in] SFGAOF sfgaoMask,
367         [out] SFGAOF *psfgaoAttribs);
368
369     HRESULT Compare(
370         [in] IShellItem *psi,
371         [in] SICHINTF hint,
372         [out] int *piOrder);
373 }
374
375 typedef enum tagNWMF {
376     NWMF_UNLOADING        = 0x0001,
377     NWMF_USERINITED       = 0x0002,
378     NWMF_FIRST            = 0x0004,
379     NWMF_OVERRIDEKEY      = 0x0008,
380     NWMF_SHOWHELP         = 0x0010,
381     NWMF_HTMLDIALOG       = 0x0020,
382     NWMF_FROMDIALOGCHILD  = 0x0040,
383     NWMF_USERREQUESTED    = 0x0080,
384     NWMF_USERALLOWED      = 0x0100
385 } NWMF;
386
387 /*****************************************************************************
388  * FOLDERSETTINGS
389  */
390 typedef char *LPVIEWSETTINGS;
391
392 typedef enum
393 {
394     FWF_AUTOARRANGE         = 0x00000001,
395     FWF_ABBREVIATEDNAMES    = 0x00000002,
396     FWF_SNAPTOGRID          = 0x00000004,
397     FWF_OWNERDATA           = 0x00000008,
398     FWF_BESTFITWINDOW       = 0x00000010,
399     FWF_DESKTOP             = 0x00000020,
400     FWF_SINGLESEL           = 0x00000040,
401     FWF_NOSUBFOLDERS        = 0x00000080,
402     FWF_TRANSPARENT         = 0x00000100,
403     FWF_NOCLIENTEDGE        = 0x00000200,
404     FWF_NOSCROLL            = 0x00000400,
405     FWF_ALIGNLEFT           = 0x00000800,
406     FWF_NOICONS             = 0x00001000,
407     FWF_SHOWSELALWAYS       = 0x00002000,
408     FWF_NOVISIBLE           = 0x00004000,
409     FWF_SINGLECLICKACTIVATE = 0x00008000,
410     FWF_NOWEBVIEW           = 0x00010000,
411     FWF_HIDEFILENAMES       = 0x00020000,
412     FWF_CHECKSELECT         = 0x00040000
413 } FOLDERFLAGS;
414
415 typedef enum
416 {
417     FVM_ICON       = 1,
418     FVM_FIRST      = FVM_ICON,
419     FVM_SMALLICON  = 2,
420     FVM_LIST       = 3,
421     FVM_DETAILS    = 4,
422     FVM_THUMBNAIL  = 5,
423     FVM_TILE       = 6,
424     FVM_THUMBSTRIP = 7,
425     FVM_LAST       = FVM_THUMBSTRIP
426 } FOLDERVIEWMODE;
427
428 typedef struct
429 {
430     UINT ViewMode;
431     UINT fFlags;
432 } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
433 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
434
435 /*****************************************************************************
436  * IShellIcon interface
437  */
438 [
439     uuid(000214e5-0000-0000-c000-000000000046),
440     object,
441     pointer_default(unique)
442 ]
443 interface IShellIcon : IUnknown
444 {
445     HRESULT GetIconOf(
446         [in] PCUITEMID_CHILD pidl,
447         [in] UINT flags,
448         [out] int *pIconIndex);
449 }
450
451 /*****************************************************************************
452  * IShellView interface
453  */
454 interface IShellBrowser;  /* forward declaration */
455 [
456     object,
457     uuid(000214e3-0000-0000-c000-000000000046),
458     pointer_default(unique)
459 ]
460 interface IShellView : IOleWindow
461 {
462     typedef IShellView *LPSHELLVIEW;
463
464     cpp_quote("#define SVSI_DESELECT       0x00000000")
465     cpp_quote("#define SVSI_SELECT         0x00000001")
466     cpp_quote("#define SVSI_EDIT           0x00000003")
467     cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
468     cpp_quote("#define SVSI_ENSUREVISIBLE  0x00000008")
469     cpp_quote("#define SVSI_FOCUSED        0x00000010")
470     cpp_quote("#define SVSI_TRANSLATEPT    0x00000020")
471     cpp_quote("#define SVSI_SELECTIONMARK  0x00000040")
472     cpp_quote("#define SVSI_POSITIONITEM   0x00000080")
473     cpp_quote("#define SVSI_CHECK          0x00000100")
474     cpp_quote("#define SVSI_NOSTATECHANGE  0x80000000")
475
476     typedef UINT SVSIF;
477
478     typedef enum
479     {
480         SVGIO_BACKGROUND     = 0x00000000,
481         SVGIO_SELECTION      = 0x00000001,
482         SVGIO_ALLVIEW        = 0x00000002,
483         SVGIO_CHECKED        = 0x00000003,
484         SVGIO_TYPE_MASK      = 0x0000000f,
485         SVGIO_FLAG_VIEWORDER = 0x80000000,
486     } SVGIO;
487
488     typedef enum
489     {
490         SVUIA_DEACTIVATE       = 0,
491         SVUIA_ACTIVATE_NOFOCUS = 1,
492         SVUIA_ACTIVATE_FOCUS   = 2,
493         SVUIA_INPLACEACTIVATE  = 3
494     } SVUIA_STATUS;
495
496     HRESULT TranslateAccelerator( [in] MSG *pmsg );
497     HRESULT EnableModeless( [in] BOOL fEnable );
498     HRESULT UIActivate( [in] UINT uState );
499     HRESULT Refresh();
500     HRESULT CreateViewWindow(
501         [in] IShellView *psvPrevious,
502         [in] LPCFOLDERSETTINGS lpfs,
503         [in] IShellBrowser *psb,
504         [out] RECT *prcView,
505         [out] HWND *phWnd);
506
507     HRESULT DestroyViewWindow();
508     HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs );
509
510     [local] HRESULT AddPropertySheetPages(
511         [in] DWORD dwReserved,
512         [in] LPFNSVADDPROPSHEETPAGE pfn,
513         [in] LPARAM lparam);
514
515     HRESULT SaveViewState();
516     HRESULT SelectItem(
517         [in] LPCITEMIDLIST pidlItem,
518         [in] SVSIF uFlags);
519     HRESULT GetItemObject(
520         [in] UINT uItem,
521         [in] REFIID riid,
522         [out, iid_is(riid)] void **ppv);
523 }
524
525 [
526     object,
527     uuid(88e39e80-3578-11cf-ae69-08002b2e1262),
528     pointer_default(unique)
529 ]
530 interface IShellView2 : IShellView
531 {
532     typedef GUID SHELLVIEWID;
533 cpp_quote("#include <pshpack8.h>")
534     typedef struct _SV2CVW2_PARAMS
535     {
536         DWORD cbSize;
537         IShellView *psvPrev;
538         LPCFOLDERSETTINGS pfs;
539         IShellBrowser *psbOwner;
540         RECT *prcView;
541         SHELLVIEWID const *pvid;
542         HWND hwndView;
543     } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS;
544 cpp_quote("#include <poppack.h>")
545
546     HRESULT GetView(
547         [in, out] SHELLVIEWID *view_guid,
548         [in] ULONG view_type
549     );
550     HRESULT CreateViewWindow2(
551         [in] LPSV2CVW2_PARAMS view_params
552     );
553     HRESULT HandleRename(
554         [in] LPCITEMIDLIST new_pidl
555     );
556     HRESULT SelectAndPositionItem(
557         [in] LPCITEMIDLIST item,
558         [in] UINT flags,
559         [in] POINT *point
560     );
561 }
562
563 /*****************************************************************************
564  * IFolderView interface
565  */
566 [
567     uuid(cde725b0-ccc9-4519-917e-325d72fab4ce),
568     object,
569     pointer_default(unique)
570 ]
571 interface IFolderView : IUnknown
572 {
573     HRESULT GetCurrentViewMode( [out] UINT *mode );
574     HRESULT SetCurrentViewMode( [in] UINT mode );
575     HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv );
576     HRESULT Item(
577         [in] int index,
578         [out] PITEMID_CHILD *ppidl
579     );
580     HRESULT ItemCount(
581         [in] UINT flags,
582         [out] int *items
583     );
584     HRESULT Items(
585         [in] UINT flags,
586         [in] REFIID riid,
587         [out, iid_is(riid)] void **ppv
588     );
589     HRESULT GetSelectionMarkedItem( [out] int *item );
590     HRESULT GetFocusedItem( [out] int *item );
591     HRESULT GetItemPosition(
592         [in] PCUITEMID_CHILD pidl,
593         [out] POINT* ppt
594     );
595     HRESULT GetSpacing( [in, out, unique] POINT* pt );
596     HRESULT GetDefaultSpacing( [out] POINT* pt );
597     HRESULT GetAutoArrange();
598     HRESULT SelectItem(
599         [in] int item,
600         [in] DWORD flags
601     );
602     HRESULT SelectAndPositionItems(
603         [in] UINT cidl,
604         [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
605         [in, unique, size_is(cidl)] POINT* apt,
606         [in] DWORD flags
607     );
608 }
609
610 /*****************************************************************************
611  * IShellBrowser interface
612  */
613 [
614     object,
615     uuid(000214e2-0000-0000-c000-000000000046),
616     pointer_default(unique)
617 ]
618 interface IShellBrowser : IOleWindow
619 {
620     typedef IShellBrowser *LPSHELLBROWSER;
621
622 cpp_quote("#define SBSP_DEFBROWSER            0x00000000")
623 cpp_quote("#define SBSP_SAMEBROWSER           0x00000001")
624 cpp_quote("#define SBSP_NEWBROWSER            0x00000002")
625 cpp_quote("#define SBSP_DEFMODE               0x00000000")
626 cpp_quote("#define SBSP_OPENMODE              0x00000010")
627 cpp_quote("#define SBSP_EXPLOREMODE           0x00000020")
628 cpp_quote("#define SBSP_HELPMODE              0x00000040")
629 cpp_quote("#define SBSP_NOTRANSFERHIST        0x00000080")
630 cpp_quote("#define SBSP_ABSOLUTE              0x00000000")
631 cpp_quote("#define SBSP_RELATIVE              0x00001000")
632 cpp_quote("#define SBSP_PARENT                0x00002000")
633 cpp_quote("#define SBSP_NAVIGATEBACK          0x00004000")
634 cpp_quote("#define SBSP_NAVIGATEFORWARD       0x00008000")
635 cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE    0x00010000")
636 cpp_quote("#define SBSP_NOAUTOSELECT          0x04000000")
637 cpp_quote("#define SBSP_WRITENOHISTORY        0x08000000")
638 cpp_quote("#define SBSP_REDIRECT              0x40000000")
639 cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
640
641 cpp_quote("#define FCW_STATUS      0x0001")
642 cpp_quote("#define FCW_TOOLBAR     0x0002")
643 cpp_quote("#define FCW_TREE        0x0003")
644 cpp_quote("#define FCW_INTERNETBAR 0x0006")
645 cpp_quote("#define FCW_PROGRESS    0x0008")
646
647 cpp_quote("#define FCT_MERGE       0x0001")
648 cpp_quote("#define FCT_CONFIGABLE  0x0002")
649 cpp_quote("#define FCT_ADDTOEND    0x0004")
650
651 cpp_quote("#if 0")
652     typedef LPARAM LPTBBUTTONSB;
653 cpp_quote("#else")
654 cpp_quote("#include <commctrl.h>")
655 cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;")
656 cpp_quote("#endif")
657
658     HRESULT InsertMenusSB(
659         [in] HMENU hmenuShared,
660         [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
661
662     HRESULT SetMenuSB(
663         [in] HMENU hmenuShared,
664         [in] HOLEMENU holemenuReserved,
665         [in] HWND hwndActiveObject);
666
667     HRESULT RemoveMenusSB( [in] HMENU hmenuShared );
668     HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText );
669     HRESULT EnableModelessSB( [in] BOOL fEnable );
670     HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID );
671
672     HRESULT BrowseObject(
673         [in] LPCITEMIDLIST pidl,
674         [in] UINT wFlags);
675
676     HRESULT GetViewStateStream(
677         [in] DWORD grfMode,
678         [out] IStream **ppStrm);
679
680     HRESULT GetControlWindow(
681         [in] UINT id,
682         [out] HWND *phwnd);
683
684     [local] HRESULT SendControlMsg(
685         [in] UINT id,
686         [in] UINT uMsg,
687         [in] WPARAM wParam,
688         [in] LPARAM lParam,
689         [in] LRESULT *pret);
690
691     HRESULT QueryActiveShellView( [out] IShellView **ppshv );
692     HRESULT OnViewWindowActive( [in] IShellView *pshv );
693
694     [local]
695     HRESULT SetToolbarItems(
696         [in] LPTBBUTTONSB lpButtons,
697         [in] UINT nButtons,
698         [in] UINT uFlags);
699 }
700
701
702 /*****************************************************************************
703  * IShellLinkA interface
704  */
705 [
706     object,
707     uuid(000214ee-0000-0000-c000-000000000046),
708     pointer_default(unique)
709 ]
710 interface IShellLinkA : IUnknown
711 {
712     typedef enum
713     {
714         SLR_NO_UI               = 0x0001,
715         SLR_ANY_MATCH           = 0x0002,
716         SLR_UPDATE              = 0x0004,
717         SLR_NOUPDATE            = 0x0008,
718         SLR_NOSEARCH            = 0x0010,
719         SLR_NOTRACK             = 0x0020,
720         SLR_NOLINKINFO          = 0x0040,
721         SLR_INVOKE_MSI          = 0x0080,
722         SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
723     } SLR_FLAGS;
724
725     typedef enum
726     {
727         SLGP_SHORTPATH   = 0x0001,
728         SLGP_UNCPRIORITY = 0x0002,
729         SLGP_RAWPATH     = 0x0004,
730     } SLGP_FLAGS;
731
732     HRESULT GetPath(
733         [out, size_is(cch)] LPSTR pszFile,
734         [in] int cch,
735         [in, out, unique] WIN32_FIND_DATAA *pfd,
736         [in] DWORD fFlags);
737
738     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
739
740     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
741
742     HRESULT GetDescription(
743         [out, size_is(cch)] LPSTR pszName,
744         [in] int cch);
745
746     HRESULT SetDescription( [in] LPCSTR pszName );
747
748     HRESULT GetWorkingDirectory(
749         [out, size_is(cch)] LPSTR pszDir,
750         [in] int cch);
751
752     HRESULT SetWorkingDirectory( [in] LPCSTR pszDir );
753
754     HRESULT GetArguments(
755         [out, size_is(cch)] LPSTR pszArgs,
756         [in] int cch);
757
758     HRESULT SetArguments( [in] LPCSTR pszArgs );
759
760     HRESULT GetHotkey( [out] WORD *pwHotkey );
761
762     HRESULT SetHotkey( [in] WORD wHotkey );
763
764     HRESULT GetShowCmd( [out] int *piShowCmd );
765
766     HRESULT SetShowCmd( [in] int iShowCmd );
767
768     HRESULT GetIconLocation(
769         [out, size_is(cch)] LPSTR pszIconPath,
770         [in] int cch,
771         [out] int *piIcon);
772
773     HRESULT SetIconLocation(
774         [in] LPCSTR pszIconPath,
775         [in] int iIcon);
776
777     HRESULT SetRelativePath(
778         [in] LPCSTR pszPathRel,
779         [in] DWORD dwReserved);
780
781     HRESULT Resolve(
782         [in] HWND hwnd,
783         [in] DWORD fFlags);
784
785     HRESULT SetPath( [in] LPCSTR pszFile );
786 }
787
788
789 /*****************************************************************************
790  * IShellLinkW interface
791  */
792 [
793     object,
794     uuid(000214f9-0000-0000-c000-000000000046),
795     pointer_default(unique)
796 ]
797 interface IShellLinkW : IUnknown
798 {
799     HRESULT GetPath(
800         [out, size_is(cch)] LPWSTR pszFile,
801         [in] int cch,
802         [in, out] WIN32_FIND_DATAW *pfd,
803         [in] DWORD fFlags);
804
805     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
806
807     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
808
809     HRESULT GetDescription(
810         [out, size_is(cch)] LPWSTR pszName,
811         [in] int cch);
812
813     HRESULT SetDescription( [in] LPCWSTR pszName );
814
815     HRESULT GetWorkingDirectory(
816         [out, size_is(cch)] LPWSTR pszDir,
817         [in] int cch);
818
819     HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir );
820
821     HRESULT GetArguments(
822         [out, size_is(cch)] LPWSTR pszArgs,
823         [in] int cch);
824
825     HRESULT SetArguments( [in] LPCWSTR pszArgs );
826
827     HRESULT GetHotkey( [out] WORD *pwHotkey );
828
829     HRESULT SetHotkey( [in] WORD wHotkey );
830
831     HRESULT GetShowCmd( [out] int *piShowCmd );
832
833     HRESULT SetShowCmd( [in] int iShowCmd );
834
835     HRESULT GetIconLocation(
836         [out, size_is(cch)] LPWSTR pszIconPath,
837         [in] int cch,
838         [out] int *piIcon);
839
840     HRESULT SetIconLocation(
841         [in] LPCWSTR pszIconPath,
842         [in] int iIcon);
843
844     HRESULT SetRelativePath(
845         [in] LPCWSTR pszPathRel,
846         [in] DWORD dwReserved);
847
848     HRESULT Resolve(
849         [in] HWND hwnd,
850         [in] DWORD fFlags);
851
852     HRESULT SetPath( [in] LPCWSTR pszFile );
853 }
854
855 cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)")
856
857
858 /*****************************************************************************
859  * IShellExtInit interface
860  */
861 [
862     object,
863     uuid(000214e8-0000-0000-c000-000000000046),
864     pointer_default(unique),
865     local
866 ]
867 interface IShellExtInit : IUnknown
868 {
869     typedef IShellExtInit *LPSHELLEXTINIT;
870
871     HRESULT Initialize(
872         [in] LPCITEMIDLIST pidlFolder,
873         [in] IDataObject *pdtobj,
874         [in] HKEY hkeyProgID);
875 }
876
877
878 /*******************************************************************************/
879 /* Note: the following interfaces are not in shobjidl.idl under Windows, they  */
880 /* are declared directly in shlobj.h. It hopefully won't break anything to put */
881 /* them here anyway.                                                           */
882 /*******************************************************************************/
883
884 #ifndef MAX_PATH
885 #define MAX_PATH 260
886 #endif
887
888
889 /*****************************************************************************
890  * IPersistFolder3 interface
891  */
892 [
893     object,
894     uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf),
895     pointer_default(unique)
896 ]
897 interface IPersistFolder3 : IPersistFolder2
898 {
899     typedef struct
900     {
901         LPITEMIDLIST    pidlTargetFolder;
902         WCHAR           szTargetParsingName[MAX_PATH];
903         WCHAR           szNetworkProvider[MAX_PATH];
904         DWORD           dwAttributes;
905         int             csidl;
906     } PERSIST_FOLDER_TARGET_INFO;
907
908     HRESULT InitializeEx(
909         [in] IBindCtx *pbc,
910         [in] LPCITEMIDLIST pidlRoot,
911         [in] const PERSIST_FOLDER_TARGET_INFO *ppfti);
912
913     HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti );
914 }
915
916
917 /*****************************************************************************
918  * IExtractIconA interface
919  */
920 [
921     object,
922     uuid(000214eb-0000-0000-c000-000000000046),
923     pointer_default(unique),
924     local
925 ]
926 interface IExtractIconA : IUnknown
927 {
928 cpp_quote("#define GIL_OPENICON     0x0001")
929 cpp_quote("#define GIL_FORSHELL     0x0002")
930 cpp_quote("#define GIL_ASYNC        0x0020")
931 cpp_quote("#define GIL_DEFAULTICON  0x0040")
932 cpp_quote("#define GIL_FORSHORTCUT  0x0080")
933
934 cpp_quote("#define GIL_SIMULATEDOC  0x0001")
935 cpp_quote("#define GIL_PERINSTANCE  0x0002")
936 cpp_quote("#define GIL_PERCLASS     0x0004")
937 cpp_quote("#define GIL_NOTFILENAME  0x0008")
938 cpp_quote("#define GIL_DONTCACHE    0x0010")
939
940     typedef IExtractIconA *LPEXTRACTICONA;
941
942     HRESULT GetIconLocation(
943         [in] UINT uFlags,
944         [out, size_is(cchMax)] LPSTR szIconFile,
945         [in] UINT cchMax,
946         [out] INT *piIndex,
947         [out] UINT *pwFlags);
948
949     HRESULT Extract(
950         [in] LPCSTR pszFile,
951         [in] UINT nIconIndex,
952         [out] HICON *phiconLarge,
953         [out] HICON *phiconSmall,
954         [in] UINT nIconSize );
955 }
956
957
958 /*****************************************************************************
959  * IExtractIconW interface
960  */
961 [
962     object,
963     uuid(000214fa-0000-0000-c000-000000000046),
964     pointer_default(unique),
965     local
966 ]
967 interface IExtractIconW : IUnknown
968 {
969     typedef IExtractIconW *LPEXTRACTICONW;
970
971     HRESULT GetIconLocation(
972         [in] UINT uFlags,
973         [out, size_is(cchMax)] LPWSTR szIconFile,
974         [in] UINT cchMax,
975         [out] INT *piIndex,
976         [out] UINT *pwFlags);
977
978     HRESULT Extract(
979         [in] LPCWSTR pszFile,
980         [in] UINT nIconIndex,
981         [out] HICON *phiconLarge,
982         [out] HICON *phiconSmall,
983         [in] UINT nIconSize );
984 }
985
986 cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)")
987 cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)")
988
989
990 /*****************************************************************************
991  * ICommDlgBrowser interface
992  */
993 [
994     object,
995     uuid(000214f1-0000-0000-c000-000000000046),
996     pointer_default(unique)
997 ]
998 interface ICommDlgBrowser : IUnknown
999 {
1000 cpp_quote("#define CDBOSC_SETFOCUS     0x00000000")
1001 cpp_quote("#define CDBOSC_KILLFOCUS    0x00000001")
1002 cpp_quote("#define CDBOSC_SELCHANGE    0x00000002")
1003 cpp_quote("#define CDBOSC_RENAME       0x00000003")
1004 cpp_quote("#define CDBOSC_STATECHANGE  0x00000004")
1005
1006     typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
1007
1008     HRESULT OnDefaultCommand( [in] IShellView *shv );
1009     HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange );
1010     HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl );
1011 }
1012
1013
1014 /*****************************************************************************
1015  * IDockingWindowFrame interface
1016  */
1017 [
1018     object,
1019     uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8),
1020     pointer_default(unique),
1021     local
1022 ]
1023 interface IDockingWindowFrame : IOleWindow
1024 {
1025 cpp_quote("#define DWFRF_NORMAL           0x0000")
1026 cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001")
1027 cpp_quote("#define DWFAF_HIDDEN           0x0001")
1028
1029     HRESULT AddToolbar(
1030         [in] IUnknown *punkSrc,
1031         [in] LPCWSTR pwszItem,
1032         [in] DWORD dwAddFlags);
1033
1034     HRESULT RemoveToolbar(
1035         [in] IUnknown *punkSrc,
1036         [in] DWORD dwRemoveFlags);
1037
1038     HRESULT FindToolbar(
1039         [in] LPCWSTR pwszItem,
1040         [in] REFIID riid,
1041         [out] LPVOID *ppvObj);
1042 }
1043
1044
1045 /*****************************************************************************
1046  * IDragSourceHelper interface
1047  */
1048 [
1049     object,
1050     uuid(de5bf786-477a-11d2-839d-00c04fd918d0),
1051     pointer_default(unique),
1052     local
1053 ]
1054 interface IDragSourceHelper : IUnknown
1055 {
1056     typedef struct
1057     {
1058         SIZE     sizeDragImage;
1059         POINT    ptOffset;
1060         HBITMAP  hbmpDragImage;
1061         COLORREF crColorKey;
1062     } SHDRAGIMAGE, *LPSHDRAGIMAGE;
1063
1064   HRESULT InitializeFromBitmap(
1065       [in] LPSHDRAGIMAGE pshdi,
1066       [in] IDataObject *pDataObject);
1067
1068   HRESULT InitializeFromWindow(
1069       [in] HWND hwnd,
1070       [in] POINT *ppt,
1071       [in] IDataObject *pDataObject);
1072 }
1073
1074
1075 /*****************************************************************************
1076  * IDropTargetHelper interface
1077  */
1078 [
1079     object,
1080     uuid(4657278b-411b-11d2-839a-00c04fd918d0),
1081     pointer_default(unique),
1082     local
1083 ]
1084 interface IDropTargetHelper : IUnknown
1085 {
1086     HRESULT DragEnter(
1087         [in] HWND hwndTarget,
1088         [in] IDataObject *pDataObject,
1089         [in] POINT *ppt,
1090         [in] DWORD dwEffect);
1091
1092     HRESULT DragLeave();
1093
1094     HRESULT DragOver(
1095         [in] POINT *ppt,
1096         [in] DWORD dwEffect);
1097
1098     HRESULT Drop(
1099         [in] IDataObject *pDataObject,
1100         [in] POINT *ppt,
1101         [in] DWORD dwEffect);
1102
1103     HRESULT Show( [in] BOOL fShow );
1104 }
1105
1106
1107 /*****************************************************************************
1108  * IContextMenu interface
1109  */
1110 [
1111     object,
1112     uuid(000214e4-0000-0000-c000-000000000046),
1113     pointer_default(unique),
1114     local
1115 ]
1116 interface IContextMenu : IUnknown
1117 {
1118 cpp_quote("#define CMF_NORMAL        0x00000000")
1119 cpp_quote("#define CMF_DEFAULTONLY   0x00000001")
1120 cpp_quote("#define CMF_VERBSONLY     0x00000002")
1121 cpp_quote("#define CMF_EXPLORE       0x00000004")
1122 cpp_quote("#define CMF_NOVERBS       0x00000008")
1123 cpp_quote("#define CMF_CANRENAME     0x00000010")
1124 cpp_quote("#define CMF_NODEFAULT     0x00000020")
1125 cpp_quote("#define CMF_INCLUDESTATIC 0x00000040")
1126 cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100")
1127 cpp_quote("#define CMF_RESERVED      0xffff0000")
1128
1129 cpp_quote("#define GCS_VERBA         0x00000000")
1130 cpp_quote("#define GCS_HELPTEXTA     0x00000001")
1131 cpp_quote("#define GCS_VALIDATEA     0x00000002")
1132 cpp_quote("#define GCS_VERBW         0x00000004")
1133 cpp_quote("#define GCS_HELPTEXTW     0x00000005")
1134 cpp_quote("#define GCS_VALIDATEW     0x00000006")
1135 cpp_quote("#define GCS_UNICODE       0x00000004")
1136 cpp_quote("#define GCS_VERB          WINELIB_NAME_AW(GCS_VERB)")
1137 cpp_quote("#define GCS_HELPTEXT      WINELIB_NAME_AW(GCS_HELPTEXT)")
1138 cpp_quote("#define GCS_VALIDATE      WINELIB_NAME_AW(GCS_VALIDATE)")
1139
1140 cpp_quote("#define CMDSTR_NEWFOLDERA   \"NewFolder\"")
1141 cpp_quote("#define CMDSTR_VIEWLISTA    \"ViewList\"")
1142 cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"")
1143 cpp_quote("#if defined(__GNUC__)")
1144 cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }")
1145 cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }")
1146 cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }")
1147 cpp_quote("#elif defined(_MSC_VER)")
1148 cpp_quote("# define CMDSTR_NEWFOLDERW   L\"NewFolder\"")
1149 cpp_quote("# define CMDSTR_VIEWLISTW    L\"ViewList\"")
1150 cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"")
1151 cpp_quote("#else")
1152 cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};")
1153 cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};")
1154 cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};")
1155 cpp_quote("#endif")
1156 cpp_quote("#define CMDSTR_NEWFOLDER    WINELIB_NAME_AW(CMDSTR_NEWFOLDER)")
1157 cpp_quote("#define CMDSTR_VIEWLIST     WINELIB_NAME_AW(CMDSTR_VIEWLIST)")
1158 cpp_quote("#define CMDSTR_VIEWDETAILS  WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)")
1159
1160 cpp_quote("#define CMIC_MASK_HOTKEY         SEE_MASK_HOTKEY")
1161 cpp_quote("#define CMIC_MASK_ICON           SEE_MASK_ICON")
1162 cpp_quote("#define CMIC_MASK_FLAG_NO_UI     SEE_MASK_FLAG_NO_UI")
1163 cpp_quote("#define CMIC_MASK_UNICODE        SEE_MASK_UNICODE")
1164 cpp_quote("#define CMIC_MASK_NO_CONSOLE     SEE_MASK_NO_CONSOLE")
1165 cpp_quote("#define CMIC_MASK_HASLINKNAME    SEE_MASK_HASLINKNAME")
1166 cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM   SEE_MASK_FLAG_SEPVDM")
1167 cpp_quote("#define CMIC_MASK_HASTITLE       SEE_MASK_HASTITLE")
1168 cpp_quote("#define CMIC_MASK_ASYNCOK        SEE_MASK_ASYNCOK")
1169 cpp_quote("#define CMIC_MASK_SHIFT_DOWN     0x10000000")
1170 cpp_quote("#define CMIC_MASK_PTINVOKE       0x20000000")
1171 cpp_quote("#define CMIC_MASK_CONTROL_DOWN   0x40000000")
1172 cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE")
1173 cpp_quote("#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS")
1174
1175     typedef IContextMenu *LPCONTEXTMENU;
1176
1177     typedef struct tagCMINVOKECOMMANDINFO
1178     {
1179         DWORD cbSize;
1180         DWORD fMask;
1181         HWND hwnd;
1182         LPCSTR lpVerb;
1183         LPCSTR lpParameters;
1184         LPCSTR lpDirectory;
1185         INT nShow;
1186         DWORD dwHotKey;
1187         HANDLE hIcon;
1188     } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
1189
1190     typedef struct tagCMInvokeCommandInfoEx
1191     {
1192         DWORD cbSize;
1193         DWORD fMask;
1194         HWND hwnd;
1195         LPCSTR lpVerb;
1196         LPCSTR lpParameters;
1197         LPCSTR lpDirectory;
1198         INT nShow;
1199         DWORD dwHotKey;
1200         HANDLE hIcon;
1201         LPCSTR lpTitle;
1202         LPCWSTR lpVerbW;
1203         LPCWSTR lpParametersW;
1204         LPCWSTR lpDirectoryW;
1205         LPCWSTR lpTitleW;
1206         POINT ptInvoke;
1207     } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
1208
1209     HRESULT QueryContextMenu(
1210         [in] HMENU hmenu,
1211         [in] UINT indexMenu,
1212         [in] UINT idCmdFirst,
1213         [in] UINT idCmdLast,
1214         [in] UINT uFlags);
1215
1216     HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici );
1217
1218     HRESULT GetCommandString(
1219         [in] UINT_PTR idCmd,
1220         [in] UINT uType,
1221         [out] UINT *pwReserved,
1222         [out, size_is(cchMax)] LPSTR pszName,
1223         [in] UINT cchMax);
1224 }
1225
1226
1227 /*****************************************************************************
1228  * IContextMenu2 interface
1229  */
1230 [
1231     object,
1232     uuid(000214f4-0000-0000-c000-000000000046),
1233     pointer_default(unique),
1234     local
1235 ]
1236 interface IContextMenu2 : IContextMenu
1237 {
1238     typedef IContextMenu2 *LPCONTEXTMENU2;
1239
1240     HRESULT HandleMenuMsg(
1241         [in] UINT uMsg,
1242         [in] WPARAM wParam,
1243         [in] LPARAM lParam);
1244 }
1245
1246
1247 /*****************************************************************************
1248  * IContextMenu3 interface
1249  */
1250 [
1251     object,
1252     uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719),
1253     pointer_default(unique),
1254     local
1255 ]
1256 interface IContextMenu3 : IContextMenu2
1257 {
1258     typedef IContextMenu3 *LPCONTEXTMENU3;
1259
1260     HRESULT HandleMenuMsg2(
1261         [in] UINT uMsg,
1262         [in] WPARAM wParam,
1263         [in] LPARAM lParam,
1264         [out] LRESULT *plResult);
1265 }
1266
1267
1268 /*****************************************************************************
1269  * IShellExecuteHookA interface
1270  */
1271 [
1272     object,
1273     uuid(000214f5-0000-0000-c000-000000000046),
1274     pointer_default(unique),
1275     local
1276 ]
1277 interface IShellExecuteHookA : IUnknown
1278 {
1279     cpp_quote("struct _SHELLEXECUTEINFOA;")
1280     HRESULT Execute(
1281         [in, out] struct _SHELLEXECUTEINFOA* pei);
1282 }
1283
1284
1285 /*****************************************************************************
1286  * IShellExecuteHookW interface
1287  */
1288 [
1289     object,
1290     uuid(000214fb-0000-0000-c000-000000000046),
1291     pointer_default(unique),
1292     local
1293 ]
1294 interface IShellExecuteHookW : IUnknown
1295 {
1296     cpp_quote("struct _SHELLEXECUTEINFOW;")
1297     HRESULT Execute(
1298                 [in, out] struct _SHELLEXECUTEINFOW* pei);
1299 }
1300
1301 /*****************************************************************************
1302  * IShellLinkDataList interface
1303  */
1304 [
1305     object,
1306     uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1),
1307     pointer_default(unique)
1308 ]
1309 interface IShellLinkDataList : IUnknown
1310 {
1311     [local] HRESULT AddDataBlock(
1312                 [in] void *pDataBlock);
1313     [local] HRESULT CopyDataBlock(
1314                 [in] DWORD dwSig,
1315                 [out] void **ppDataBlock);
1316     HRESULT RemoveDataBlock(
1317                 [in] DWORD dwSig);
1318     HRESULT GetFlags(
1319                 [out] DWORD *pdwFlags);
1320     HRESULT SetFlags(
1321                 [in] DWORD dwFlags);
1322 }
1323
1324
1325 /*****************************************************************************
1326  * IResolveShellLink interface
1327  */
1328 [
1329     object,
1330     uuid(5cd52983-9449-11d2-963a-00c04f79adf0),
1331     pointer_default(unique)
1332 ]
1333 interface IResolveShellLink : IUnknown
1334 {
1335     HRESULT ResolveShellLink(
1336                 [in] IUnknown *punk,
1337                 [in] HWND hwnd,
1338                 [in] DWORD fFlags);
1339 }
1340
1341
1342 /*****************************************************************************
1343  * IURLSearchHook interface
1344  */
1345 [
1346     object,
1347     uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497),
1348     pointer_default(unique),
1349     local
1350 ]
1351 interface IURLSearchHook : IUnknown
1352 {
1353     HRESULT Translate(
1354                 [in, out] LPWSTR lpwszSearchURL,
1355                 [in] DWORD cchBufferSize);
1356 }
1357
1358
1359 /*****************************************************************************
1360  * ISearchContext interface
1361  */
1362 [
1363     object,
1364     uuid(09f656a2-41af-480c-88f7-16cc0d164615),
1365     pointer_default(unique),
1366     local
1367 ]
1368 interface ISearchContext : IUnknown
1369 {
1370     HRESULT GetSearchUrl(
1371                 [in] BSTR *pbstrSearchUrl);
1372     HRESULT GetSearchText(
1373                 [in] BSTR *pbstrSearchText);
1374     HRESULT GetSearchStyle(
1375                 [in] BSTR *pdwSearchStyle);
1376 }
1377
1378
1379 /*****************************************************************************
1380  * IURLSearchHook2 interface
1381  */
1382 [
1383     object,
1384     uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0),
1385     pointer_default(unique),
1386     local
1387 ]
1388 interface IURLSearchHook2 : IURLSearchHook
1389 {
1390     HRESULT TranslateWithSearchContext(
1391                 [in, out] LPWSTR lpwszSearchURL,
1392                 [in] DWORD cchBufferSize,
1393                 [in] ISearchContext *pSearchContext);
1394 }
1395
1396
1397 cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)")
1398
1399 /*****************************************************************************
1400  * INewShortcutHookA interface
1401  */
1402 [
1403     object,
1404     uuid(000214e1-0000-0000-c000-000000000046),
1405     pointer_default(unique),
1406     local
1407 ]
1408 interface INewShortcutHookA : IUnknown
1409 {
1410     HRESULT SetReferent(
1411                 [in] LPCSTR pcszReferent,
1412                 [in] HWND hwnd);
1413     HRESULT GetReferent(
1414                 [out] LPSTR pcszReferent,
1415                 [in] int cchReferent);
1416     HRESULT SetFolder(
1417                 [in] LPCSTR pcszReferent);
1418     HRESULT GetFolder(
1419                 [out] LPSTR pcszReferent,
1420                 [in] int cchFolder);
1421     HRESULT GetName(
1422                 [out] LPSTR pszName,
1423                 [in] int cchName);
1424     HRESULT GetExtension(
1425                 [out] LPSTR pszExtension,
1426                 [in] int cchExtension);
1427
1428
1429
1430 /*****************************************************************************
1431  * INewShortcutHookW interface
1432  */
1433 [
1434     object,
1435     uuid(000214f7-0000-0000-c000-000000000046),
1436     pointer_default(unique),
1437     local
1438 ]
1439 interface INewShortcutHookW : IUnknown
1440 {
1441     HRESULT SetReferent(
1442                 [in] LPCWSTR pcszReferent,
1443                 [in] HWND hwnd);
1444     HRESULT GetReferent(
1445                 [out] LPWSTR pcszReferent,
1446                 [in] int cchReferent);
1447     HRESULT SetFolder(
1448                 [in] LPCWSTR pcszReferent);
1449     HRESULT GetFolder(
1450                 [out] LPWSTR pcszReferent,
1451                 [in] int cchFolder);
1452     HRESULT GetName(
1453                 [out] LPWSTR pszName,
1454                 [in] int cchName);
1455     HRESULT GetExtension(
1456                 [out] LPWSTR pszExtension,
1457                 [in] int cchExtension);
1458
1459
1460 /*****************************************************************************
1461  * IRunnableTask interface
1462  */
1463 [
1464     object,
1465     uuid(85788d00-6807-11d0-b810-00c04fd706ec),
1466     pointer_default(unique),
1467     local
1468 ]
1469 interface IRunnableTask : IUnknown
1470 {
1471     HRESULT Run();
1472     HRESULT Kill([in] BOOL fWait);
1473     HRESULT Suspend();
1474     HRESULT Resume();
1475     ULONG IsRunning();
1476 }
1477
1478 /*****************************************************************************
1479  * IShellChangeNotify interface
1480  */
1481 [
1482     object,
1483     uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2),
1484     pointer_default(unique),
1485     local
1486 ]
1487 interface IShellChangeNotify : IUnknown
1488 {
1489     HRESULT OnChange(
1490                 [in] LONG lEvent,
1491                 [in] LPCITEMIDLIST pidl1,
1492                 [in] LPCITEMIDLIST pidl2);
1493 }
1494
1495 /*****************************************************************************
1496  * IFileSystemBindData interface
1497  */
1498 [
1499     object,
1500     uuid(01e18d10-4d8b-11d2-855d-006008059367),
1501     pointer_default(unique),
1502     local
1503 ]
1504 interface IFileSystemBindData : IUnknown
1505 {
1506     HRESULT SetFindData(
1507                 [in] const WIN32_FIND_DATAW *pfd);
1508     HRESULT GetFindData(
1509                 [out] WIN32_FIND_DATAW *pfd);
1510 }
1511
1512 /*****************************************************************************
1513  *    ITaskbarList interface
1514  */
1515 [
1516     object,
1517     uuid(56FDF342-FD6D-11d0-958A-006097C9A090),
1518     pointer_default(unique)
1519 ]
1520 interface ITaskbarList : IUnknown
1521 {
1522     HRESULT HrInit();
1523
1524     HRESULT AddTab(
1525         [in] HWND hwnd);
1526
1527     HRESULT DeleteTab(
1528         [in] HWND hwnd);
1529
1530     HRESULT ActivateTab(
1531         [in] HWND hwnd);
1532
1533     HRESULT SetActiveAlt(
1534         [in] HWND hwnd);
1535 }
1536
1537 cpp_quote("EXTERN_C const CLSID CLSID_TaskbarList;")
1538
1539 /*****************************************************************************
1540  *    IAutoCompleteDropDown interface
1541  */
1542 [
1543     object,
1544     uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB),
1545     pointer_default(unique)
1546 ]
1547 interface IAutoCompleteDropDown : IUnknown
1548 {
1549 cpp_quote("#define ACDD_VISIBLE   0x0001")
1550
1551     HRESULT GetDropDownStatus(
1552         [out] DWORD *pdwFlags,
1553         [out, string] LPWSTR *ppwszString);
1554
1555     HRESULT ResetEnumerator();
1556 }
1557
1558 [
1559     object,
1560     uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0),
1561     pointer_default(unique)
1562 ]
1563 interface IProfferService : IUnknown
1564 {
1565     HRESULT ProfferService(
1566         [in] REFGUID service,
1567         [in] IServiceProvider *pService,
1568         [out] DWORD *pCookie);
1569
1570     HRESULT RevokeService([in] DWORD cookie);
1571 }