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