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