winealsa.drv: Remove dlopen call.
[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
376
377 /*****************************************************************************
378  * FOLDERSETTINGS
379  */
380 typedef char *LPVIEWSETTINGS;
381
382 typedef enum
383 {
384     FWF_AUTOARRANGE         = 0x00000001,
385     FWF_ABBREVIATEDNAMES    = 0x00000002,
386     FWF_SNAPTOGRID          = 0x00000004,
387     FWF_OWNERDATA           = 0x00000008,
388     FWF_BESTFITWINDOW       = 0x00000010,
389     FWF_DESKTOP             = 0x00000020,
390     FWF_SINGLESEL           = 0x00000040,
391     FWF_NOSUBFOLDERS        = 0x00000080,
392     FWF_TRANSPARENT         = 0x00000100,
393     FWF_NOCLIENTEDGE        = 0x00000200,
394     FWF_NOSCROLL            = 0x00000400,
395     FWF_ALIGNLEFT           = 0x00000800,
396     FWF_NOICONS             = 0x00001000,
397     FWF_SHOWSELALWAYS       = 0x00002000,
398     FWF_NOVISIBLE           = 0x00004000,
399     FWF_SINGLECLICKACTIVATE = 0x00008000,
400     FWF_NOWEBVIEW           = 0x00010000,
401     FWF_HIDEFILENAMES       = 0x00020000,
402     FWF_CHECKSELECT         = 0x00040000
403 } FOLDERFLAGS;
404
405 typedef enum
406 {
407     FVM_ICON       = 1,
408     FVM_FIRST      = FVM_ICON,
409     FVM_SMALLICON  = 2,
410     FVM_LIST       = 3,
411     FVM_DETAILS    = 4,
412     FVM_THUMBNAIL  = 5,
413     FVM_TILE       = 6,
414     FVM_THUMBSTRIP = 7,
415     FVM_LAST       = FVM_THUMBSTRIP
416 } FOLDERVIEWMODE;
417
418 typedef struct
419 {
420     UINT ViewMode;
421     UINT fFlags;
422 } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
423 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
424
425 /*****************************************************************************
426  * IShellIcon interface
427  */
428 [
429     uuid(000214e5-0000-0000-c000-000000000046),
430     object,
431     pointer_default(unique)
432 ]
433 interface IShellIcon : IUnknown
434 {
435     HRESULT GetIconOf(
436         [in] PCUITEMID_CHILD pidl,
437         [in] UINT flags,
438         [out] int *pIconIndex);
439 }
440
441 /*****************************************************************************
442  * IShellView interface
443  */
444 interface IShellBrowser;  /* forward declaration */
445 [
446     object,
447     uuid(000214e3-0000-0000-c000-000000000046),
448     pointer_default(unique)
449 ]
450 interface IShellView : IOleWindow
451 {
452     typedef IShellView *LPSHELLVIEW;
453
454     cpp_quote("#define SVSI_DESELECT       0x00000000")
455     cpp_quote("#define SVSI_SELECT         0x00000001")
456     cpp_quote("#define SVSI_EDIT           0x00000003")
457     cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
458     cpp_quote("#define SVSI_ENSUREVISIBLE  0x00000008")
459     cpp_quote("#define SVSI_FOCUSED        0x00000010")
460     cpp_quote("#define SVSI_TRANSLATEPT    0x00000020")
461     cpp_quote("#define SVSI_SELECTIONMARK  0x00000040")
462     cpp_quote("#define SVSI_POSITIONITEM   0x00000080")
463     cpp_quote("#define SVSI_CHECK          0x00000100")
464     cpp_quote("#define SVSI_NOSTATECHANGE  0x80000000")
465
466     typedef UINT SVSIF;
467
468     typedef enum
469     {
470         SVGIO_BACKGROUND     = 0x00000000,
471         SVGIO_SELECTION      = 0x00000001,
472         SVGIO_ALLVIEW        = 0x00000002,
473         SVGIO_CHECKED        = 0x00000003,
474         SVGIO_TYPE_MASK      = 0x0000000f,
475         SVGIO_FLAG_VIEWORDER = 0x80000000,
476     } SVGIO;
477
478     typedef enum
479     {
480         SVUIA_DEACTIVATE       = 0,
481         SVUIA_ACTIVATE_NOFOCUS = 1,
482         SVUIA_ACTIVATE_FOCUS   = 2,
483         SVUIA_INPLACEACTIVATE  = 3
484     } SVUIA_STATUS;
485
486     HRESULT TranslateAccelerator( [in] MSG *pmsg );
487     HRESULT EnableModeless( [in] BOOL fEnable );
488     HRESULT UIActivate( [in] UINT uState );
489     HRESULT Refresh();
490     HRESULT CreateViewWindow(
491         [in] IShellView *psvPrevious,
492         [in] LPCFOLDERSETTINGS lpfs,
493         [in] IShellBrowser *psb,
494         [out] RECT *prcView,
495         [out] HWND *phWnd);
496
497     HRESULT DestroyViewWindow();
498     HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs );
499
500     [local] HRESULT AddPropertySheetPages(
501         [in] DWORD dwReserved,
502         [in] LPFNSVADDPROPSHEETPAGE pfn,
503         [in] LPARAM lparam);
504
505     HRESULT SaveViewState();
506     HRESULT SelectItem(
507         [in] LPCITEMIDLIST pidlItem,
508         [in] SVSIF uFlags);
509     HRESULT GetItemObject(
510         [in] UINT uItem,
511         [in] REFIID riid,
512         [out, iid_is(riid)] void **ppv);
513 }
514
515 [
516     object,
517     uuid(88e39e80-3578-11cf-ae69-08002b2e1262),
518     pointer_default(unique)
519 ]
520 interface IShellView2 : IShellView
521 {
522     typedef GUID SHELLVIEWID;
523 cpp_quote("#include <pshpack8.h>")
524     typedef struct _SV2CVW2_PARAMS
525     {
526         DWORD cbSize;
527         IShellView *psvPrev;
528         LPCFOLDERSETTINGS pfs;
529         IShellBrowser *psbOwner;
530         RECT *prcView;
531         SHELLVIEWID const *pvid;
532         HWND hwndView;
533     } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS;
534 cpp_quote("#include <poppack.h>")
535
536     HRESULT GetView(
537         [in, out] SHELLVIEWID *view_guid,
538         [in] ULONG view_type
539     );
540     HRESULT CreateViewWindow2(
541         [in] LPSV2CVW2_PARAMS view_params
542     );
543     HRESULT HandleRename(
544         [in] LPCITEMIDLIST new_pidl
545     );
546     HRESULT SelectAndPositionItem(
547         [in] LPCITEMIDLIST item,
548         [in] UINT flags,
549         [in] POINT *point
550     );
551 }
552
553 /*****************************************************************************
554  * IFolderView interface
555  */
556 [
557     uuid(cde725b0-ccc9-4519-917e-325d72fab4ce),
558     object,
559     pointer_default(unique)
560 ]
561 interface IFolderView : IUnknown
562 {
563     HRESULT GetCurrentViewMode( [out] UINT *mode );
564     HRESULT SetCurrentViewMode( [in] UINT mode );
565     HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv );
566     HRESULT Item(
567         [in] int index,
568         [out] PITEMID_CHILD *ppidl
569     );
570     HRESULT ItemCount(
571         [in] UINT flags,
572         [out] int *items
573     );
574     HRESULT Items(
575         [in] UINT flags,
576         [in] REFIID riid,
577         [out, iid_is(riid)] void **ppv
578     );
579     HRESULT GetSelectionMarkedItem( [out] int *item );
580     HRESULT GetFocusedItem( [out] int *item );
581     HRESULT GetItemPosition(
582         [in] PCUITEMID_CHILD pidl,
583         [out] POINT* ppt
584     );
585     HRESULT GetSpacing( [in, out, unique] POINT* pt );
586     HRESULT GetDefaultSpacing( [out] POINT* pt );
587     HRESULT GetAutoArrange();
588     HRESULT SelectItem(
589         [in] int item,
590         [in] DWORD flags
591     );
592     HRESULT SelectAndPositionItems(
593         [in] UINT cidl,
594         [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
595         [in, unique, size_is(cidl)] POINT* apt,
596         [in] DWORD flags
597     );
598 }
599
600 /*****************************************************************************
601  * IShellBrowser interface
602  */
603 [
604     object,
605     uuid(000214e2-0000-0000-c000-000000000046),
606     pointer_default(unique)
607 ]
608 interface IShellBrowser : IOleWindow
609 {
610     typedef IShellBrowser *LPSHELLBROWSER;
611
612 cpp_quote("#define SBSP_DEFBROWSER            0x00000000")
613 cpp_quote("#define SBSP_SAMEBROWSER           0x00000001")
614 cpp_quote("#define SBSP_NEWBROWSER            0x00000002")
615 cpp_quote("#define SBSP_DEFMODE               0x00000000")
616 cpp_quote("#define SBSP_OPENMODE              0x00000010")
617 cpp_quote("#define SBSP_EXPLOREMODE           0x00000020")
618 cpp_quote("#define SBSP_HELPMODE              0x00000040")
619 cpp_quote("#define SBSP_NOTRANSFERHIST        0x00000080")
620 cpp_quote("#define SBSP_ABSOLUTE              0x00000000")
621 cpp_quote("#define SBSP_RELATIVE              0x00001000")
622 cpp_quote("#define SBSP_PARENT                0x00002000")
623 cpp_quote("#define SBSP_NAVIGATEBACK          0x00004000")
624 cpp_quote("#define SBSP_NAVIGATEFORWARD       0x00008000")
625 cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE    0x00010000")
626 cpp_quote("#define SBSP_NOAUTOSELECT          0x04000000")
627 cpp_quote("#define SBSP_WRITENOHISTORY        0x08000000")
628 cpp_quote("#define SBSP_REDIRECT              0x40000000")
629 cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
630
631 cpp_quote("#define FCW_STATUS      0x0001")
632 cpp_quote("#define FCW_TOOLBAR     0x0002")
633 cpp_quote("#define FCW_TREE        0x0003")
634 cpp_quote("#define FCW_INTERNETBAR 0x0006")
635 cpp_quote("#define FCW_PROGRESS    0x0008")
636
637 cpp_quote("#define FCT_MERGE       0x0001")
638 cpp_quote("#define FCT_CONFIGABLE  0x0002")
639 cpp_quote("#define FCT_ADDTOEND    0x0004")
640
641 cpp_quote("#if 0")
642     typedef LPARAM LPTBBUTTONSB;
643 cpp_quote("#else")
644 cpp_quote("#include <commctrl.h>")
645 cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;")
646 cpp_quote("#endif")
647
648     HRESULT InsertMenusSB(
649         [in] HMENU hmenuShared,
650         [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
651
652     HRESULT SetMenuSB(
653         [in] HMENU hmenuShared,
654         [in] HOLEMENU holemenuReserved,
655         [in] HWND hwndActiveObject);
656
657     HRESULT RemoveMenusSB( [in] HMENU hmenuShared );
658     HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText );
659     HRESULT EnableModelessSB( [in] BOOL fEnable );
660     HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID );
661
662     HRESULT BrowseObject(
663         [in] LPCITEMIDLIST pidl,
664         [in] UINT wFlags);
665
666     HRESULT GetViewStateStream(
667         [in] DWORD grfMode,
668         [out] IStream **ppStrm);
669
670     HRESULT GetControlWindow(
671         [in] UINT id,
672         [out] HWND *phwnd);
673
674     [local] HRESULT SendControlMsg(
675         [in] UINT id,
676         [in] UINT uMsg,
677         [in] WPARAM wParam,
678         [in] LPARAM lParam,
679         [in] LRESULT *pret);
680
681     HRESULT QueryActiveShellView( [out] IShellView **ppshv );
682     HRESULT OnViewWindowActive( [in] IShellView *pshv );
683
684     [local]
685     HRESULT SetToolbarItems(
686         [in] LPTBBUTTONSB lpButtons,
687         [in] UINT nButtons,
688         [in] UINT uFlags);
689 }
690
691
692 /*****************************************************************************
693  * IShellLinkA interface
694  */
695 [
696     object,
697     uuid(000214ee-0000-0000-c000-000000000046),
698     pointer_default(unique)
699 ]
700 interface IShellLinkA : IUnknown
701 {
702     typedef enum
703     {
704         SLR_NO_UI               = 0x0001,
705         SLR_ANY_MATCH           = 0x0002,
706         SLR_UPDATE              = 0x0004,
707         SLR_NOUPDATE            = 0x0008,
708         SLR_NOSEARCH            = 0x0010,
709         SLR_NOTRACK             = 0x0020,
710         SLR_NOLINKINFO          = 0x0040,
711         SLR_INVOKE_MSI          = 0x0080,
712         SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
713     } SLR_FLAGS;
714
715     typedef enum
716     {
717         SLGP_SHORTPATH   = 0x0001,
718         SLGP_UNCPRIORITY = 0x0002,
719         SLGP_RAWPATH     = 0x0004,
720     } SLGP_FLAGS;
721
722     HRESULT GetPath(
723         [out, size_is(cch)] LPSTR pszFile,
724         [in] int cch,
725         [in, out, unique] WIN32_FIND_DATAA *pfd,
726         [in] DWORD fFlags);
727
728     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
729
730     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
731
732     HRESULT GetDescription(
733         [out, size_is(cch)] LPSTR pszName,
734         [in] int cch);
735
736     HRESULT SetDescription( [in] LPCSTR pszName );
737
738     HRESULT GetWorkingDirectory(
739         [out, size_is(cch)] LPSTR pszDir,
740         [in] int cch);
741
742     HRESULT SetWorkingDirectory( [in] LPCSTR pszDir );
743
744     HRESULT GetArguments(
745         [out, size_is(cch)] LPSTR pszArgs,
746         [in] int cch);
747
748     HRESULT SetArguments( [in] LPCSTR pszArgs );
749
750     HRESULT GetHotkey( [out] WORD *pwHotkey );
751
752     HRESULT SetHotkey( [in] WORD wHotkey );
753
754     HRESULT GetShowCmd( [out] int *piShowCmd );
755
756     HRESULT SetShowCmd( [in] int iShowCmd );
757
758     HRESULT GetIconLocation(
759         [out, size_is(cch)] LPSTR pszIconPath,
760         [in] int cch,
761         [out] int *piIcon);
762
763     HRESULT SetIconLocation(
764         [in] LPCSTR pszIconPath,
765         [in] int iIcon);
766
767     HRESULT SetRelativePath(
768         [in] LPCSTR pszPathRel,
769         [in] DWORD dwReserved);
770
771     HRESULT Resolve(
772         [in] HWND hwnd,
773         [in] DWORD fFlags);
774
775     HRESULT SetPath( [in] LPCSTR pszFile );
776 }
777
778
779 /*****************************************************************************
780  * IShellLinkW interface
781  */
782 [
783     object,
784     uuid(000214f9-0000-0000-c000-000000000046),
785     pointer_default(unique)
786 ]
787 interface IShellLinkW : IUnknown
788 {
789     HRESULT GetPath(
790         [out, size_is(cch)] LPWSTR pszFile,
791         [in] int cch,
792         [in, out] WIN32_FIND_DATAW *pfd,
793         [in] DWORD fFlags);
794
795     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
796
797     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
798
799     HRESULT GetDescription(
800         [out, size_is(cch)] LPWSTR pszName,
801         [in] int cch);
802
803     HRESULT SetDescription( [in] LPCWSTR pszName );
804
805     HRESULT GetWorkingDirectory(
806         [out, size_is(cch)] LPWSTR pszDir,
807         [in] int cch);
808
809     HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir );
810
811     HRESULT GetArguments(
812         [out, size_is(cch)] LPWSTR pszArgs,
813         [in] int cch);
814
815     HRESULT SetArguments( [in] LPCWSTR pszArgs );
816
817     HRESULT GetHotkey( [out] WORD *pwHotkey );
818
819     HRESULT SetHotkey( [in] WORD wHotkey );
820
821     HRESULT GetShowCmd( [out] int *piShowCmd );
822
823     HRESULT SetShowCmd( [in] int iShowCmd );
824
825     HRESULT GetIconLocation(
826         [out, size_is(cch)] LPWSTR pszIconPath,
827         [in] int cch,
828         [out] int *piIcon);
829
830     HRESULT SetIconLocation(
831         [in] LPCWSTR pszIconPath,
832         [in] int iIcon);
833
834     HRESULT SetRelativePath(
835         [in] LPCWSTR pszPathRel,
836         [in] DWORD dwReserved);
837
838     HRESULT Resolve(
839         [in] HWND hwnd,
840         [in] DWORD fFlags);
841
842     HRESULT SetPath( [in] LPCWSTR pszFile );
843 }
844
845 cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)")
846
847
848 /*****************************************************************************
849  * IShellExtInit interface
850  */
851 [
852     object,
853     uuid(000214e8-0000-0000-c000-000000000046),
854     pointer_default(unique),
855     local
856 ]
857 interface IShellExtInit : IUnknown
858 {
859     typedef IShellExtInit *LPSHELLEXTINIT;
860
861     HRESULT Initialize(
862         [in] LPCITEMIDLIST pidlFolder,
863         [in] IDataObject *pdtobj,
864         [in] HKEY hkeyProgID);
865 }
866
867
868 /*******************************************************************************/
869 /* Note: the following interfaces are not in shobjidl.idl under Windows, they  */
870 /* are declared directly in shlobj.h. It hopefully won't break anything to put */
871 /* them here anyway.                                                           */
872 /*******************************************************************************/
873
874 #ifndef MAX_PATH
875 #define MAX_PATH 260
876 #endif
877
878
879 /*****************************************************************************
880  * IPersistFolder3 interface
881  */
882 [
883     object,
884     uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf),
885     pointer_default(unique)
886 ]
887 interface IPersistFolder3 : IPersistFolder2
888 {
889     typedef struct
890     {
891         LPITEMIDLIST    pidlTargetFolder;
892         WCHAR           szTargetParsingName[MAX_PATH];
893         WCHAR           szNetworkProvider[MAX_PATH];
894         DWORD           dwAttributes;
895         int             csidl;
896     } PERSIST_FOLDER_TARGET_INFO;
897
898     HRESULT InitializeEx(
899         [in] IBindCtx *pbc,
900         [in] LPCITEMIDLIST pidlRoot,
901         [in] const PERSIST_FOLDER_TARGET_INFO *ppfti);
902
903     HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti );
904 }
905
906
907 /*****************************************************************************
908  * IExtractIconA interface
909  */
910 [
911     object,
912     uuid(000214eb-0000-0000-c000-000000000046),
913     pointer_default(unique),
914     local
915 ]
916 interface IExtractIconA : IUnknown
917 {
918 cpp_quote("#define GIL_OPENICON     0x0001")
919 cpp_quote("#define GIL_FORSHELL     0x0002")
920 cpp_quote("#define GIL_ASYNC        0x0020")
921 cpp_quote("#define GIL_DEFAULTICON  0x0040")
922 cpp_quote("#define GIL_FORSHORTCUT  0x0080")
923
924 cpp_quote("#define GIL_SIMULATEDOC  0x0001")
925 cpp_quote("#define GIL_PERINSTANCE  0x0002")
926 cpp_quote("#define GIL_PERCLASS     0x0004")
927 cpp_quote("#define GIL_NOTFILENAME  0x0008")
928 cpp_quote("#define GIL_DONTCACHE    0x0010")
929
930     typedef IExtractIconA *LPEXTRACTICONA;
931
932     HRESULT GetIconLocation(
933         [in] UINT uFlags,
934         [out, size_is(cchMax)] LPSTR szIconFile,
935         [in] UINT cchMax,
936         [out] INT *piIndex,
937         [out] UINT *pwFlags);
938
939     HRESULT Extract(
940         [in] LPCSTR pszFile,
941         [in] UINT nIconIndex,
942         [out] HICON *phiconLarge,
943         [out] HICON *phiconSmall,
944         [in] UINT nIconSize );
945 }
946
947
948 /*****************************************************************************
949  * IExtractIconW interface
950  */
951 [
952     object,
953     uuid(000214fa-0000-0000-c000-000000000046),
954     pointer_default(unique),
955     local
956 ]
957 interface IExtractIconW : IUnknown
958 {
959     typedef IExtractIconW *LPEXTRACTICONW;
960
961     HRESULT GetIconLocation(
962         [in] UINT uFlags,
963         [out, size_is(cchMax)] LPWSTR szIconFile,
964         [in] UINT cchMax,
965         [out] INT *piIndex,
966         [out] UINT *pwFlags);
967
968     HRESULT Extract(
969         [in] LPCWSTR pszFile,
970         [in] UINT nIconIndex,
971         [out] HICON *phiconLarge,
972         [out] HICON *phiconSmall,
973         [in] UINT nIconSize );
974 }
975
976 cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)")
977 cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)")
978
979
980 /*****************************************************************************
981  * ICommDlgBrowser interface
982  */
983 [
984     object,
985     uuid(000214f1-0000-0000-c000-000000000046),
986     pointer_default(unique)
987 ]
988 interface ICommDlgBrowser : IUnknown
989 {
990 cpp_quote("#define CDBOSC_SETFOCUS     0x00000000")
991 cpp_quote("#define CDBOSC_KILLFOCUS    0x00000001")
992 cpp_quote("#define CDBOSC_SELCHANGE    0x00000002")
993 cpp_quote("#define CDBOSC_RENAME       0x00000003")
994 cpp_quote("#define CDBOSC_STATECHANGE  0x00000004")
995
996     typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
997
998     HRESULT OnDefaultCommand( [in] IShellView *shv );
999     HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange );
1000     HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl );
1001 }
1002
1003
1004 /*****************************************************************************
1005  * IDockingWindowFrame interface
1006  */
1007 [
1008     object,
1009     uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8),
1010     pointer_default(unique),
1011     local
1012 ]
1013 interface IDockingWindowFrame : IOleWindow
1014 {
1015 cpp_quote("#define DWFRF_NORMAL           0x0000")
1016 cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001")
1017 cpp_quote("#define DWFAF_HIDDEN           0x0001")
1018
1019     HRESULT AddToolbar(
1020         [in] IUnknown *punkSrc,
1021         [in] LPCWSTR pwszItem,
1022         [in] DWORD dwAddFlags);
1023
1024     HRESULT RemoveToolbar(
1025         [in] IUnknown *punkSrc,
1026         [in] DWORD dwRemoveFlags);
1027
1028     HRESULT FindToolbar(
1029         [in] LPCWSTR pwszItem,
1030         [in] REFIID riid,
1031         [out] LPVOID *ppvObj);
1032 }
1033
1034
1035 /*****************************************************************************
1036  * IDragSourceHelper interface
1037  */
1038 [
1039     object,
1040     uuid(de5bf786-477a-11d2-839d-00c04fd918d0),
1041     pointer_default(unique),
1042     local
1043 ]
1044 interface IDragSourceHelper : IUnknown
1045 {
1046     typedef struct
1047     {
1048         SIZE     sizeDragImage;
1049         POINT    ptOffset;
1050         HBITMAP  hbmpDragImage;
1051         COLORREF crColorKey;
1052     } SHDRAGIMAGE, *LPSHDRAGIMAGE;
1053
1054   HRESULT InitializeFromBitmap(
1055       [in] LPSHDRAGIMAGE pshdi,
1056       [in] IDataObject *pDataObject);
1057
1058   HRESULT InitializeFromWindow(
1059       [in] HWND hwnd,
1060       [in] POINT *ppt,
1061       [in] IDataObject *pDataObject);
1062 }
1063
1064
1065 /*****************************************************************************
1066  * IDropTargetHelper interface
1067  */
1068 [
1069     object,
1070     uuid(4657278b-411b-11d2-839a-00c04fd918d0),
1071     pointer_default(unique),
1072     local
1073 ]
1074 interface IDropTargetHelper : IUnknown
1075 {
1076     HRESULT DragEnter(
1077         [in] HWND hwndTarget,
1078         [in] IDataObject *pDataObject,
1079         [in] POINT *ppt,
1080         [in] DWORD dwEffect);
1081
1082     HRESULT DragLeave();
1083
1084     HRESULT DragOver(
1085         [in] POINT *ppt,
1086         [in] DWORD dwEffect);
1087
1088     HRESULT Drop(
1089         [in] IDataObject *pDataObject,
1090         [in] POINT *ppt,
1091         [in] DWORD dwEffect);
1092
1093     HRESULT Show( [in] BOOL fShow );
1094 }
1095
1096
1097 /*****************************************************************************
1098  * IContextMenu interface
1099  */
1100 [
1101     object,
1102     uuid(000214e4-0000-0000-c000-000000000046),
1103     pointer_default(unique),
1104     local
1105 ]
1106 interface IContextMenu : IUnknown
1107 {
1108 cpp_quote("#define CMF_NORMAL        0x00000000")
1109 cpp_quote("#define CMF_DEFAULTONLY   0x00000001")
1110 cpp_quote("#define CMF_VERBSONLY     0x00000002")
1111 cpp_quote("#define CMF_EXPLORE       0x00000004")
1112 cpp_quote("#define CMF_NOVERBS       0x00000008")
1113 cpp_quote("#define CMF_CANRENAME     0x00000010")
1114 cpp_quote("#define CMF_NODEFAULT     0x00000020")
1115 cpp_quote("#define CMF_INCLUDESTATIC 0x00000040")
1116 cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100")
1117 cpp_quote("#define CMF_RESERVED      0xffff0000")
1118
1119 cpp_quote("#define GCS_VERBA         0x00000000")
1120 cpp_quote("#define GCS_HELPTEXTA     0x00000001")
1121 cpp_quote("#define GCS_VALIDATEA     0x00000002")
1122 cpp_quote("#define GCS_VERBW         0x00000004")
1123 cpp_quote("#define GCS_HELPTEXTW     0x00000005")
1124 cpp_quote("#define GCS_VALIDATEW     0x00000006")
1125 cpp_quote("#define GCS_UNICODE       0x00000004")
1126 cpp_quote("#define GCS_VERB          WINELIB_NAME_AW(GCS_VERB)")
1127 cpp_quote("#define GCS_HELPTEXT      WINELIB_NAME_AW(GCS_HELPTEXT)")
1128 cpp_quote("#define GCS_VALIDATE      WINELIB_NAME_AW(GCS_VALIDATE)")
1129
1130 cpp_quote("#define CMDSTR_NEWFOLDERA   \"NewFolder\"")
1131 cpp_quote("#define CMDSTR_VIEWLISTA    \"ViewList\"")
1132 cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"")
1133 cpp_quote("#if defined(__GNUC__)")
1134 cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }")
1135 cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }")
1136 cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }")
1137 cpp_quote("#elif defined(_MSC_VER)")
1138 cpp_quote("# define CMDSTR_NEWFOLDERW   L\"NewFolder\"")
1139 cpp_quote("# define CMDSTR_VIEWLISTW    L\"ViewList\"")
1140 cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"")
1141 cpp_quote("#else")
1142 cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};")
1143 cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};")
1144 cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};")
1145 cpp_quote("#endif")
1146 cpp_quote("#define CMDSTR_NEWFOLDER    WINELIB_NAME_AW(CMDSTR_NEWFOLDER)")
1147 cpp_quote("#define CMDSTR_VIEWLIST     WINELIB_NAME_AW(CMDSTR_VIEWLIST)")
1148 cpp_quote("#define CMDSTR_VIEWDETAILS  WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)")
1149
1150 cpp_quote("#define CMIC_MASK_HOTKEY         SEE_MASK_HOTKEY")
1151 cpp_quote("#define CMIC_MASK_ICON           SEE_MASK_ICON")
1152 cpp_quote("#define CMIC_MASK_FLAG_NO_UI     SEE_MASK_FLAG_NO_UI")
1153 cpp_quote("#define CMIC_MASK_UNICODE        SEE_MASK_UNICODE")
1154 cpp_quote("#define CMIC_MASK_NO_CONSOLE     SEE_MASK_NO_CONSOLE")
1155 cpp_quote("#define CMIC_MASK_HASLINKNAME    SEE_MASK_HASLINKNAME")
1156 cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM   SEE_MASK_FLAG_SEPVDM")
1157 cpp_quote("#define CMIC_MASK_HASTITLE       SEE_MASK_HASTITLE")
1158 cpp_quote("#define CMIC_MASK_ASYNCOK        SEE_MASK_ASYNCOK")
1159 cpp_quote("#define CMIC_MASK_SHIFT_DOWN     0x10000000")
1160 cpp_quote("#define CMIC_MASK_PTINVOKE       0x20000000")
1161 cpp_quote("#define CMIC_MASK_CONTROL_DOWN   0x40000000")
1162 cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE")
1163 cpp_quote("#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS")
1164
1165     typedef IContextMenu *LPCONTEXTMENU;
1166
1167     typedef struct tagCMINVOKECOMMANDINFO
1168     {
1169         DWORD cbSize;
1170         DWORD fMask;
1171         HWND hwnd;
1172         LPCSTR lpVerb;
1173         LPCSTR lpParameters;
1174         LPCSTR lpDirectory;
1175         INT nShow;
1176         DWORD dwHotKey;
1177         HANDLE hIcon;
1178     } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
1179
1180     typedef struct tagCMInvokeCommandInfoEx
1181     {
1182         DWORD cbSize;
1183         DWORD fMask;
1184         HWND hwnd;
1185         LPCSTR lpVerb;
1186         LPCSTR lpParameters;
1187         LPCSTR lpDirectory;
1188         INT nShow;
1189         DWORD dwHotKey;
1190         HANDLE hIcon;
1191         LPCSTR lpTitle;
1192         LPCWSTR lpVerbW;
1193         LPCWSTR lpParametersW;
1194         LPCWSTR lpDirectoryW;
1195         LPCWSTR lpTitleW;
1196         POINT ptInvoke;
1197     } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
1198
1199     HRESULT QueryContextMenu(
1200         [in] HMENU hmenu,
1201         [in] UINT indexMenu,
1202         [in] UINT idCmdFirst,
1203         [in] UINT idCmdLast,
1204         [in] UINT uFlags);
1205
1206     HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici );
1207
1208     HRESULT GetCommandString(
1209         [in] UINT_PTR idCmd,
1210         [in] UINT uType,
1211         [out] UINT *pwReserved,
1212         [out, size_is(cchMax)] LPSTR pszName,
1213         [in] UINT cchMax);
1214 }
1215
1216
1217 /*****************************************************************************
1218  * IContextMenu2 interface
1219  */
1220 [
1221     object,
1222     uuid(000214f4-0000-0000-c000-000000000046),
1223     pointer_default(unique),
1224     local
1225 ]
1226 interface IContextMenu2 : IContextMenu
1227 {
1228     typedef IContextMenu2 *LPCONTEXTMENU2;
1229
1230     HRESULT HandleMenuMsg(
1231         [in] UINT uMsg,
1232         [in] WPARAM wParam,
1233         [in] LPARAM lParam);
1234 }
1235
1236
1237 /*****************************************************************************
1238  * IContextMenu3 interface
1239  */
1240 [
1241     object,
1242     uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719),
1243     pointer_default(unique),
1244     local
1245 ]
1246 interface IContextMenu3 : IContextMenu2
1247 {
1248     typedef IContextMenu3 *LPCONTEXTMENU3;
1249
1250     HRESULT HandleMenuMsg2(
1251         [in] UINT uMsg,
1252         [in] WPARAM wParam,
1253         [in] LPARAM lParam,
1254         [out] LRESULT *plResult);
1255 }
1256
1257
1258 /*****************************************************************************
1259  * IShellExecuteHookA interface
1260  */
1261 [
1262     object,
1263     uuid(000214f5-0000-0000-c000-000000000046),
1264     pointer_default(unique),
1265     local
1266 ]
1267 interface IShellExecuteHookA : IUnknown
1268 {
1269     cpp_quote("struct _SHELLEXECUTEINFOA;")
1270     HRESULT Execute(
1271         [in, out] struct _SHELLEXECUTEINFOA* pei);
1272 }
1273
1274
1275 /*****************************************************************************
1276  * IShellExecuteHookW interface
1277  */
1278 [
1279     object,
1280     uuid(000214fb-0000-0000-c000-000000000046),
1281     pointer_default(unique),
1282     local
1283 ]
1284 interface IShellExecuteHookW : IUnknown
1285 {
1286     cpp_quote("struct _SHELLEXECUTEINFOW;")
1287     HRESULT Execute(
1288                 [in, out] struct _SHELLEXECUTEINFOW* pei);
1289 }
1290
1291 /*****************************************************************************
1292  * IShellLinkDataList interface
1293  */
1294 [
1295     object,
1296     uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1),
1297     pointer_default(unique)
1298 ]
1299 interface IShellLinkDataList : IUnknown
1300 {
1301     [local] HRESULT AddDataBlock(
1302                 [in] void *pDataBlock);
1303     [local] HRESULT CopyDataBlock(
1304                 [in] DWORD dwSig,
1305                 [out] void **ppDataBlock);
1306     HRESULT RemoveDataBlock(
1307                 [in] DWORD dwSig);
1308     HRESULT GetFlags(
1309                 [out] DWORD *pdwFlags);
1310     HRESULT SetFlags(
1311                 [in] DWORD dwFlags);
1312 }
1313
1314
1315 /*****************************************************************************
1316  * IResolveShellLink interface
1317  */
1318 [
1319     object,
1320     uuid(5cd52983-9449-11d2-963a-00c04f79adf0),
1321     pointer_default(unique)
1322 ]
1323 interface IResolveShellLink : IUnknown
1324 {
1325     HRESULT ResolveShellLink(
1326                 [in] IUnknown *punk,
1327                 [in] HWND hwnd,
1328                 [in] DWORD fFlags);
1329 }
1330
1331
1332 /*****************************************************************************
1333  * IURLSearchHook interface
1334  */
1335 [
1336     object,
1337     uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497),
1338     pointer_default(unique),
1339     local
1340 ]
1341 interface IURLSearchHook : IUnknown
1342 {
1343     HRESULT Translate(
1344                 [in, out] LPWSTR lpwszSearchURL,
1345                 [in] DWORD cchBufferSize);
1346 }
1347
1348
1349 /*****************************************************************************
1350  * ISearchContext interface
1351  */
1352 [
1353     object,
1354     uuid(09f656a2-41af-480c-88f7-16cc0d164615),
1355     pointer_default(unique),
1356     local
1357 ]
1358 interface ISearchContext : IUnknown
1359 {
1360     HRESULT GetSearchUrl(
1361                 [in] BSTR *pbstrSearchUrl);
1362     HRESULT GetSearchText(
1363                 [in] BSTR *pbstrSearchText);
1364     HRESULT GetSearchStyle(
1365                 [in] BSTR *pdwSearchStyle);
1366 }
1367
1368
1369 /*****************************************************************************
1370  * IURLSearchHook2 interface
1371  */
1372 [
1373     object,
1374     uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0),
1375     pointer_default(unique),
1376     local
1377 ]
1378 interface IURLSearchHook2 : IURLSearchHook
1379 {
1380     HRESULT TranslateWithSearchContext(
1381                 [in, out] LPWSTR lpwszSearchURL,
1382                 [in] DWORD cchBufferSize,
1383                 [in] ISearchContext *pSearchContext);
1384 }
1385
1386
1387 cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)")
1388
1389 /*****************************************************************************
1390  * INewShortcutHookA interface
1391  */
1392 [
1393     object,
1394     uuid(000214e1-0000-0000-c000-000000000046),
1395     pointer_default(unique),
1396     local
1397 ]
1398 interface INewShortcutHookA : IUnknown
1399 {
1400     HRESULT SetReferent(
1401                 [in] LPCSTR pcszReferent,
1402                 [in] HWND hwnd);
1403     HRESULT GetReferent(
1404                 [out] LPSTR pcszReferent,
1405                 [in] int cchReferent);
1406     HRESULT SetFolder(
1407                 [in] LPCSTR pcszReferent);
1408     HRESULT GetFolder(
1409                 [out] LPSTR pcszReferent,
1410                 [in] int cchFolder);
1411     HRESULT GetName(
1412                 [out] LPSTR pszName,
1413                 [in] int cchName);
1414     HRESULT GetExtension(
1415                 [out] LPSTR pszExtension,
1416                 [in] int cchExtension);
1417
1418
1419
1420 /*****************************************************************************
1421  * INewShortcutHookW interface
1422  */
1423 [
1424     object,
1425     uuid(000214f7-0000-0000-c000-000000000046),
1426     pointer_default(unique),
1427     local
1428 ]
1429 interface INewShortcutHookW : IUnknown
1430 {
1431     HRESULT SetReferent(
1432                 [in] LPCWSTR pcszReferent,
1433                 [in] HWND hwnd);
1434     HRESULT GetReferent(
1435                 [out] LPWSTR pcszReferent,
1436                 [in] int cchReferent);
1437     HRESULT SetFolder(
1438                 [in] LPCWSTR pcszReferent);
1439     HRESULT GetFolder(
1440                 [out] LPWSTR pcszReferent,
1441                 [in] int cchFolder);
1442     HRESULT GetName(
1443                 [out] LPWSTR pszName,
1444                 [in] int cchName);
1445     HRESULT GetExtension(
1446                 [out] LPWSTR pszExtension,
1447                 [in] int cchExtension);
1448
1449
1450 /*****************************************************************************
1451  * IRunnableTask interface
1452  */
1453 [
1454     object,
1455     uuid(85788d00-6807-11d0-b810-00c04fd706ec),
1456     pointer_default(unique),
1457     local
1458 ]
1459 interface IRunnableTask : IUnknown
1460 {
1461     HRESULT Run();
1462     HRESULT Kill([in] BOOL fWait);
1463     HRESULT Suspend();
1464     HRESULT Resume();
1465     ULONG IsRunning();
1466 }
1467
1468 /*****************************************************************************
1469  * IShellChangeNotify interface
1470  */
1471 [
1472     object,
1473     uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2),
1474     pointer_default(unique),
1475     local
1476 ]
1477 interface IShellChangeNotify : IUnknown
1478 {
1479     HRESULT OnChange(
1480                 [in] LONG lEvent,
1481                 [in] LPCITEMIDLIST pidl1,
1482                 [in] LPCITEMIDLIST pidl2);
1483 }
1484
1485 /*****************************************************************************
1486  * IFileSystemBindData interface
1487  */
1488 [
1489     object,
1490     uuid(01e18d10-4d8b-11d2-855d-006008059367),
1491     pointer_default(unique),
1492     local
1493 ]
1494 interface IFileSystemBindData : IUnknown
1495 {
1496     HRESULT SetFindData(
1497                 [in] const WIN32_FIND_DATAW *pfd);
1498     HRESULT GetFindData(
1499                 [out] WIN32_FIND_DATAW *pfd);
1500 }
1501
1502 /*****************************************************************************
1503  *    ITaskbarList interface
1504  */
1505 [
1506     object,
1507     uuid(56FDF342-FD6D-11d0-958A-006097C9A090),
1508     pointer_default(unique)
1509 ]
1510 interface ITaskbarList : IUnknown
1511 {
1512     HRESULT HrInit();
1513
1514     HRESULT AddTab(
1515         [in] HWND hwnd);
1516
1517     HRESULT DeleteTab(
1518         [in] HWND hwnd);
1519
1520     HRESULT ActivateTab(
1521         [in] HWND hwnd);
1522
1523     HRESULT SetActiveAlt(
1524         [in] HWND hwnd);
1525 }
1526
1527 cpp_quote("EXTERN_C const CLSID CLSID_TaskbarList;")
1528
1529 /*****************************************************************************
1530  *    IAutoCompleteDropDown interface
1531  */
1532 [
1533     object,
1534     uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB),
1535     pointer_default(unique)
1536 ]
1537 interface IAutoCompleteDropDown : IUnknown
1538 {
1539 cpp_quote("#define ACDD_VISIBLE   0x0001")
1540
1541     HRESULT GetDropDownStatus(
1542         [out] DWORD *pdwFlags,
1543         [out, string] LPWSTR *ppwszString);
1544
1545     HRESULT ResetEnumerator();
1546 }
1547
1548 [
1549     object,
1550     uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0),
1551     pointer_default(unique)
1552 ]
1553 interface IProfferService : IUnknown
1554 {
1555     HRESULT ProfferService(
1556         [in] REFGUID service,
1557         [in] IServiceProvider *pService,
1558         [out] DWORD *pCookie);
1559
1560     HRESULT RevokeService([in] DWORD cookie);
1561 }