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