ReactOS  0.4.14-dev-556-g4c5b21f
shobjidl.idl
Go to the documentation of this file.
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 import "propsys.idl";
34 import "objectarray.idl";
35 /* FIXME: import "structuredquery.idl"; */
36 
37 cpp_quote("/* FIXME: #include <sherrors.h> */")
38 
39 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
40 cpp_quote("#undef PlaySound")
41 cpp_quote("#endif")
42 
43 
44 /*****************************************************************************
45  * IPersistFolder interface
46  */
47 [
48  object,
49  uuid(000214ea-0000-0000-c000-000000000046),
51 ]
53 {
55 
57 }
58 
59 
60 /*****************************************************************************
61  * IPersistFolder2 interface
62  */
63 [
64  object,
65  uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f),
67 ]
69 {
71 
73 }
74 
75 
76 /*****************************************************************************
77  * IPersistIDList interface
78  */
79 [
80  object,
81  uuid(1079acfc-29bd-11d3-8e0d-00c04f6837d5),
83 ]
85 {
88 }
89 
90 
91 /*****************************************************************************
92  * IEnumIDList interface
93  */
94 [
95  object,
96  uuid(000214f2-0000-0000-c000-000000000046),
98 ]
99 interface IEnumIDList : IUnknown
100 {
102 
103  HRESULT Next(
104  [in] ULONG celt,
105  [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt,
106  [out] ULONG *pceltFetched);
107 
108  HRESULT Skip( [in] ULONG celt );
109  HRESULT Reset();
110  HRESULT Clone( [out] IEnumIDList **ppenum );
111 }
112 
113 /*****************************************************************************
114  * IShellPropSheetExt interface
115  */
116 cpp_quote("#if 0")
118 cpp_quote("#else")
119 cpp_quote("#include <prsht.h>")
121 cpp_quote("#endif")
122 
123 [
124  object,
125  uuid(000214E9-0000-0000-C000-000000000046),
127  local
128 ]
130 {
133  };
134 
135  typedef UINT EXPPS;
136 
138  [in] LPFNSVADDPROPSHEETPAGE pfnAddPage,
139  [in] LPARAM lParam);
141  [in] EXPPS uPageID,
142  [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith,
143  [in] LPARAM lParam);
144 }
145 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
146 
147 /*****************************************************************************
148  * IShellFolder interface
149  */
150 [
151  object,
152  uuid(000214e6-0000-0000-c000-000000000046),
154 ]
156 {
158 
159  typedef enum tagSHGDN
160  {
167  } SHGNO;
168 
169  typedef DWORD SHGDNF;
170 
172  {
181  SHCONTF_FASTITEMS = 0x02000,
182  SHCONTF_FLATLIST = 0x04000,
185  };
186 
187  typedef DWORD SHCONTF;
188 
189  cpp_quote("#define SFGAO_CANCOPY DROPEFFECT_COPY")
190  cpp_quote("#define SFGAO_CANMOVE DROPEFFECT_MOVE")
191  cpp_quote("#define SFGAO_CANLINK DROPEFFECT_LINK")
192  cpp_quote("#define SFGAO_STORAGE 0x00000008L")
193  cpp_quote("#define SFGAO_CANRENAME 0x00000010L")
194  cpp_quote("#define SFGAO_CANDELETE 0x00000020L")
195  cpp_quote("#define SFGAO_HASPROPSHEET 0x00000040L")
196  cpp_quote("#define SFGAO_DROPTARGET 0x00000100L")
197  cpp_quote("#define SFGAO_CAPABILITYMASK 0x00000177L")
198  cpp_quote("#define SFGAO_ENCRYPTED 0x00002000L")
199  cpp_quote("#define SFGAO_ISSLOW 0x00004000L")
200  cpp_quote("#define SFGAO_GHOSTED 0x00008000L")
201  cpp_quote("#define SFGAO_LINK 0x00010000L")
202  cpp_quote("#define SFGAO_SHARE 0x00020000L")
203  cpp_quote("#define SFGAO_READONLY 0x00040000L")
204  cpp_quote("#define SFGAO_HIDDEN 0x00080000L")
205  cpp_quote("#define SFGAO_DISPLAYATTRMASK 0x000FC000L")
206  cpp_quote("#define SFGAO_FILESYSANCESTOR 0x10000000L")
207  cpp_quote("#define SFGAO_FOLDER 0x20000000L")
208  cpp_quote("#define SFGAO_FILESYSTEM 0x40000000L")
209  cpp_quote("#define SFGAO_HASSUBFOLDER 0x80000000L")
210  cpp_quote("#define SFGAO_CONTENTSMASK 0x80000000L")
211  cpp_quote("#define SFGAO_VALIDATE 0x01000000L")
212  cpp_quote("#define SFGAO_REMOVABLE 0x02000000L")
213  cpp_quote("#define SFGAO_COMPRESSED 0x04000000L")
214  cpp_quote("#define SFGAO_BROWSABLE 0x08000000L")
215  cpp_quote("#define SFGAO_NONENUMERATED 0x00100000L")
216  cpp_quote("#define SFGAO_NEWCONTENT 0x00200000L")
217  cpp_quote("#define SFGAO_STREAM 0x00400000L")
218  cpp_quote("#define SFGAO_STORAGEANCESTOR 0x00800000L")
219 
220  typedef ULONG SFGAOF;
221 
223  [in] HWND hwndOwner,
224  [in] LPBC pbcReserved,
225  [in, string] LPOLESTR lpszDisplayName,
226  [out] ULONG *pchEaten,
227  [out] PIDLIST_RELATIVE *ppidl,
228  [in, out, unique] ULONG *pdwAttributes);
229 
231  [in] HWND hwndOwner,
232  [in] SHCONTF grfFlags,
233  [out] IEnumIDList **ppenumIDList);
234 
236  [in] PCUIDLIST_RELATIVE pidl,
237  [in] LPBC pbcReserved,
238  [in] REFIID riid,
239  [out, iid_is(riid)] void **ppvOut);
240 
242  [in] PCUIDLIST_RELATIVE pidl,
243  [in] LPBC pbcReserved,
244  [in] REFIID riid,
245  [out, iid_is(riid)] void **ppvObj);
246 
248  [in] LPARAM lParam,
249  [in] PCUIDLIST_RELATIVE pidl1,
250  [in] PCUIDLIST_RELATIVE pidl2);
251 
253  [in] HWND hwndOwner,
254  [in] REFIID riid,
255  [out, iid_is(riid)] void **ppvOut);
256 
258  [in] UINT cidl,
259  [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
260  [in, out] SFGAOF *rgfInOut);
261 
263  [in] HWND hwndOwner,
264  [in] UINT cidl,
265  [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
266  [in] REFIID riid,
267  [in, out, unique] UINT *prgfInOut,
268  [out, iid_is(riid)] void **ppvOut);
269 
271  [in] PCUITEMID_CHILD pidl,
272  [in] SHGDNF uFlags,
273  [out] STRRET *lpName);
274 
276  [in] HWND hwnd,
277  [in] PCUITEMID_CHILD pidl,
278  [in, string] LPCOLESTR lpszName,
279  [in] SHGDNF uFlags,
280  [out] PITEMID_CHILD *ppidlOut);
281 }
282 
283 
284 /*****************************************************************************
285  * IEnumExtraSearch interface
286  */
287 [
288  object,
289  uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13),
291 ]
293 {
295 
296  typedef struct
297  {
300  /*
301  *WCHAR wszMenuText[80];
302  *WCHAR wszHelpText[MAX_PATH];
303  */
304  WCHAR wszUrl[2084];
305  /*
306  *WCHAR wszIcon[MAX_PATH+10];
307  *WCHAR wszGreyIcon[MAX_PATH+10];
308  *WCHAR wszClrIcon[MAX_PATH+10];
309  */
311 
312  HRESULT Next(
313  [in] ULONG celt,
314  [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt,
315  [out] ULONG *pceltFetched);
316 
317  HRESULT Skip( [in] ULONG celt );
318  HRESULT Reset();
319  HRESULT Clone( [out] IEnumExtraSearch **ppenum );
320 }
321 
322 
323 /*****************************************************************************
324  * IShellFolder2 interface
325  */
326 [
327  object,
328  uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1),
330 ]
332 {
333  typedef struct
334  {
338  typedef const SHCOLUMNID *LPCSHCOLUMNID;
339 
340  HRESULT GetDefaultSearchGUID( [out] GUID *lpguid );
342  HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay );
343  HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags );
344  HRESULT GetDetailsEx( [in] PCUITEMID_CHILD pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
345  HRESULT GetDetailsOf( [in] PCUITEMID_CHILD pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
346  HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
347 }
348 
349 /*****************************************************************************
350  * IShellItem interface
351  */
352 [
353  object,
354  uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe),
356 ]
357 interface IShellItem : IUnknown
358 {
359  typedef [v1_enum] enum {
365  SIGDN_FILESYSPATH = 0x80058000,
366  SIGDN_URL = 0x80068000,
368  SIGDN_PARENTRELATIVE = 0x80080001
369  } SIGDN; /* & 0xFFFF => SHGDN */
370 
372  {
373  SICHINT_DISPLAY = 0x00000000,
374  SICHINT_CANONICAL = 0x10000000,
376  SICHINT_ALLFIELDS = 0x80000000
377  };
378  typedef DWORD SICHINTF;
379 
381  [in] IBindCtx *pbc,
382  [in] REFGUID rbhid,
383  [in] REFIID riid,
384  [out, iid_is(riid)] void **ppvOut);
385 
386  HRESULT GetParent( [out] IShellItem **ppsi );
387 
389  [in] SIGDN sigdnName,
390  [out] LPWSTR *ppszName);
391 
393  [in] SFGAOF sfgaoMask,
394  [out] SFGAOF *psfgaoAttribs);
395 
397  [in] IShellItem *psi,
398  [in] SICHINTF hint,
399  [out] int *piOrder);
400 }
401 
402 /*****************************************************************************
403  * IShellItem2 interface
404  */
405 [
406  object,
407  uuid(7E9FB0D3-919F-4307-AB2E-9B1860310C93),
409 ]
410 interface IShellItem2 : IShellItem
411 {
412  HRESULT GetPropertyStore(
413  [in] GETPROPERTYSTOREFLAGS flags,
414  [in] REFIID riid,
415  [out, iid_is(riid)] void **ppv);
416 
417  HRESULT GetPropertyStoreWithCreateObject(
418  [in] GETPROPERTYSTOREFLAGS flags,
419  [in] IUnknown *punkCreateObject,
420  [in] REFIID riid,
421  [out, iid_is(riid)] void **ppv);
422 
423  HRESULT GetPropertyStoreForKeys(
424  [in, size_is(cKeys)] const PROPERTYKEY *rgKeys,
425  [in] UINT cKeys,
426  [in] GETPROPERTYSTOREFLAGS flags,
427  [in] REFIID riid,
428  [out, iid_is(riid)] void **ppv);
429 
430  HRESULT GetPropertyDescriptionList(
431  [in] REFPROPERTYKEY keyType,
432  [in] REFIID riid,
433  [out, iid_is(riid)] void **ppv);
434 
435  HRESULT Update(
436  [in, unique] IBindCtx *pbc);
437 
438  HRESULT GetProperty(
440  [out] PROPVARIANT *ppropvar);
441 
442  HRESULT GetCLSID(
444  [out] CLSID *pclsid);
445 
448  [out] FILETIME *pft);
449 
450  HRESULT GetInt32(
452  [out] int *pi);
453 
454  HRESULT GetString(
456  [out, string] LPWSTR *ppsz);
457 
458  HRESULT GetUInt32(
460  [out] ULONG *pui);
461 
462  HRESULT GetUInt64(
464  [out] ULONGLONG *pull);
465 
466  HRESULT GetBool(
468  [out] BOOL *pf);
469 }
470 
471 typedef enum tagNWMF {
472  NWMF_UNLOADING = 0x0001,
473  NWMF_USERINITED = 0x0002,
474  NWMF_FIRST = 0x0004,
475  NWMF_OVERRIDEKEY = 0x0008,
476  NWMF_SHOWHELP = 0x0010,
477  NWMF_HTMLDIALOG = 0x0020,
478  NWMF_FROMDIALOGCHILD = 0x0040,
479  NWMF_USERREQUESTED = 0x0080,
480  NWMF_USERALLOWED = 0x0100
481 } NWMF;
482 
483 [
484  uuid(d2bc4c84-3f72-4a52-a604-7bcbf3982cbb),
485  object,
487 ]
489 {
491  [in, string] LPCWSTR pszUrl,
492  [in, string] LPCWSTR pszName,
493  [in, string] LPCWSTR pszUrlContext,
494  [in, string] LPCWSTR pszFeatures,
495  [in] BOOL fReplace,
496  [in] DWORD dwFlags,
497  [in] DWORD dwUserActionTime);
498 }
499 
500 cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager")
501 
502 /*****************************************************************************
503  * IEnumShellItems interface
504  */
505 [
506  object,
507  uuid(70629033-E363-4A28-A567-0DB78006E6D7),
509 ]
511 {
512  [local] HRESULT Next(
513  [in] ULONG celt,
514  [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt,
515  [out] ULONG *pceltFetched);
516 
517  [call_as(Next)] HRESULT RemoteNext(
518  [in] ULONG celt,
519  [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt,
520  [out] ULONG *pceltFetched);
521 
522  HRESULT Skip(
523  [in] ULONG celt);
524 
525  HRESULT Reset();
526 
527  HRESULT Clone(
528  [out] IEnumShellItems **ppenum);
529 }
530 
531 /*****************************************************************************
532  * IShellItemArray interface
533  */
534 [
535  object,
536  uuid(B63EA76D-1F85-456F-A19C-48159EFA858B),
538 ]
539 interface IShellItemArray : IUnknown
540 {
541  typedef [v1_enum] enum SIATTRIBFLAGS {
542  SIATTRIBFLAGS_AND = 0x0001,
543  SIATTRIBFLAGS_OR = 0x0002,
544  SIATTRIBFLAGS_APPCOMPAT = 0x0003,
545  SIATTRIBFLAGS_MASK = 0x0003,
546  SIATTRIBFLAGS_ALLITEMS = 0x4000
547  } SIATTRIBFLAGS;
548  cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)")
549 
550  HRESULT BindToHandler(
551  [in, unique] IBindCtx *pbc,
552  [in] REFGUID bhid,
553  [in] REFIID riid,
554  [out, iid_is(riid)] void **ppvOut);
555 
556  HRESULT GetPropertyStore(
557  [in] GETPROPERTYSTOREFLAGS flags,
558  [in] REFIID riid,
559  [out, iid_is(riid)] void **ppv);
560 
561  HRESULT GetPropertyDescriptionList(
562  [in] REFPROPERTYKEY keyType,
563  [in] REFIID riid,
564  [out, iid_is(riid)] void **ppv);
565 
566  HRESULT GetAttributes(
567  [in] SIATTRIBFLAGS AttribFlags,
568  [in] SFGAOF sfgaoMask,
569  [out] SFGAOF *psfgaoAttribs);
570 
571  HRESULT GetCount(
572  [out] DWORD *pdwNumItems);
573 
574  HRESULT GetItemAt(
575  [in] DWORD dwIndex,
576  [out] IShellItem **ppsi);
577 
578  HRESULT EnumItems(
579  [out] IEnumShellItems **ppenumShellItems);
580 
581 }
582 
584 {
585  DOGIF_DEFAULT = 0x0,
586  DOGIF_TRAVERSE_LINK = 0x1,
587  DOGIF_NO_HDROP = 0x2,
588  DOGIF_NO_URL = 0x4,
589  DOGIF_ONLY_IF_ONE = 0x8
591 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DATAOBJ_GET_ITEM_FLAGS)")
592 
599 cpp_quote("HRESULT WINAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, IShellFolder* psf, UINT cidl, PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray);")
601 cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromIDLists(UINT cidl, PCIDLIST_ABSOLUTE_ARRAY pidl_array, IShellItemArray **psia);")
603 
604 /*****************************************************************************
605  * IShellItemFilter interface
606  */
607 [
608  object,
609  uuid(2659B475-EEB8-48B7-8F07-B378810F48CF),
611 ]
613 {
614  HRESULT IncludeItem(
615  [in] IShellItem *psi);
616 
617  HRESULT GetEnumFlagsForItem(
618  [in] IShellItem *psi,
619  [out] SHCONTF *pgrfFlags);
620 }
621 
622 /*****************************************************************************
623  * FOLDERSETTINGS
624  */
625 typedef char *LPVIEWSETTINGS;
626 
627 typedef enum
628 {
629  FWF_AUTOARRANGE = 0x00000001,
630  FWF_ABBREVIATEDNAMES = 0x00000002,
631  FWF_SNAPTOGRID = 0x00000004,
632  FWF_OWNERDATA = 0x00000008,
633  FWF_BESTFITWINDOW = 0x00000010,
634  FWF_DESKTOP = 0x00000020,
635  FWF_SINGLESEL = 0x00000040,
636  FWF_NOSUBFOLDERS = 0x00000080,
637  FWF_TRANSPARENT = 0x00000100,
638  FWF_NOCLIENTEDGE = 0x00000200,
639  FWF_NOSCROLL = 0x00000400,
640  FWF_ALIGNLEFT = 0x00000800,
641  FWF_NOICONS = 0x00001000,
642  FWF_SHOWSELALWAYS = 0x00002000,
643  FWF_NOVISIBLE = 0x00004000,
645  FWF_NOWEBVIEW = 0x00010000,
646  FWF_HIDEFILENAMES = 0x00020000,
647  FWF_CHECKSELECT = 0x00040000,
648  FWF_NOENUMREFRESH = 0x00080000,
649  FWF_NOGROUPING = 0x00100000,
650  FWF_FULLROWSELECT = 0x00200000,
651  FWF_NOFILTERS = 0x00400000,
652  FWF_NOCOLUMNHEADER = 0x00800000,
654  FWF_EXTENDEDTILES = 0x02000000,
655  FWF_TRICHECKSELECT = 0x04000000,
656  FWF_AUTOCHECKSELECT = 0x08000000,
658  FWF_SUBSETGROUPS = 0x20000000,
659  FWF_USESEARCHFOLDER = 0x40000000,
660  FWF_ALLOWRTLREADING = 0x80000000
661 } FOLDERFLAGS;
662 
663 typedef enum
664 {
665  FVM_AUTO =-1,
666  FVM_ICON = 1,
669  FVM_LIST = 3,
672  FVM_TILE = 6,
677 
678 typedef struct
679 {
684 
685 /*****************************************************************************
686  * IShellIcon interface
687  */
688 [
689  uuid(000214e5-0000-0000-c000-000000000046),
690  object,
692 ]
693 interface IShellIcon : IUnknown
694 {
695  HRESULT GetIconOf(
696  [in] PCUITEMID_CHILD pidl,
697  [in] UINT flags,
698  [out] int *pIconIndex);
699 }
700 
701 /*****************************************************************************
702  * IShellView interface
703  */
704 interface IShellBrowser; /* forward declaration */
705 [
706  object,
707  uuid(000214e3-0000-0000-c000-000000000046),
709 ]
711 {
713 
714  cpp_quote("#define SVSI_DESELECT 0x00000000")
715  cpp_quote("#define SVSI_SELECT 0x00000001")
716  cpp_quote("#define SVSI_EDIT 0x00000003")
717  cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
718  cpp_quote("#define SVSI_ENSUREVISIBLE 0x00000008")
719  cpp_quote("#define SVSI_FOCUSED 0x00000010")
720  cpp_quote("#define SVSI_TRANSLATEPT 0x00000020")
721  cpp_quote("#define SVSI_SELECTIONMARK 0x00000040")
722  cpp_quote("#define SVSI_POSITIONITEM 0x00000080")
723  cpp_quote("#define SVSI_CHECK 0x00000100")
724  cpp_quote("#define SVSI_NOSTATECHANGE 0x80000000")
725 
726  typedef UINT SVSIF;
727 
728  typedef enum
729  {
730  SVGIO_BACKGROUND = 0x00000000,
731  SVGIO_SELECTION = 0x00000001,
732  SVGIO_ALLVIEW = 0x00000002,
733  SVGIO_CHECKED = 0x00000003,
734  SVGIO_TYPE_MASK = 0x0000000f,
735  SVGIO_FLAG_VIEWORDER = 0x80000000,
736  } SVGIO;
737 
738  typedef enum
739  {
740  SVUIA_DEACTIVATE = 0,
741  SVUIA_ACTIVATE_NOFOCUS = 1,
742  SVUIA_ACTIVATE_FOCUS = 2,
743  SVUIA_INPLACEACTIVATE = 3
744  } SVUIA_STATUS;
745 
746  HRESULT TranslateAccelerator( [in] MSG *pmsg );
747  HRESULT EnableModeless( [in] BOOL fEnable );
748  HRESULT UIActivate( [in] UINT uState );
749  HRESULT Refresh();
750  HRESULT CreateViewWindow(
751  [in] IShellView *psvPrevious,
752  [in] LPCFOLDERSETTINGS lpfs,
753  [in] IShellBrowser *psb,
754  [out] RECT *prcView,
755  [out] HWND *phWnd);
756 
757  HRESULT DestroyViewWindow();
758  HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs );
759 
760  [local] HRESULT AddPropertySheetPages(
761  [in] DWORD dwReserved,
763  [in] LPARAM lparam);
764 
765  HRESULT SaveViewState();
766  HRESULT SelectItem(
767  [in] LPCITEMIDLIST pidlItem,
768  [in] SVSIF uFlags);
769  HRESULT GetItemObject(
770  [in] UINT uItem,
771  [in] REFIID riid,
772  [out, iid_is(riid)] void **ppv);
773 }
774 
775 [
776  object,
777  uuid(88e39e80-3578-11cf-ae69-08002b2e1262),
779 ]
781 {
782  typedef GUID SHELLVIEWID;
783 cpp_quote("#include <pshpack8.h>")
785  {
794 cpp_quote("#include <poppack.h>")
795 
796  HRESULT GetView(
797  [in, out] SHELLVIEWID *view_guid,
798  [in] ULONG view_type
799  );
800  HRESULT CreateViewWindow2(
801  [in] LPSV2CVW2_PARAMS view_params
802  );
803  HRESULT HandleRename(
804  [in] LPCITEMIDLIST new_pidl
805  );
806  HRESULT SelectAndPositionItem(
808  [in] UINT flags,
809  [in] POINT *point
810  );
811 }
812 
813 [
814  object,
815  uuid(ec39fa88-f8af-41c5-8421-38bed28f4673),
817 ]
819 {
821  {
822  SV3CVW3_DEFAULT = 0x00000000,
823  SV3CVW3_NONINTERACTIVE = 0x00000001,
824  SV3CVW3_FORCEVIEWMODE = 0x00000002,
825  SV3CVW3_FORCEFOLDERFLAGS = 0x00000004
826  };
827 
829 
830  HRESULT CreateViewWindow3(
831  [in] IShellBrowser *owner,
832  [in, unique] IShellView *prev_view,
833  [in] SV3CVW3_FLAGS view_flags,
834  [in] FOLDERFLAGS mask,
835  [in] FOLDERFLAGS flags,
837  [in, unique] const SHELLVIEWID *view_id,
838  [in] const RECT *rect,
839  [out] HWND *hwnd);
840 }
841 
842 /*****************************************************************************
843  * IFolderView interface
844  */
845 [
846  uuid(cde725b0-ccc9-4519-917e-325d72fab4ce),
847  object,
849 ]
851 {
852  HRESULT GetCurrentViewMode( [out] UINT *mode );
853  HRESULT SetCurrentViewMode( [in] UINT mode );
854  HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv );
855  HRESULT Item(
856  [in] int index,
857  [out] PITEMID_CHILD *ppidl
858  );
859  HRESULT ItemCount(
860  [in] UINT flags,
861  [out] int *items
862  );
863  HRESULT Items(
864  [in] UINT flags,
865  [in] REFIID riid,
866  [out, iid_is(riid)] void **ppv
867  );
868  HRESULT GetSelectionMarkedItem( [out] int *item );
869  HRESULT GetFocusedItem( [out] int *item );
870  HRESULT GetItemPosition(
871  [in] PCUITEMID_CHILD pidl,
872  [out] POINT* ppt
873  );
874  HRESULT GetSpacing( [in, out, unique] POINT* pt );
875  HRESULT GetDefaultSpacing( [out] POINT* pt );
876  HRESULT GetAutoArrange();
877  HRESULT SelectItem(
878  [in] int item,
879  [in] DWORD flags
880  );
881  HRESULT SelectAndPositionItems(
882  [in] UINT cidl,
883  [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
884  [in, unique, size_is(cidl)] POINT* apt,
885  [in] DWORD flags
886  );
887 }
888 
890 {
893 };
894 typedef int SORTDIRECTION;
895 
896 typedef struct SORTCOLUMN
897 {
898  PROPERTYKEY propkey;
900 } SORTCOLUMN;
901 
902 typedef [v1_enum] enum FVTEXTTYPE
903 {
905 } FVTEXTTYPE;
906 
907 [
908  uuid(1af3a467-214f-4298-908e-06b03e0b39f9),
909  object,
911 ]
913 {
914  HRESULT SetGroupBy(
916  [in] BOOL ascending);
917 
918  [local]
919  HRESULT GetGroupBy(
920  [out] PROPERTYKEY *pkey,
921  [out] BOOL *ascending);
922 
923  [call_as(GetGroupBy)]
924  HRESULT RemoteGetGroupBy(
925  [out] PROPERTYKEY *pkey,
926  [out] BOOL *ascending);
927 
928  HRESULT SetViewProperty(
929  [in] PCUITEMID_CHILD pidl,
930  [in] REFPROPERTYKEY propkey,
931  [in] REFPROPVARIANT propvar);
932 
933  HRESULT GetViewProperty(
934  [in] PCUITEMID_CHILD pidl,
935  [in] REFPROPERTYKEY propkey,
936  [out] PROPVARIANT *propvar);
937 
938  HRESULT SetTileViewProperties(
939  [in] PCUITEMID_CHILD pidl,
940  [in, string] LPCWSTR prop_list);
941 
942  HRESULT SetExtendedTileViewProperties(
943  [in] PCUITEMID_CHILD pidl,
944  [in, string] LPCWSTR prop_list);
945 
946  HRESULT SetText(
947  [in] FVTEXTTYPE type,
948  [in] LPCWSTR text);
949 
950  HRESULT SetCurrentFolderFlags(
951  [in] DWORD mask,
952  [in] DWORD flags);
953 
954  HRESULT GetCurrentFolderFlags([out] DWORD *flags);
955 
956  HRESULT GetSortColumnCount([out] int *columns);
957 
958  HRESULT SetSortColumns(
959  [in, size_is(count)] const SORTCOLUMN *columns,
960  [in] int count);
961 
962  HRESULT GetSortColumns(
963  [out, size_is(count)] SORTCOLUMN *columns,
964  [in] int count);
965 
966  HRESULT GetItem(
967  [in] int ittem,
968  [in] REFIID riid,
969  [out, iid_is(riid)] void **ppv);
970 
971  HRESULT GetVisibleItem(
972  [in] int start,
973  [in] BOOL previous,
974  [out] int *item);
975 
977  [in] int start,
978  [out] int *item);
979 
980  HRESULT GetSelection(
981  [in] BOOL none_implies_folder,
982  [out] IShellItemArray **array);
983 
984  HRESULT GetSelectionState(
985  [in] PCUITEMID_CHILD pidl,
986  [out] DWORD *flags);
987 
988  HRESULT InvokeVerbOnSelection([in, unique, string] LPCSTR verb);
989 
990  HRESULT SetViewModeAndIconSize(
992  [in] int size);
993 
994  HRESULT GetViewModeAndIconSize(
996  [out] int *size);
997 
998  HRESULT SetGroupSubsetCount([in] UINT visible_rows);
999 
1000  HRESULT GetGroupSubsetCount([out] UINT *visible_rows);
1001 
1002  HRESULT SetRedraw([in] BOOL redraw);
1003 
1004  HRESULT IsMoveInSameFolder();
1005 
1006  HRESULT DoRename();
1007 }
1008 
1009 /*****************************************************************************
1010  * IShellBrowser interface
1011  */
1012 [
1013  object,
1014  uuid(000214e2-0000-0000-c000-000000000046),
1016 ]
1018 {
1020 
1021 cpp_quote("#define SBSP_DEFBROWSER 0x00000000")
1022 cpp_quote("#define SBSP_SAMEBROWSER 0x00000001")
1023 cpp_quote("#define SBSP_NEWBROWSER 0x00000002")
1024 cpp_quote("#define SBSP_DEFMODE 0x00000000")
1025 cpp_quote("#define SBSP_OPENMODE 0x00000010")
1026 cpp_quote("#define SBSP_EXPLOREMODE 0x00000020")
1027 cpp_quote("#define SBSP_HELPMODE 0x00000040")
1028 cpp_quote("#define SBSP_NOTRANSFERHIST 0x00000080")
1029 cpp_quote("#define SBSP_ABSOLUTE 0x00000000")
1030 cpp_quote("#define SBSP_RELATIVE 0x00001000")
1031 cpp_quote("#define SBSP_PARENT 0x00002000")
1032 cpp_quote("#define SBSP_NAVIGATEBACK 0x00004000")
1033 cpp_quote("#define SBSP_NAVIGATEFORWARD 0x00008000")
1034 cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE 0x00010000")
1035 cpp_quote("#define SBSP_KEEPSAMETEMPLATE 0x00020000")
1036 cpp_quote("#define SBSP_KEEPWORDWHEELTEXT 0x00040000")
1037 cpp_quote("#define SBSP_ACTIVATE_NOFOCUS 0x00080000")
1038 cpp_quote("#define SBSP_CREATENOHISTORY 0x00100000")
1039 cpp_quote("#define SBSP_PLAYNOSOUND 0x00200000")
1040 cpp_quote("#define SBSP_CALLERUNTURUSTED 0x00800000")
1041 cpp_quote("#define SBSP_TRUSTFIRSTDOWNLOAD 0x01000000")
1042 cpp_quote("#define SBSP_UNTRUSTEDFORDOWNLOAD 0x02000000")
1043 cpp_quote("#define SBSP_NOAUTOSELECT 0x04000000")
1044 cpp_quote("#define SBSP_WRITENOHISTORY 0x08000000")
1045 cpp_quote("#define SBSP_TRUSTEDFORACTIVEX 0x10000000")
1046 cpp_quote("#define SBSP_FEEDNAVIGATION 0x20000000")
1047 cpp_quote("#define SBSP_REDIRECT 0x40000000")
1048 cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
1049 
1050 cpp_quote("#define FCW_STATUS 0x0001")
1051 cpp_quote("#define FCW_TOOLBAR 0x0002")
1052 cpp_quote("#define FCW_TREE 0x0003")
1053 cpp_quote("#define FCW_INTERNETBAR 0x0006")
1054 cpp_quote("#define FCW_PROGRESS 0x0008")
1055 
1056 cpp_quote("#define FCT_MERGE 0x0001")
1057 cpp_quote("#define FCT_CONFIGABLE 0x0002")
1058 cpp_quote("#define FCT_ADDTOEND 0x0004")
1059 
1060 cpp_quote("#if 0")
1061  typedef LPARAM LPTBBUTTONSB;
1062 cpp_quote("#else")
1063 cpp_quote("#include <commctrl.h>")
1065 cpp_quote("#endif")
1066 
1067  HRESULT InsertMenusSB(
1068  [in] HMENU hmenuShared,
1069  [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
1070 
1071  HRESULT SetMenuSB(
1072  [in] HMENU hmenuShared,
1073  [in] HOLEMENU holemenuReserved,
1074  [in] HWND hwndActiveObject);
1075 
1076  HRESULT RemoveMenusSB( [in] HMENU hmenuShared );
1077  HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText );
1078  HRESULT EnableModelessSB( [in] BOOL fEnable );
1079  HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID );
1080 
1081  HRESULT BrowseObject(
1082  [in] LPCITEMIDLIST pidl,
1083  [in] UINT wFlags);
1084 
1085  HRESULT GetViewStateStream(
1086  [in] DWORD grfMode,
1087  [out] IStream **ppStrm);
1088 
1089  HRESULT GetControlWindow(
1090  [in] UINT id,
1091  [out] HWND *phwnd);
1092 
1093  [local] HRESULT SendControlMsg(
1094  [in] UINT id,
1095  [in] UINT uMsg,
1096  [in] WPARAM wParam,
1097  [in] LPARAM lParam,
1098  [in] LRESULT *pret);
1099 
1100  HRESULT QueryActiveShellView( [out] IShellView **ppshv );
1101  HRESULT OnViewWindowActive( [in] IShellView *pshv );
1102 
1103  [local]
1104  HRESULT SetToolbarItems(
1105  [in] LPTBBUTTONSB lpButtons,
1106  [in] UINT nButtons,
1107  [in] UINT uFlags);
1108 }
1109 
1110 
1111 /*****************************************************************************
1112  * IShellLinkA interface
1113  */
1114 [
1115  object,
1116  uuid(000214ee-0000-0000-c000-000000000046),
1118 ]
1120 {
1121  typedef enum
1122  {
1123  SLR_NO_UI = 0x0001,
1124  SLR_ANY_MATCH = 0x0002,
1125  SLR_UPDATE = 0x0004,
1126  SLR_NOUPDATE = 0x0008,
1127  SLR_NOSEARCH = 0x0010,
1128  SLR_NOTRACK = 0x0020,
1129  SLR_NOLINKINFO = 0x0040,
1130  SLR_INVOKE_MSI = 0x0080,
1131  SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
1132  } SLR_FLAGS;
1133 
1134  typedef enum
1135  {
1136  SLGP_SHORTPATH = 0x0001,
1137  SLGP_UNCPRIORITY = 0x0002,
1138  SLGP_RAWPATH = 0x0004,
1139  } SLGP_FLAGS;
1140 
1141  HRESULT GetPath(
1142  [out, size_is(cch)] LPSTR pszFile,
1143  [in] int cch,
1145  [in] DWORD fFlags);
1146 
1147  HRESULT GetIDList( [out] PIDLIST_ABSOLUTE * ppidl );
1148 
1149  HRESULT SetIDList( [in] PCIDLIST_ABSOLUTE pidl );
1150 
1151  HRESULT GetDescription(
1152  [out, size_is(cch)] LPSTR pszName,
1153  [in] int cch);
1154 
1155  HRESULT SetDescription( [in] LPCSTR pszName );
1156 
1157  HRESULT GetWorkingDirectory(
1158  [out, size_is(cch)] LPSTR pszDir,
1159  [in] int cch);
1160 
1161  HRESULT SetWorkingDirectory( [in] LPCSTR pszDir );
1162 
1163  HRESULT GetArguments(
1164  [out, size_is(cch)] LPSTR pszArgs,
1165  [in] int cch);
1166 
1167  HRESULT SetArguments( [in] LPCSTR pszArgs );
1168 
1169  HRESULT GetHotkey( [out] WORD *pwHotkey );
1170 
1171  HRESULT SetHotkey( [in] WORD wHotkey );
1172 
1173  HRESULT GetShowCmd( [out] int *piShowCmd );
1174 
1175  HRESULT SetShowCmd( [in] int iShowCmd );
1176 
1177  HRESULT GetIconLocation(
1178  [out, size_is(cch)] LPSTR pszIconPath,
1179  [in] int cch,
1180  [out] int *piIcon);
1181 
1182  HRESULT SetIconLocation(
1183  [in] LPCSTR pszIconPath,
1184  [in] int iIcon);
1185 
1186  HRESULT SetRelativePath(
1187  [in] LPCSTR pszPathRel,
1188  [in] DWORD dwReserved);
1189 
1190  HRESULT Resolve(
1191  [in] HWND hwnd,
1192  [in] DWORD fFlags);
1193 
1194  HRESULT SetPath( [in] LPCSTR pszFile );
1195 }
1196 
1197 
1198 /*****************************************************************************
1199  * IShellLinkW interface
1200  */
1201 [
1202  object,
1203  uuid(000214f9-0000-0000-c000-000000000046),
1205 ]
1207 {
1208  HRESULT GetPath(
1209  [out, size_is(cch)] LPWSTR pszFile,
1210  [in] int cch,
1211  [in, out] WIN32_FIND_DATAW *pfd,
1212  [in] DWORD fFlags);
1213 
1214  HRESULT GetIDList( [out] PIDLIST_ABSOLUTE * ppidl );
1215 
1216  HRESULT SetIDList( [in] PCIDLIST_ABSOLUTE pidl );
1217 
1218  HRESULT GetDescription(
1219  [out, size_is(cch)] LPWSTR pszName,
1220  [in] int cch);
1221 
1222  HRESULT SetDescription( [in] LPCWSTR pszName );
1223 
1224  HRESULT GetWorkingDirectory(
1225  [out, size_is(cch)] LPWSTR pszDir,
1226  [in] int cch);
1227 
1228  HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir );
1229 
1230  HRESULT GetArguments(
1231  [out, size_is(cch)] LPWSTR pszArgs,
1232  [in] int cch);
1233 
1234  HRESULT SetArguments( [in] LPCWSTR pszArgs );
1235 
1236  HRESULT GetHotkey( [out] WORD *pwHotkey );
1237 
1238  HRESULT SetHotkey( [in] WORD wHotkey );
1239 
1240  HRESULT GetShowCmd( [out] int *piShowCmd );
1241 
1242  HRESULT SetShowCmd( [in] int iShowCmd );
1243 
1244  HRESULT GetIconLocation(
1245  [out, size_is(cch)] LPWSTR pszIconPath,
1246  [in] int cch,
1247  [out] int *piIcon);
1248 
1249  HRESULT SetIconLocation(
1250  [in] LPCWSTR pszIconPath,
1251  [in] int iIcon);
1252 
1253  HRESULT SetRelativePath(
1254  [in] LPCWSTR pszPathRel,
1255  [in] DWORD dwReserved);
1256 
1257  HRESULT Resolve(
1258  [in] HWND hwnd,
1259  [in] DWORD fFlags);
1260 
1261  HRESULT SetPath( [in] LPCWSTR pszFile );
1262 }
1263 
1264 cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)")
1265 
1266 
1267 /*****************************************************************************
1268  * IShellExtInit interface
1269  */
1270 [
1271  object,
1272  uuid(000214e8-0000-0000-c000-000000000046),
1274  local
1275 ]
1277 {
1279 
1281  [in] PCIDLIST_ABSOLUTE pidlFolder,
1282  [in] IDataObject *pdtobj,
1283  [in] HKEY hkeyProgID);
1284 }
1285 
1286 
1287 /*******************************************************************************/
1288 /* Note: the following interfaces are not in shobjidl.idl under Windows, they */
1289 /* are declared directly in shlobj.h. It hopefully won't break anything to put */
1290 /* them here anyway. */
1291 /*******************************************************************************/
1292 
1293 #ifndef MAX_PATH
1294 #define MAX_PATH 260
1295 #endif
1296 
1297 
1298 /*****************************************************************************
1299  * IPersistFolder3 interface
1300  */
1301 [
1302  object,
1303  uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf),
1305 ]
1307 {
1308  typedef struct
1309  {
1311  WCHAR szTargetParsingName[MAX_PATH];
1312  WCHAR szNetworkProvider[MAX_PATH];
1314  int csidl;
1316 
1317  HRESULT InitializeEx(
1318  [in] IBindCtx *pbc,
1319  [in] LPCITEMIDLIST pidlRoot,
1320  [in] const PERSIST_FOLDER_TARGET_INFO *ppfti);
1321 
1322  HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti );
1323 }
1324 
1325 
1326 /*****************************************************************************
1327  * IExtractIconA interface
1328  */
1329 [
1330  object,
1331  uuid(000214eb-0000-0000-c000-000000000046),
1333  local
1334 ]
1336 {
1337 cpp_quote("#define GIL_OPENICON 0x0001")
1338 cpp_quote("#define GIL_FORSHELL 0x0002")
1339 cpp_quote("#define GIL_ASYNC 0x0020")
1340 cpp_quote("#define GIL_DEFAULTICON 0x0040")
1341 cpp_quote("#define GIL_FORSHORTCUT 0x0080")
1342 
1343 cpp_quote("#define GIL_SIMULATEDOC 0x0001")
1344 cpp_quote("#define GIL_PERINSTANCE 0x0002")
1345 cpp_quote("#define GIL_PERCLASS 0x0004")
1346 cpp_quote("#define GIL_NOTFILENAME 0x0008")
1347 cpp_quote("#define GIL_DONTCACHE 0x0010")
1348 
1349  typedef IExtractIconA *LPEXTRACTICONA;
1350 
1351  HRESULT GetIconLocation(
1352  [in] UINT uFlags,
1353  [out, size_is(cchMax)] LPSTR szIconFile,
1354  [in] UINT cchMax,
1355  [out] INT *piIndex,
1356  [out] UINT *pwFlags);
1357 
1358  HRESULT Extract(
1359  [in] LPCSTR pszFile,
1360  [in] UINT nIconIndex,
1361  [out] HICON *phiconLarge,
1362  [out] HICON *phiconSmall,
1363  [in] UINT nIconSize );
1364 }
1365 
1366 
1367 /*****************************************************************************
1368  * IExtractIconW interface
1369  */
1370 [
1371  object,
1372  uuid(000214fa-0000-0000-c000-000000000046),
1374  local
1375 ]
1377 {
1379 
1380  HRESULT GetIconLocation(
1381  [in] UINT uFlags,
1382  [out, size_is(cchMax)] LPWSTR szIconFile,
1383  [in] UINT cchMax,
1384  [out] INT *piIndex,
1385  [out] UINT *pwFlags);
1386 
1387  HRESULT Extract(
1388  [in] LPCWSTR pszFile,
1389  [in] UINT nIconIndex,
1390  [out] HICON *phiconLarge,
1391  [out] HICON *phiconSmall,
1392  [in] UINT nIconSize );
1393 }
1394 
1395 cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)")
1396 cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)")
1397 
1398 
1399 /*****************************************************************************
1400  * ICommDlgBrowser interface
1401  */
1402 [
1403  object,
1404  uuid(000214f1-0000-0000-c000-000000000046),
1406 ]
1408 {
1409 cpp_quote("#define CDBOSC_SETFOCUS 0x00000000")
1410 cpp_quote("#define CDBOSC_KILLFOCUS 0x00000001")
1411 cpp_quote("#define CDBOSC_SELCHANGE 0x00000002")
1412 cpp_quote("#define CDBOSC_RENAME 0x00000003")
1413 cpp_quote("#define CDBOSC_STATECHANGE 0x00000004")
1414 
1416 
1417  HRESULT OnDefaultCommand( [in] IShellView *shv );
1418  HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange );
1419  HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl );
1420 }
1421 
1422 
1423 /*****************************************************************************
1424  * ICommDlgBrowser2 interface
1425  */
1426 [
1427  object,
1428  uuid(10339516-2894-11D2-9039-00C04F8EEB3E),
1430 ]
1432 {
1433 
1434  HRESULT Notify(
1435  [in] IShellView *ppshv,
1436  [in] DWORD dwNotifyType);
1437 
1438  HRESULT GetDefaultMenuText(
1439  [in] IShellView *ppshv,
1440  [out, string, size_is(cchMax)] LPWSTR pszText,
1441  [in] int cchMax);
1442 
1443  HRESULT GetViewFlags(
1444  [out] DWORD *pdwFlags);
1445 }
1446 
1447 
1448 /*****************************************************************************
1449  * ICommDlgBrowser3 interface
1450  */
1451 [
1452  object,
1453  uuid(C8AD25A1-3294-41EE-8165-71174BD01C57),
1455 ]
1457 {
1458 
1459  HRESULT OnColumnClicked(
1460  [in] IShellView *ppshv,
1461  [in] int iColumn);
1462 
1463  HRESULT GetCurrentFilter(
1464  [out, string, size_is(cchFileSpec)] LPWSTR pszFileSpec,
1465  [in] int cchFileSpec);
1466 
1467  HRESULT OnPreviewCreated(
1468  [in] IShellView *ppshv);
1469 }
1470 
1471 /*****************************************************************************
1472  * IDockingWindow interface
1473  */
1474 [
1475  object,
1476  uuid(012dd920-7b26-11d0-8ca9-00a0c92dbfe8)
1477 ]
1479 {
1480  HRESULT ShowDW(
1481  [in] BOOL fShow);
1482 
1483  HRESULT CloseDW(
1484  [in] DWORD dwReserved);
1485 
1486  HRESULT ResizeBorderDW(
1487  [in] LPCRECT prcBorder,
1488  [in] IUnknown *punkToolbarSite,
1489  [in] BOOL fReserved);
1490 };
1491 
1492 
1493 /*****************************************************************************
1494  * IDockingWindowFrame interface
1495  */
1496 [
1497  object,
1498  uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8),
1500  local
1501 ]
1503 {
1504 cpp_quote("#define DWFRF_NORMAL 0x0000")
1505 cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001")
1506 cpp_quote("#define DWFAF_HIDDEN 0x0001")
1507 
1508  HRESULT AddToolbar(
1509  [in] IUnknown *punkSrc,
1510  [in] LPCWSTR pwszItem,
1511  [in] DWORD dwAddFlags);
1512 
1513  HRESULT RemoveToolbar(
1514  [in] IUnknown *punkSrc,
1515  [in] DWORD dwRemoveFlags);
1516 
1517  HRESULT FindToolbar(
1518  [in] LPCWSTR pwszItem,
1519  [in] REFIID riid,
1520  [out] LPVOID *ppvObj);
1521 }
1522 
1523 
1524 /*****************************************************************************
1525  * IDragSourceHelper interface
1526  */
1527 [
1528  object,
1529  uuid(de5bf786-477a-11d2-839d-00c04fd918d0),
1531  local
1532 ]
1534 {
1535  typedef struct
1536  {
1542 
1543  HRESULT InitializeFromBitmap(
1544  [in] LPSHDRAGIMAGE pshdi,
1545  [in] IDataObject *pDataObject);
1546 
1547  HRESULT InitializeFromWindow(
1548  [in] HWND hwnd,
1549  [in] POINT *ppt,
1550  [in] IDataObject *pDataObject);
1551 }
1552 
1553 
1554 /*****************************************************************************
1555  * IDropTargetHelper interface
1556  */
1557 [
1558  object,
1559  uuid(4657278b-411b-11d2-839a-00c04fd918d0),
1561  local
1562 ]
1564 {
1565  HRESULT DragEnter(
1566  [in] HWND hwndTarget,
1567  [in] IDataObject *pDataObject,
1568  [in] POINT *ppt,
1569  [in] DWORD dwEffect);
1570 
1571  HRESULT DragLeave();
1572 
1573  HRESULT DragOver(
1574  [in] POINT *ppt,
1575  [in] DWORD dwEffect);
1576 
1577  HRESULT Drop(
1578  [in] IDataObject *pDataObject,
1579  [in] POINT *ppt,
1580  [in] DWORD dwEffect);
1581 
1582  HRESULT Show( [in] BOOL fShow );
1583 }
1584 
1585 
1586 /*****************************************************************************
1587  * IContextMenu interface
1588  */
1589 [
1590  object,
1591  uuid(000214e4-0000-0000-c000-000000000046),
1593  local
1594 ]
1596 {
1597 cpp_quote("#define CMF_NORMAL 0x00000000")
1598 cpp_quote("#define CMF_DEFAULTONLY 0x00000001")
1599 cpp_quote("#define CMF_VERBSONLY 0x00000002")
1600 cpp_quote("#define CMF_EXPLORE 0x00000004")
1601 cpp_quote("#define CMF_NOVERBS 0x00000008")
1602 cpp_quote("#define CMF_CANRENAME 0x00000010")
1603 cpp_quote("#define CMF_NODEFAULT 0x00000020")
1604 cpp_quote("#define CMF_INCLUDESTATIC 0x00000040")
1605 cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100")
1606 cpp_quote("#define CMF_RESERVED 0xffff0000")
1607 
1608 cpp_quote("#define GCS_VERBA 0x00000000")
1609 cpp_quote("#define GCS_HELPTEXTA 0x00000001")
1610 cpp_quote("#define GCS_VALIDATEA 0x00000002")
1611 cpp_quote("#define GCS_VERBW 0x00000004")
1612 cpp_quote("#define GCS_HELPTEXTW 0x00000005")
1613 cpp_quote("#define GCS_VALIDATEW 0x00000006")
1614 cpp_quote("#define GCS_UNICODE 0x00000004")
1615 cpp_quote("#define GCS_VERB WINELIB_NAME_AW(GCS_VERB)")
1616 cpp_quote("#define GCS_HELPTEXT WINELIB_NAME_AW(GCS_HELPTEXT)")
1617 cpp_quote("#define GCS_VALIDATE WINELIB_NAME_AW(GCS_VALIDATE)")
1618 
1619 cpp_quote("#define CMDSTR_NEWFOLDERA \"NewFolder\"")
1620 cpp_quote("#define CMDSTR_VIEWLISTA \"ViewList\"")
1621 cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"")
1622 cpp_quote("#if defined(__GNUC__)")
1623 cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }")
1624 cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }")
1625 cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }")
1626 cpp_quote("#elif defined(_MSC_VER)")
1627 cpp_quote("# define CMDSTR_NEWFOLDERW L\"NewFolder\"")
1628 cpp_quote("# define CMDSTR_VIEWLISTW L\"ViewList\"")
1629 cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"")
1630 cpp_quote("#else")
1631 cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};")
1632 cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};")
1633 cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};")
1634 cpp_quote("#endif")
1635 cpp_quote("#define CMDSTR_NEWFOLDER WINELIB_NAME_AW(CMDSTR_NEWFOLDER)")
1636 cpp_quote("#define CMDSTR_VIEWLIST WINELIB_NAME_AW(CMDSTR_VIEWLIST)")
1637 cpp_quote("#define CMDSTR_VIEWDETAILS WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)")
1638 
1639 cpp_quote("#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY")
1640 cpp_quote("#define CMIC_MASK_ICON SEE_MASK_ICON")
1641 cpp_quote("#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI")
1642 cpp_quote("#define CMIC_MASK_UNICODE SEE_MASK_UNICODE")
1643 cpp_quote("#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE")
1644 cpp_quote("#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME")
1645 cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM")
1646 cpp_quote("#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE")
1647 cpp_quote("#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK")
1648 cpp_quote("#define CMIC_MASK_NOASYNC SEE_MASK_NOASYNC")
1649 cpp_quote("#define CMIC_MASK_SHIFT_DOWN 0x10000000")
1650 cpp_quote("#define CMIC_MASK_PTINVOKE 0x20000000")
1651 cpp_quote("#define CMIC_MASK_CONTROL_DOWN 0x40000000")
1652 cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE")
1653 cpp_quote("#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS")
1654 
1655  typedef IContextMenu *LPCONTEXTMENU;
1656 
1657  typedef struct tagCMINVOKECOMMANDINFO
1658  {
1659  DWORD cbSize;
1660  DWORD fMask;
1661  HWND hwnd;
1662  LPCSTR lpVerb;
1663  LPCSTR lpParameters;
1664  LPCSTR lpDirectory;
1665  INT nShow;
1666  DWORD dwHotKey;
1667  HANDLE hIcon;
1668  } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
1669 
1670  typedef struct tagCMInvokeCommandInfoEx
1671  {
1672  DWORD cbSize;
1673  DWORD fMask;
1674  HWND hwnd;
1675  LPCSTR lpVerb;
1676  LPCSTR lpParameters;
1677  LPCSTR lpDirectory;
1678  INT nShow;
1679  DWORD dwHotKey;
1680  HANDLE hIcon;
1681  LPCSTR lpTitle;
1682  LPCWSTR lpVerbW;
1683  LPCWSTR lpParametersW;
1684  LPCWSTR lpDirectoryW;
1685  LPCWSTR lpTitleW;
1686  POINT ptInvoke;
1687  } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
1688 
1689  HRESULT QueryContextMenu(
1690  [in] HMENU hmenu,
1691  [in] UINT indexMenu,
1692  [in] UINT idCmdFirst,
1693  [in] UINT idCmdLast,
1694  [in] UINT uFlags);
1695 
1696  HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici );
1697 
1698  HRESULT GetCommandString(
1699  [in] UINT_PTR idCmd,
1700  [in] UINT uType,
1701  [out] UINT *pwReserved,
1702  [out, size_is(cchMax)] LPSTR pszName,
1703  [in] UINT cchMax);
1704 }
1705 
1706 
1707 /*****************************************************************************
1708  * IContextMenu2 interface
1709  */
1710 [
1711  object,
1712  uuid(000214f4-0000-0000-c000-000000000046),
1713  pointer_default(unique),
1714  local
1715 ]
1716 interface IContextMenu2 : IContextMenu
1717 {
1718  typedef IContextMenu2 *LPCONTEXTMENU2;
1719 
1720  HRESULT HandleMenuMsg(
1721  [in] UINT uMsg,
1722  [in] WPARAM wParam,
1723  [in] LPARAM lParam);
1724 }
1725 
1726 
1727 /*****************************************************************************
1728  * IContextMenu3 interface
1729  */
1730 [
1731  object,
1732  uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719),
1733  pointer_default(unique),
1734  local
1735 ]
1736 interface IContextMenu3 : IContextMenu2
1737 {
1738  typedef IContextMenu3 *LPCONTEXTMENU3;
1739 
1740  HRESULT HandleMenuMsg2(
1741  [in] UINT uMsg,
1742  [in] WPARAM wParam,
1743  [in] LPARAM lParam,
1744  [out] LRESULT *plResult);
1745 }
1746 
1747 /*****************************************************************************
1748  * IContextMenuCB interface
1749  */
1750 
1751 [
1752  object,
1753  uuid(3409e930-5a39-11d1-83fa-00a0c90dc849),
1754  pointer_default(unique),
1755  local
1756 ]
1757 interface IContextMenuCB : IUnknown
1758 {
1759  HRESULT CallBack(
1760  [in] IShellFolder *psf,
1761  [in] HWND hwndOwner,
1762  [in] IDataObject *pdtobj,
1763  [in] UINT uMsg,
1764  [in] WPARAM wParam,
1765  [in] LPARAM lParam);
1766 }
1767 
1768 /*****************************************************************************
1769  * IShellExecuteHookA interface
1770  */
1771 [
1772  object,
1773  uuid(000214f5-0000-0000-c000-000000000046),
1774  pointer_default(unique),
1775  local
1776 ]
1777 interface IShellExecuteHookA : IUnknown
1778 {
1779  cpp_quote("struct _SHELLEXECUTEINFOA;")
1780  HRESULT Execute(
1781  [in, out] struct _SHELLEXECUTEINFOA* pei);
1782 }
1783 
1784 
1785 /*****************************************************************************
1786  * IShellExecuteHookW interface
1787  */
1788 [
1789  object,
1790  uuid(000214fb-0000-0000-c000-000000000046),
1791  pointer_default(unique),
1792  local
1793 ]
1794 interface IShellExecuteHookW : IUnknown
1795 {
1796  cpp_quote("struct _SHELLEXECUTEINFOW;")
1797  HRESULT Execute(
1798  [in, out] struct _SHELLEXECUTEINFOW* pei);
1799 }
1800 
1801 /*****************************************************************************
1802  * IShellLinkDataList interface
1803  */
1804 [
1805  object,
1806  uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1),
1807  pointer_default(unique)
1808 ]
1809 interface IShellLinkDataList : IUnknown
1810 {
1811  [local] HRESULT AddDataBlock(
1812  [in] void *pDataBlock);
1813  [local] HRESULT CopyDataBlock(
1814  [in] DWORD dwSig,
1815  [out] void **ppDataBlock);
1816  HRESULT RemoveDataBlock(
1817  [in] DWORD dwSig);
1818  HRESULT GetFlags(
1819  [out] DWORD *pdwFlags);
1820  HRESULT SetFlags(
1821  [in] DWORD dwFlags);
1822 }
1823 
1824 
1825 /*****************************************************************************
1826  * IResolveShellLink interface
1827  */
1828 [
1829  object,
1830  uuid(5cd52983-9449-11d2-963a-00c04f79adf0),
1831  pointer_default(unique)
1832 ]
1833 interface IResolveShellLink : IUnknown
1834 {
1835  HRESULT ResolveShellLink(
1836  [in] IUnknown *punk,
1837  [in] HWND hwnd,
1838  [in] DWORD fFlags);
1839 }
1840 
1841 
1842 /*****************************************************************************
1843  * IURLSearchHook interface
1844  */
1845 [
1846  object,
1847  uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497),
1848  pointer_default(unique),
1849  local
1850 ]
1851 interface IURLSearchHook : IUnknown
1852 {
1853  HRESULT Translate(
1854  [in, out] LPWSTR lpwszSearchURL,
1855  [in] DWORD cchBufferSize);
1856 }
1857 
1858 
1859 /*****************************************************************************
1860  * ISearchContext interface
1861  */
1862 [
1863  object,
1864  uuid(09f656a2-41af-480c-88f7-16cc0d164615),
1865  pointer_default(unique),
1866  local
1867 ]
1868 interface ISearchContext : IUnknown
1869 {
1870  HRESULT GetSearchUrl(
1871  [in] BSTR *pbstrSearchUrl);
1872  HRESULT GetSearchText(
1873  [in] BSTR *pbstrSearchText);
1874  HRESULT GetSearchStyle(
1875  [in] BSTR *pdwSearchStyle);
1876 }
1877 
1878 
1879 /*****************************************************************************
1880  * IURLSearchHook2 interface
1881  */
1882 [
1883  object,
1884  uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0),
1885  pointer_default(unique),
1886  local
1887 ]
1888 interface IURLSearchHook2 : IURLSearchHook
1889 {
1890  HRESULT TranslateWithSearchContext(
1891  [in, out] LPWSTR lpwszSearchURL,
1892  [in] DWORD cchBufferSize,
1893  [in] ISearchContext *pSearchContext);
1894 }
1895 
1896 
1897 cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)")
1898 
1899 /*****************************************************************************
1900  * INewShortcutHookA interface
1901  */
1902 [
1903  object,
1904  uuid(000214e1-0000-0000-c000-000000000046),
1905  pointer_default(unique),
1906  local
1907 ]
1908 interface INewShortcutHookA : IUnknown
1909 {
1910  HRESULT SetReferent(
1911  [in] LPCSTR pcszReferent,
1912  [in] HWND hwnd);
1913  HRESULT GetReferent(
1914  [out] LPSTR pcszReferent,
1915  [in] int cchReferent);
1916  HRESULT SetFolder(
1917  [in] LPCSTR pcszReferent);
1918  HRESULT GetFolder(
1919  [out] LPSTR pcszReferent,
1920  [in] int cchFolder);
1921  HRESULT GetName(
1922  [out] LPSTR pszName,
1923  [in] int cchName);
1924  HRESULT GetExtension(
1925  [out] LPSTR pszExtension,
1926  [in] int cchExtension);
1927 }
1928 
1929 
1930 /*****************************************************************************
1931  * INewShortcutHookW interface
1932  */
1933 [
1934  object,
1935  uuid(000214f7-0000-0000-c000-000000000046),
1936  pointer_default(unique),
1937  local
1938 ]
1939 interface INewShortcutHookW : IUnknown
1940 {
1941  HRESULT SetReferent(
1942  [in] LPCWSTR pcszReferent,
1943  [in] HWND hwnd);
1944  HRESULT GetReferent(
1945  [out] LPWSTR pcszReferent,
1946  [in] int cchReferent);
1947  HRESULT SetFolder(
1948  [in] LPCWSTR pcszReferent);
1949  HRESULT GetFolder(
1950  [out] LPWSTR pcszReferent,
1951  [in] int cchFolder);
1952  HRESULT GetName(
1953  [out] LPWSTR pszName,
1954  [in] int cchName);
1955  HRESULT GetExtension(
1956  [out] LPWSTR pszExtension,
1957  [in] int cchExtension);
1958 }
1959 
1960 /*****************************************************************************
1961  * IRunnableTask interface
1962  */
1963 [
1964  object,
1965  uuid(85788d00-6807-11d0-b810-00c04fd706ec),
1966  pointer_default(unique),
1967  local
1968 ]
1969 interface IRunnableTask : IUnknown
1970 {
1971  HRESULT Run();
1972  HRESULT Kill([in] BOOL fWait);
1973  HRESULT Suspend();
1974  HRESULT Resume();
1975  ULONG IsRunning();
1976 }
1977 
1978 /*****************************************************************************
1979  * IShellChangeNotify interface
1980  */
1981 [
1982  object,
1983  uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2),
1984  pointer_default(unique),
1985  local
1986 ]
1987 interface IShellChangeNotify : IUnknown
1988 {
1989  HRESULT OnChange(
1990  [in] LONG lEvent,
1991  [in] LPCITEMIDLIST pidl1,
1992  [in] LPCITEMIDLIST pidl2);
1993 }
1994 
1995 cpp_quote("#define STR_FILE_SYS_BIND_DATA L\"File System Bind Data\"")
1996 
1997 /*****************************************************************************
1998  * IFileSystemBindData interface
1999  */
2000 [
2001  object,
2002  uuid(01e18d10-4d8b-11d2-855d-006008059367),
2004  local
2005 ]
2007 {
2008  HRESULT SetFindData(
2009  [in] const WIN32_FIND_DATAW *pfd);
2010  HRESULT GetFindData(
2011  [out] WIN32_FIND_DATAW *pfd);
2012 }
2013 
2014 /*****************************************************************************
2015  * ITaskbarList interface
2016  */
2017 [
2018  object,
2019  uuid(56FDF342-FD6D-11d0-958A-006097C9A090),
2021 ]
2023 {
2024  HRESULT HrInit();
2025 
2026  HRESULT AddTab(
2027  [in] HWND hwnd);
2028 
2029  HRESULT DeleteTab(
2030  [in] HWND hwnd);
2031 
2032  HRESULT ActivateTab(
2033  [in] HWND hwnd);
2034 
2035  HRESULT SetActiveAlt(
2036  [in] HWND hwnd);
2037 }
2038 
2039 /*****************************************************************************
2040  * ITaskbarList2 interface
2041  */
2042 [
2043  object,
2044  uuid(602D4995-B13A-429B-A66E-1935E44F4317),
2046 ]
2048 {
2049  HRESULT MarkFullscreenWindow(
2050  [in] HWND hwnd,
2051  [in] BOOL fullscreen);
2052 }
2053 
2054 cpp_quote("#ifdef MIDL_PASS")
2056 cpp_quote("#endif")
2057 
2058 typedef [v1_enum] enum THUMBBUTTONFLAGS {
2059  THBF_ENABLED = 0x0000,
2060  THBF_DISABLED = 0x0001,
2063  THBF_HIDDEN = 0x0008,
2066 
2067 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)")
2068 
2069 typedef [v1_enum] enum THUMBBUTTONMASK {
2070  THB_BITMAP = 0x0001,
2071  THB_ICON = 0x0002,
2072  THB_TOOLTIP = 0x0004,
2073  THB_FLAGS = 0x0008
2075 
2076 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)")
2077 
2078 cpp_quote("#include <pshpack8.h>")
2079 typedef struct THUMBBUTTON {
2080  THUMBBUTTONMASK dwMask;
2081  UINT iId;
2082  UINT iBitmap;
2083  HICON hIcon;
2084  WCHAR szTip[260];
2087 cpp_quote("#include <poppack.h>")
2088 
2089 [
2090  uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf),
2091  object
2092 ]
2094 {
2095  typedef [v1_enum] enum TBPFLAG {
2096  TBPF_NOPROGRESS = 0x0000,
2097  TBPF_INDETERMINATE = 0x0001,
2098  TBPF_NORMAL = 0x0002,
2099  TBPF_ERROR = 0x0004,
2100  TBPF_PAUSED = 0x0008
2101  } TBPFLAG;
2102 
2103  cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)")
2104 
2105  HRESULT SetProgressValue(
2106  [in] HWND hwnd,
2107  [in] ULONGLONG ullCompleted,
2108  [in] ULONGLONG ullTotal);
2109 
2110  HRESULT SetProgressState(
2111  [in] HWND hwnd,
2112  [in] TBPFLAG tbpFlags);
2113 
2114  HRESULT RegisterTab(
2115  [in] HWND hwndTab,
2116  [in] HWND hwndMDI);
2117 
2118  HRESULT UnregisterTab([in] HWND hwndTab);
2119 
2120  HRESULT SetTabOrder(
2121  [in] HWND hwndTab,
2122  [in] HWND hwndInsertBefore);
2123 
2124  HRESULT SetTabActive(
2125  [in] HWND hwndTab,
2126  [in] HWND hwndMDI,
2127  [in] DWORD dwReserved);
2128 
2129  HRESULT ThumbBarAddButtons(
2130  [in] HWND hwnd,
2131  [in] UINT cButtons,
2132  [in, size_is(cButtons)] LPTHUMBBUTTON pButton);
2133 
2134  HRESULT ThumbBarUpdateButtons(
2135  [in] HWND hwnd,
2136  [in] UINT cButtons,
2137  [in, size_is(cButtons)] LPTHUMBBUTTON pButton);
2138 
2139  HRESULT ThumbBarSetImageList(
2140  [in] HWND hwnd,
2141  [in] HIMAGELIST himl);
2142 
2143  HRESULT SetOverlayIcon(
2144  [in] HWND hwnd,
2145  [in] HICON hIcon,
2146  [in, unique, string] LPCWSTR pszDescription);
2147 
2148  HRESULT SetThumbnailTooltip(
2149  [in] HWND hwnd,
2150  [in, unique, string] LPCWSTR pszTip);
2151 
2152  HRESULT SetThumbnailClip(
2153  [in] HWND hwnd,
2154  [in] RECT *prcClip);
2155 }
2156 
2157 [
2158  uuid(c43dc798-95d1-4bea-9030-bb99e2983a1a),
2159  object
2160 ]
2162 {
2163  typedef [v1_enum] enum STPFLAG {
2164  STPF_NONE = 0x0000,
2165  STPF_USEAPPTHUMBNAILALWAYS = 0x0001,
2166  STPF_USEAPPTHUMBNAILWHENACTIVE = 0x0002,
2167  STPF_USEAPPPEEKALWAYS = 0x0004,
2168  STPF_USEAPPPEEKWHENACTIVE = 0x0008
2169  } STPFLAG;
2170 
2171  cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)")
2172 
2173  HRESULT SetTabProperties(
2174  [in] HWND hwndTab,
2175  [in] STPFLAG stpFlags);
2176 }
2177 
2178 /*****************************************************************************
2179  * IDefaultExtractIconInit interface
2180  */
2181 
2182 [
2183  object,
2184  uuid(800AB0B8-F5FA-4e72-8FF3-B1A243B87BD9), /* FIXME: wrong value! */
2186  local
2187 ]
2189 {
2190  HRESULT SetDefaultIcon(
2191  [in] LPCWSTR pszFile,
2192  [in] int iIcon);
2193  HRESULT SetFlags(
2194  [in] UINT uFlags);
2195  HRESULT SetKey(
2196  [in] HKEY hkey);
2197  HRESULT SetNormalIcon(
2198  [in] LPCWSTR pszFile,
2199  [in] int iIcon);
2200  HRESULT SetOpenIcon(
2201  [in] LPCWSTR pszFile,
2202  [in] int iIcon);
2203  HRESULT SetShortcutIcon(
2204  [in] LPCWSTR pszFile,
2205  [in] int iIcon);
2206 }
2207 
2208 
2209 #ifdef __REACTOS__
2210 /*****************************************************************************
2211  * IExplorerCommand interface (Vista+)
2212  */
2213 
2214 interface IEnumExplorerCommand;
2215 
2216 [
2217  uuid(A08CE4D0-FA25-44AB-B57C-C7B1C323E0B9),
2219 ]
2220 interface IExplorerCommand : IUnknown
2221 {
2222  cpp_quote("// GetIcon(ppszIcon) Receives resource string that identifies icon source")
2223  typedef [v1_enum] enum _EXPCMDSTATE
2224  {
2225  ECS_ENABLED = 0x000,
2226  ECS_DISABLED = 0x001,
2227  ECS_HIDDEN = 0x002,
2228  ECS_CHECKBOX = 0x004,
2229  ECS_CHECKED = 0x008,
2230  ECS_RADIOCHECK = 0x010, // Windows 7
2231  } EXPCMDSTATE;
2232 
2233  typedef [v1_enum] enum _EXPCMDFLAGS
2234  {
2235  ECF_DEFAULT = 0x000,
2236  ECF_HASSUBCOMMANDS = 0x001,
2237  ECF_HASSPLITBUTTON = 0x002,
2238  ECF_HIDELABEL = 0x004,
2239  ECF_ISSEPARATOR = 0x008,
2240  ECF_HASLUASHIELD = 0x010,
2241  ECF_SEPARATORBEFORE = 0x020, // Windows 7
2242  ECF_SEPARATORAFTER = 0x040, // Windows 7
2243  ECF_ISDROPDOWN = 0x080, // Windows 7
2244  ECF_TOGGLEABLE = 0x100, // Windows 8
2245  ECF_AUTOMENUICONS = 0x200, // Windows 8
2246  } EXPCMDFLAGS;
2247 
2248  HRESULT GetTitle(
2249  [in, unique] IShellItemArray *psiItemArray,
2250  [out, string] LPWSTR *ppszName);
2251  HRESULT GetIcon(
2252  [in, unique] IShellItemArray *psiItemArray,
2253  [out, string] LPWSTR *ppszIcon);
2254  HRESULT GetToolTip(
2255  [in, unique] IShellItemArray *psiItemArray,
2256  [out, string] LPWSTR *ppszInfotip);
2257  HRESULT GetCanonicalName(
2258  [out] GUID* pguidCommandName);
2259  HRESULT GetState(
2260  [in] IShellItemArray *psiItemArray,
2261  [in] BOOL fOkToBeSlow,
2262  [out] EXPCMDSTATE *pCmdState);
2263  HRESULT Invoke(
2264  [in] IShellItemArray *psiItemArray,
2265  [in, unique] IBindCtx *pbc);
2266  HRESULT GetFlags(
2267  [out] EXPCMDFLAGS *pFlags);
2268  HRESULT EnumSubCommands(
2269  [out] IEnumExplorerCommand **ppEnum);
2270 };
2271 
2272 
2273 /*****************************************************************************
2274  * IExplorerCommandState interface (Vista+)
2275  */
2276 [
2277  object,
2278  uuid(BDDACB60-7657-47AE-8445-D23E1ACF82AE),
2280 ]
2281 interface IExplorerCommandState : IUnknown
2282 {
2283  HRESULT GetState(
2284  [in] IShellItemArray *psiItemArray,
2285  [in] BOOL fOkToBeSlow,
2286  [out] EXPCMDSTATE *pCmdState);
2287 }
2288 
2289 
2290 /*****************************************************************************
2291  * IInitializeCommand interface (Vista+)
2292  */
2293 [
2294  object,
2295  uuid(85075ACF-231F-40EA-9610-D26B7B58F638),
2297 ]
2298 interface IInitializeCommand : IUnknown
2299 {
2301  [in, string] LPCWSTR pszCommandName,
2302  [in] IPropertyBag *ppb);
2303 }
2304 
2305 
2306 /*****************************************************************************
2307  * IEnumExplorerCommand interface (Vista+)
2308  */
2309 [
2310  object,
2311  uuid(A88826F8-186F-4987-AADE-EA0CEF8FBFE8),
2313 ]
2314 interface IEnumExplorerCommand : IUnknown
2315 {
2316  [local]
2317  HRESULT Next(
2318  [in] ULONG celt,
2319  [out] IExplorerCommand** pUICommand,
2320  [out, optional] ULONG *pceltFetched);
2321  [call_as(Next)]
2322  HRESULT RemoteNext(
2323  [in] ULONG celt,
2324  [out] IExplorerCommand** pUICommand,
2325  [out, optional] ULONG *pceltFetched);
2326  HRESULT Skip(
2327  [in] ULONG celt);
2328  HRESULT Reset();
2329  HRESULT Clone(
2330  [out] IEnumExplorerCommand **ppenum);
2331 };
2332 
2333 
2334 /*****************************************************************************
2335  * IExplorerCommandProvider interface (Vista+)
2336  */
2337 [
2338  uuid(64961751-0835-43C0-8FFE-D57686530E64),
2340 ]
2341 interface IExplorerCommandProvider : IUnknown
2342 {
2343  cpp_quote("// GetCommands usually creates an IEnumExplorerCommand")
2344  cpp_quote("// GetCommand usually creates an IExplorerCommand")
2345 
2346  HRESULT GetCommands(
2347  [in] IUnknown *punkSite,
2348  [in] REFIID riid,
2349  [out, iid_is(riid)] void **ppv);
2350  HRESULT GetCommand(
2351  [in] REFGUID rguidCommandId,
2352  [in] REFIID riid,
2353  [out, iid_is(riid)] void **ppv);
2354 };
2355 
2356 #endif // __REACTOS__
2357 
2358 /*****************************************************************************
2359  * IDeskBand interface
2360  */
2361 cpp_quote("#define DBIM_MINSIZE 0x0001")
2362 cpp_quote("#define DBIM_MAXSIZE 0x0002")
2363 cpp_quote("#define DBIM_INTEGRAL 0x0004")
2364 cpp_quote("#define DBIM_ACTUAL 0x0008")
2365 cpp_quote("#define DBIM_TITLE 0x0010")
2366 cpp_quote("#define DBIM_MODEFLAGS 0x0020")
2367 cpp_quote("#define DBIM_BKCOLOR 0x0040")
2368 
2369 cpp_quote("#include <pshpack8.h>")
2370 
2371 typedef struct tagDESKBANDINFO
2372 {
2378  WCHAR wszTitle[256];
2381 } DESKBANDINFO;
2382 
2383 cpp_quote("#include <poppack.h>")
2384 
2385 cpp_quote("#define DBIMF_NORMAL 0x0000")
2386 cpp_quote("#define DBIMF_FIXED 0x0001")
2387 cpp_quote("#define DBIMF_FIXEDBMP 0x0004 // a fixed background bitmap (if supported)")
2388 cpp_quote("#define DBIMF_VARIABLEHEIGHT 0x0008")
2389 cpp_quote("#define DBIMF_UNDELETEABLE 0x0010")
2390 cpp_quote("#define DBIMF_DEBOSSED 0x0020")
2391 cpp_quote("#define DBIMF_BKCOLOR 0x0040")
2392 cpp_quote("#define DBIMF_USECHEVRON 0x0080")
2393 cpp_quote("#define DBIMF_BREAK 0x0100")
2394 cpp_quote("#define DBIMF_ADDTOFRONT 0x0200")
2395 cpp_quote("#define DBIMF_TOPALIGN 0x0400")
2396 cpp_quote("#if (NTDDI_VERSION >= NTDDI_LONGHORN)")
2397 cpp_quote("#define DBIMF_NOGRIPPER 0x0800")
2398 cpp_quote("#define DBIMF_ALWAYSGRIPPER 0x1000")
2399 cpp_quote("#define DBIMF_NOMARGINS 0x2000")
2400 cpp_quote("#endif // NTDDI_LONGHORN")
2401 
2402 cpp_quote("#define DBIF_VIEWMODE_NORMAL 0x0000")
2403 cpp_quote("#define DBIF_VIEWMODE_VERTICAL 0x0001")
2404 cpp_quote("#define DBIF_VIEWMODE_FLOATING 0x0002")
2405 cpp_quote("#define DBIF_VIEWMODE_TRANSPARENT 0x0004")
2406 
2416 };
2417 
2418 cpp_quote("#define DBPC_SELECTFIRST (DWORD)-1")
2419 cpp_quote("#define DBPC_SELECTLAST (DWORD)-2")
2420 
2421 cpp_quote("#define CGID_DeskBand IID_IDeskBand")
2422 
2423 [
2424  uuid(EB0FE172-1A3A-11D0-89B3-00A0C90A90AC),
2425  object,
2426 ]
2428 {
2429  HRESULT GetBandInfo(
2430  [in] DWORD dwBandID,
2431  [in] DWORD dwViewMode,
2432  [in, out] DESKBANDINFO* pdbi);
2433 }
2434 
2435 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)")
2436 
2437 [
2438  uuid(EB0FE173-1A3A-11D0-89B3-00A0C90A90AC),
2439  object,
2441  local
2442 ]
2444 {
2445  HRESULT SetClient([in] IUnknown* punkClient);
2446 
2447  HRESULT GetClient([out] IUnknown** ppunkClient);
2448 
2449  HRESULT OnPosRectChangeDB([in] RECT *prc);
2450 }
2451 
2452 
2453 /*****************************************************************************
2454  * IMenuPopup interface
2455  */
2456 [
2457  uuid(D1E7AFEB-6A2E-11d0-8C78-00C04FD918B4),
2458  object,
2460  local
2461 ]
2463 {
2465  {
2466  MPOS_EXECUTE = 0,
2471  MPOS_CHILDTRACKING
2472  };
2473 
2475  {
2476  MPPF_SETFOCUS = 0x00000001,
2477  MPPF_INITIALSELECT = 0x00000002,
2478  MPPF_NOANIMATE = 0x00000004,
2479  MPPF_KEYBOARD = 0x00000010,
2480  MPPF_REPOSITION = 0x00000020,
2481  MPPF_FORCEZORDER = 0x00000040,
2482  MPPF_FINALSELECT = 0x00000080,
2483  MPPF_TOP = 0x20000000,
2484  MPPF_LEFT = 0x40000000,
2485  MPPF_RIGHT = 0x60000000,
2486  MPPF_BOTTOM = 0x80000000,
2487  MPPF_POS_MASK = 0xE0000000,
2488  MPPF_ALIGN_LEFT = 0x02000000,
2489  MPPF_ALIGN_RIGHT = 0x04000000
2490  };
2491  typedef int MP_POPUPFLAGS;
2492 
2493  HRESULT Popup(
2494  [in] POINTL *ppt,
2495  [in] RECTL *prcExclude,
2497 
2498  HRESULT OnSelect([in] DWORD dwSelectType);
2499 
2500  HRESULT SetSubMenu(
2501  [in] IMenuPopup* pmp,
2502  [in] BOOL fSet);
2503 }
2504 
2505 cpp_quote("#endif /* _WIN32_IE_IE60 */")
2506 
2507 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE40)")
2508 
2509 /*****************************************************************************
2510  * IBandSite interface
2511  */
2512 cpp_quote("#include <pshpack8.h>")
2513 
2515 {
2519 } BANDSITEINFO;
2520 
2521 cpp_quote("#include <poppack.h>")
2522 
2523 
2527 };
2528 
2529 cpp_quote("#define BSIM_STATE 0x00000001")
2530 cpp_quote("#define BSIM_STYLE 0x00000002")
2531 
2532 cpp_quote("#define BSSF_VISIBLE 0x00000001")
2533 cpp_quote("#define BSSF_NOTITLE 0x00000002")
2534 cpp_quote("#define BSSF_UNDELETEABLE 0x00001000")
2535 
2536 cpp_quote("#define BSIS_AUTOGRIPPER 0x00000000")
2537 cpp_quote("#define BSIS_NOGRIPPER 0x00000001")
2538 cpp_quote("#define BSIS_ALWAYSGRIPPER 0x00000002")
2539 cpp_quote("#define BSIS_LEFTALIGN 0x00000004")
2540 cpp_quote("#define BSIS_SINGLECLICK 0x00000008")
2541 cpp_quote("#define BSIS_NOCONTEXTMENU 0x00000010")
2542 cpp_quote("#define BSIS_NODROPTARGET 0x00000020")
2543 cpp_quote("#define BSIS_NOCAPTION 0x00000040")
2544 cpp_quote("#define BSIS_PREFERNOLINEBREAK 0x00000080")
2545 cpp_quote("#define BSIS_LOCKED 0x00000100")
2546 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
2547 cpp_quote("#define BSIS_PRESERVEORDERDURINGLAYOUT 0x00000200")
2548 cpp_quote("#endif /* _WIN32_IE_IE70 */")
2549 
2550 cpp_quote("#define SID_SBandSite IID_IBandSite")
2551 cpp_quote("#define CGID_BandSite IID_IBandSite")
2552 
2553 [
2554  object,
2555  uuid(4CF504B0-DE96-11D0-8B3F-00A0C911E8E5)
2556 ]
2557 interface IBandSite : IUnknown
2558 {
2559  HRESULT AddBand([in] IUnknown* punk);
2560 
2561  HRESULT EnumBands(
2562  [in] UINT uBand,
2563  [out] DWORD* pdwBandID);
2564 
2565  HRESULT QueryBand(
2566  [in] DWORD dwBandID,
2567  [out] IDeskBand** ppstb,
2568  [out] DWORD* pdwState,
2569  [out, string, size_is(cchName)] LPWSTR pszName,
2570  [in] int cchName);
2571 
2572  HRESULT SetBandState(
2573  [in] DWORD dwBandID,
2574  [in] DWORD dwMask,
2575  [in] DWORD dwState);
2576 
2577  HRESULT RemoveBand([in] DWORD dwBandID);
2578 
2579  HRESULT GetBandObject(
2580  [in] DWORD dwBandID,
2581  [in] REFIID riid,
2582  [out, iid_is(riid)] void **ppv);
2583 
2584  HRESULT SetBandSiteInfo([in] const BANDSITEINFO *pbsinfo);
2585 
2586  HRESULT GetBandSiteInfo([in, out] BANDSITEINFO *pbsinfo);
2587 }
2588 
2589 cpp_quote("#endif /* _WIN32_IE_IE40 */")
2590 
2591 /*****************************************************************************
2592  * IMenuBand interface
2593  */
2594 [
2595  uuid(568804CD-CBD7-11d0-9816-00C04FD91972),
2596  object,
2598  local
2599 ]
2600 interface IMenuBand : IUnknown
2601 {
2603  MBHANDCID_PIDLSELECT = 0,
2604  };
2605 
2606  HRESULT IsMenuMessage([in] MSG* pmsg);
2607 
2608  HRESULT TranslateMenuMessage(
2609  [in, out] MSG* pmsg,
2610  [out] LRESULT* plRet);
2611 }
2612 
2613 /*****************************************************************************
2614  * IShellMenuCallback interface
2615  */
2616 cpp_quote("#include <pshpack8.h>")
2617 
2619 {
2631  void *pvUserData;
2632 } SMDATA, *LPSMDATA;
2633 
2634 cpp_quote("#define SMDM_SHELLFOLDER 0x00000001")
2635 cpp_quote("#define SMDM_HMENU 0x00000002")
2636 cpp_quote("#define SMDM_TOOLBAR 0x00000004")
2637 
2639 {
2643  int iIcon;
2644 } SMINFO, *PSMINFO;
2645 
2647 {
2652 
2653 cpp_quote("#include <poppack.h>")
2654 
2655 enum
2656 {
2657  SMIM_TYPE = 0x00000001,
2658  SMIM_FLAGS = 0x00000002,
2659  SMIM_ICON = 0x00000004
2660 };
2661 
2662 enum
2663 {
2664  SMIT_SEPARATOR = 0x00000001,
2665  SMIT_STRING = 0x00000002
2666 };
2667 
2668 enum
2669 {
2670  SMIF_ICON = 0x00000001,
2671  SMIF_ACCELERATOR = 0x00000002,
2672  SMIF_DROPTARGET = 0x00000004,
2673  SMIF_SUBMENU = 0x00000008,
2674  SMIF_CHECKED = 0x00000020,
2675  SMIF_DROPCASCADE = 0x00000040,
2676  SMIF_HIDDEN = 0x00000080,
2677  SMIF_DISABLED = 0x00000100,
2678  SMIF_TRACKPOPUP = 0x00000200,
2679  SMIF_DEMOTED = 0x00000400,
2680  SMIF_ALTSTATE = 0x00000800,
2681  SMIF_DRAGNDROP = 0x00001000,
2682  SMIF_NEW = 0x00002000,
2683 };
2684 
2685 
2686 cpp_quote("#define SMC_INITMENU 0x00000001")
2687 cpp_quote("#define SMC_CREATE 0x00000002")
2688 cpp_quote("#define SMC_EXITMENU 0x00000003")
2689 cpp_quote("#define SMC_GETINFO 0x00000005")
2690 cpp_quote("#define SMC_GETSFINFO 0x00000006")
2691 cpp_quote("#define SMC_GETOBJECT 0x00000007")
2692 cpp_quote("#define SMC_GETSFOBJECT 0x00000008")
2693 cpp_quote("#define SMC_SFEXEC 0x00000009")
2694 cpp_quote("#define SMC_SFSELECTITEM 0x0000000A")
2695 cpp_quote("#define SMC_REFRESH 0x00000010")
2696 cpp_quote("#define SMC_DEMOTE 0x00000011")
2697 cpp_quote("#define SMC_PROMOTE 0x00000012")
2698 cpp_quote("#define SMC_DEFAULTICON 0x00000016")
2699 cpp_quote("#define SMC_NEWITEM 0x00000017")
2700 cpp_quote("#define SMC_CHEVRONEXPAND 0x00000019")
2701 cpp_quote("#define SMC_DISPLAYCHEVRONTIP 0x0000002A")
2702 cpp_quote("#define SMC_SETSFOBJECT 0x0000002D")
2703 cpp_quote("#define SMC_SHCHANGENOTIFY 0x0000002E")
2704 cpp_quote("#define SMC_CHEVRONGETTIP 0x0000002F")
2705 cpp_quote("#define SMC_SFDDRESTRICTED 0x00000030")
2706 
2707 [
2708  uuid(4CA300A1-9B8D-11d1-8B22-00C04FD918D0),
2709  object,
2711  local
2712 ]
2714 {
2715  HRESULT CallbackSM(
2716  [in, out] LPSMDATA psmd,
2717  [in] UINT uMsg,
2718  [in] WPARAM wParam,
2719  [in] LPARAM lParam);
2720 }
2721 
2722 
2723 /*****************************************************************************
2724  * IShellMenu interface
2725  */
2726 
2727 cpp_quote("#define SMINIT_DEFAULT 0x00000000")
2728 cpp_quote("#define SMINIT_RESTRICT_DRAGDROP 0x00000002")
2729 cpp_quote("#define SMINIT_TOPLEVEL 0x00000004")
2730 cpp_quote("#define SMINIT_CACHED 0x00000010")
2731 cpp_quote("#define SMINIT_VERTICAL 0x10000000")
2732 cpp_quote("#define SMINIT_HORIZONTAL 0x20000000")
2733 cpp_quote("")
2734 cpp_quote("#define ANCESTORDEFAULT (UINT)-1")
2735 cpp_quote("")
2736 cpp_quote("#define SMSET_TOP 0x10000000")
2737 cpp_quote("#define SMSET_BOTTOM 0x20000000")
2738 cpp_quote("#define SMSET_DONTOWN 0x00000001")
2739 cpp_quote("")
2740 cpp_quote("#define SMINV_REFRESH 0x00000001")
2741 cpp_quote("#define SMINV_ID 0x00000008")
2742 
2743 [
2744  uuid(EE1F7637-E138-11d1-8379-00C04FD918D0),
2745  object,
2747  local
2748 ]
2750 {
2752  [in] IShellMenuCallback *psmc,
2753  [in] UINT uId,
2754  [in] UINT uIdAncestor,
2755  [in] DWORD dwFlags);
2756 
2758  [out] IShellMenuCallback **ppsmc,
2759  [out] UINT *puId,
2760  [out] UINT *puIdAncestor,
2761  [out] DWORD *pdwFlags);
2762 
2763  HRESULT SetShellFolder(
2764  [in] IShellFolder *psf,
2765  [in] LPCITEMIDLIST pidlFolder,
2766  [in] HKEY hKey,
2767  [in] DWORD dwFlags);
2768 
2769  HRESULT GetShellFolder(
2770  [out] DWORD *pdwFlags,
2771  [out] LPITEMIDLIST *ppidl,
2772  [in] REFIID riid,
2773  [out] void **ppv);
2774 
2775  HRESULT SetMenu(
2776  [in] HMENU hmenu,
2777  [in] HWND hwnd,
2778  [in] DWORD dwFlags);
2779 
2780  HRESULT GetMenu(
2781  [out] HMENU *phmenu,
2782  [out] HWND *phwnd,
2783  [out] DWORD *pdwFlags);
2784 
2785  HRESULT InvalidateItem(
2786  [in] LPSMDATA psmd,
2787  [in] DWORD dwFlags);
2788 
2789  HRESULT GetState(
2790  [out] LPSMDATA psmd);
2791 
2792  HRESULT SetMenuToolbar(
2793  [in] IUnknown *punk,
2794  [in] DWORD dwFlags);
2795 }
2796 
2797 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)")
2798 
2799 /*****************************************************************************
2800  * ITrackShellMenu interface
2801  */
2802 [
2803  uuid(8278F932-2A3E-11d2-838F-00C04FD918D0),
2804  object,
2806  local
2807 ]
2809 {
2810  HRESULT SetObscured(
2811  [in] HWND hwndTB,
2812  [in] IUnknown *punkBand,
2813  DWORD dwSMSetFlags);
2814 
2815  HRESULT Popup(
2816  [in] HWND hwnd,
2817  [in] POINTL *ppt,
2818  [in] RECTL *prcExclude,
2819  MP_POPUPFLAGS dwFlags);
2820 };
2821 
2822 cpp_quote("#endif /* _WIN32_IE_IE60 */")
2823 
2824 /*****************************************************************************
2825  * IAutoCompleteDropDown interface
2826  */
2827 [
2828  object,
2829  uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB),
2831 ]
2833 {
2834 cpp_quote("#define ACDD_VISIBLE 0x0001")
2835 
2836  HRESULT GetDropDownStatus(
2837  [out] DWORD *pdwFlags,
2838  [out, string] LPWSTR *ppwszString);
2839 
2840  HRESULT ResetEnumerator();
2841 }
2842 
2843 /*****************************************************************************
2844  * IProfferService interface
2845  */
2846 [
2847  object,
2848  uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0),
2850 ]
2852 {
2853  HRESULT ProfferService(
2854  [in] REFGUID service,
2855  [in] IServiceProvider *pService,
2856  [out] DWORD *pCookie);
2857 
2858  HRESULT RevokeService([in] DWORD cookie);
2859 }
2860 
2861 /*****************************************************************************
2862  * IExplorerBrowserEvents interface
2863  */
2864 [
2865  object,
2866  uuid(361BBDC7-E6EE-4E13-BE58-58E2240C810F)
2867 ]
2868 interface IExplorerBrowserEvents : IUnknown
2869 {
2870  HRESULT OnNavigationPending(
2871  [in] PCIDLIST_ABSOLUTE pidlFolder);
2872 
2873  HRESULT OnViewCreated(
2874  [in] IShellView *psv);
2875 
2876  HRESULT OnNavigationComplete(
2877  [in] PCIDLIST_ABSOLUTE pidlFolder);
2878 
2879  HRESULT OnNavigationFailed(
2880  [in] PCIDLIST_ABSOLUTE pidlFolder);
2881 }
2882 
2883 typedef GUID EXPLORERPANE;
2884 typedef EXPLORERPANE *REFEXPLORERPANE;
2885 
2886 cpp_quote("#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility")
2887 
2888 /*****************************************************************************
2889  * IExplorerPaneVisibility interface
2890  */
2891 [
2892  object,
2893  uuid(E07010EC-BC17-44C0-97B0-46C7C95B9EDC)
2894 ]
2895 interface IExplorerPaneVisibility : IUnknown
2896 {
2897  typedef enum tagEXPLORERPANESTATE {
2898  EPS_DONTCARE = 0x0,
2899  EPS_DEFAULT_ON = 0x1,
2900  EPS_DEFAULT_OFF = 0x2,
2901  EPS_STATE_MASK = 0xffff,
2902  EPS_INITIALSTATE = 0x10000,
2903  EPS_FORCE = 0x20000
2904  } EXPLORERPANESTATE;
2905 
2906  HRESULT GetPaneState(
2907  [in] REFEXPLORERPANE ep,
2908  [out] EXPLORERPANESTATE *peps);
2909 }
2910 
2911 typedef [v1_enum] enum tagEXPLORER_BROWSER_FILL_FLAGS {
2912  EBF_NONE = 0,
2913  EBF_SELECTFROMDATAOBJECT = 0x100,
2914  EBF_NODROPTARGET = 0x200
2915 } EXPLORER_BROWSER_FILL_FLAGS;
2916 
2918  EBO_NONE = 0x00,
2928 
2929 cpp_quote("#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser")
2930 
2931 /*****************************************************************************
2932  * IExplorerBrowser interface
2933  */
2934 [
2935  object,
2936  uuid(DFD3B6B5-C10C-4BE9-85F6-A66969F402F6),
2938 ]
2940 {
2941 
2943  [in] HWND hwndParent,
2944  [in] const RECT *prc,
2945  [in, unique] const FOLDERSETTINGS *pfs);
2946 
2947  HRESULT Destroy();
2948 
2949  [local] HRESULT SetRect(
2950  [in,out,unique] HDWP *phdwp,
2951  [in] RECT rcBrowser);
2952 
2953  HRESULT SetPropertyBag(
2954  [in, string] LPCWSTR pszPropertyBag);
2955 
2956  HRESULT SetEmptyText(
2957  [in, string] LPCWSTR pszEmptyText);
2958 
2959  HRESULT SetFolderSettings(
2960  [in] const FOLDERSETTINGS *pfs);
2961 
2962  HRESULT Advise(
2963  [in] IExplorerBrowserEvents *psbe,
2964  [out] DWORD *pdwCookie);
2965 
2966  HRESULT Unadvise(
2967  [in] DWORD dwCookie);
2968 
2969  HRESULT SetOptions(
2970  [in] EXPLORER_BROWSER_OPTIONS dwFlag);
2971 
2972  HRESULT GetOptions(
2973  [out] EXPLORER_BROWSER_OPTIONS *pdwFlag);
2974 
2975  HRESULT BrowseToIDList(
2976  [in] PCUIDLIST_RELATIVE pidl,
2977  [in] UINT uFlags);
2978 
2979  HRESULT BrowseToObject(
2980  [in] IUnknown *punk,
2981  [in] UINT uFlags);
2982 
2983  HRESULT FillFromObject(
2984  [in] IUnknown *punk,
2985  [in] EXPLORER_BROWSER_FILL_FLAGS dwFlags);
2986 
2987  HRESULT RemoveAll();
2988 
2989  HRESULT GetCurrentView(
2990  [in] REFIID riid,
2991  [out, iid_is(riid)] void **ppv);
2992 }
2993 
2994 /*****************************************************************************
2995  * INameSpaceTreeControl interface
2996  */
2997 [
2998  object,
2999  uuid(028212A3-B627-47E9-8856-C14265554E4F)
3000 ]
3002 {
3004  NSTCS_HASEXPANDOS = 0x00000001,
3005  NSTCS_HASLINES = 0x00000002,
3006  NSTCS_SINGLECLICKEXPAND = 0x00000004,
3007  NSTCS_FULLROWSELECT = 0x00000008,
3008  NSTCS_SPRINGEXPAND = 0x00000010,
3009  NSTCS_HORIZONTALSCROLL = 0x00000020,
3010  NSTCS_ROOTHASEXPANDO = 0x00000040,
3011  NSTCS_SHOWSELECTIONALWAYS = 0x00000080,
3012  NSTCS_NOINFOTIP = 0x00000200,
3013  NSTCS_EVENHEIGHT = 0x00000400,
3014  NSTCS_NOREPLACEOPEN = 0x00000800,
3015  NSTCS_DISABLEDRAGDROP = 0x00001000,
3016  NSTCS_NOORDERSTREAM = 0x00002000,
3017  NSTCS_RICHTOOLTIP = 0x00004000,
3018  NSTCS_BORDER = 0x00008000,
3019  NSTCS_NOEDITLABELS = 0x00010000,
3020  NSTCS_TABSTOP = 0x00020000,
3021  NSTCS_FAVORITESMODE = 0x00080000,
3022  NSTCS_AUTOHSCROLL = 0x00100000,
3023  NSTCS_FADEINOUTEXPANDOS = 0x00200000,
3024  NSTCS_EMPTYTEXT = 0x00400000,
3025  NSTCS_CHECKBOXES = 0x00800000,
3026  NSTCS_PARTIALCHECKBOXES = 0x01000000,
3027  NSTCS_EXCLUSIONCHECKBOXES = 0x02000000,
3028  NSTCS_DIMMEDCHECKBOXES = 0x04000000,
3029  NSTCS_NOINDENTCHECKS = 0x08000000,
3030  NSTCS_ALLOWJUNCTIONS = 0x10000000,
3031  NSTCS_SHOWTABSBUTTON = 0x20000000,
3032  NSTCS_SHOWDELETEBUTTON = 0x40000000,
3033  NSTCS_SHOWREFRESHBUTTON = (int)0x80000000
3034  };
3035  typedef DWORD NSTCSTYLE;
3036 
3038  NSTCRS_VISIBLE = 0x0000,
3039  NSTCRS_HIDDEN = 0x0001,
3040  NSTCRS_EXPANDED = 0x0002
3041  };
3043 
3045  NSTCIS_NONE = 0x0000,
3046  NSTCIS_SELECTED = 0x0001,
3047  NSTCIS_EXPANDED = 0x0002,
3048  NSTCIS_BOLD = 0x0004,
3049  NSTCIS_DISABLED = 0x0008,
3050  NSTCIS_SELECTEDNOEXPAND = 0x0010
3051  };
3053 
3054  typedef [v1_enum] enum NSTCGNI {
3055  NSTCGNI_NEXT = 0,
3056  NSTCGNI_NEXTVISIBLE = 1,
3057  NSTCGNI_PREV = 2,
3058  NSTCGNI_PREVVISIBLE = 3,
3059  NSTCGNI_PARENT = 4,
3060  NSTCGNI_CHILD = 5,
3061  NSTCGNI_FIRSTVISIBLE = 6,
3062  NSTCGNI_LASTVISIBLE = 7
3063  } NSTCGNI;
3064 
3066  [in] HWND hwndParent,
3067  [in, unique] RECT *prc,
3068  [in] NSTCSTYLE nstcsFlags);
3069 
3070  HRESULT TreeAdvise(
3071  [in] IUnknown *punk,
3072  [out] DWORD *pdwCookie);
3073 
3074  HRESULT TreeUnadvise(
3075  [in] DWORD dwCookie);
3076 
3077  HRESULT AppendRoot(
3078  [in] IShellItem *psiRoot,
3079  [in] SHCONTF grfEnumFlags,
3080  [in] NSTCROOTSTYLE grfRootStyle,
3081  [in, unique] IShellItemFilter *pif);
3082 
3083  HRESULT InsertRoot(
3084  [in] int iIndex,
3085  [in] IShellItem *psiRoot,
3086  [in] SHCONTF grfEnumFlags,
3087  [in] NSTCROOTSTYLE grfRootStyle,
3088  [in, unique] IShellItemFilter *pif);
3089 
3090  HRESULT RemoveRoot(
3091  [in] IShellItem *psiRoot);
3092 
3093  HRESULT RemoveAllRoots();
3094 
3095  HRESULT GetRootItems(
3096  [out] IShellItemArray **ppsiaRootItems);
3097 
3098  HRESULT SetItemState(
3099  [in] IShellItem *psi,
3100  [in] NSTCITEMSTATE nstcisMask,
3101  [in] NSTCITEMSTATE nstcisFlags);
3102 
3103  HRESULT GetItemState(
3104  [in] IShellItem *psi,
3105  [in] NSTCITEMSTATE nstcismask,
3106  [out] NSTCITEMSTATE *pnstcisFlags);
3107 
3108  HRESULT GetSelectedItems(
3109  [out] IShellItemArray **psiaItems);
3110 
3111  HRESULT GetItemCustomState(
3112  [in] IShellItem *psi,
3113  [out] int *piStateNumber);
3114 
3115  HRESULT SetItemCustomState(
3116  [in] IShellItem *psi,
3117  [in] int iStateNumber);
3118 
3119  HRESULT EnsureItemVisible(
3120  [in] IShellItem *psi);
3121 
3122  HRESULT SetTheme(
3123  [in, string] LPCWSTR pszTheme);
3124 
3125  HRESULT GetNextItem(
3126  [in, unique] IShellItem *psi,
3127  [in] NSTCGNI nstcgi,
3128  [out] IShellItem **ppsiNext);
3129 
3130  HRESULT HitTest(
3131  [in] POINT *ppt,
3132  [out] IShellItem **ppsiOut);
3133 
3134  HRESULT GetItemRect(
3135  [in] IShellItem *psi,
3136  [out] RECT *prect);
3137 
3138  HRESULT CollapseAll();
3139 }
3140 
3141 /*****************************************************************************
3142  * INameSpaceTreeControl2 interface
3143  */
3144 [
3145  object,
3146  uuid(7CC7AED8-290E-49BC-8945-C1401CC9306C)
3147 ]
3149 {
3150  typedef [v1_enum] enum NSTCSTYLE2 {
3151  NSTCS2_DEFAULT = 0x00,
3152  NSTCS2_INTERRUPTNOTIFICATIONS = 0x01,
3153  NSTCS2_SHOWNULLSPACEMENU = 0x02,
3154  NSTCS2_DISPLAYPADDING = 0x04,
3155  NSTCS2_DISPLAYPINNEDONLY = 0x08,
3156  NTSCS2_NOSINGLETONAUTOEXPAND = 0x10, /* The apparent typo here is */
3157  NTSCS2_NEVERINSERTNONENUMERATED = 0x20 /* present also in the Win SDK */
3158  } NSTCSTYLE2;
3159  cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(NSTCSTYLE2)")
3160 
3161  HRESULT SetControlStyle(
3162  [in] NSTCSTYLE nstcsMask,
3163  [in] NSTCSTYLE nstcsStyle);
3164 
3165  HRESULT GetControlStyle(
3166  [in] NSTCSTYLE nstcsMask,
3167  [out] NSTCSTYLE *pnstcsStyle);
3168 
3169  HRESULT SetControlStyle2(
3170  [in] NSTCSTYLE2 nstcsMask,
3171  [in] NSTCSTYLE2 nstcsStyle);
3172 
3173  HRESULT GetControlStyle2(
3174  [in] NSTCSTYLE2 nstcsMask,
3175  [out] NSTCSTYLE2 *pnstcsStyle);
3176 }
3177 
3178 /*****************************************************************************
3179  * INameSpaceTreeControlEvents interface
3180  */
3181 
3182 [
3183  object,
3184  uuid(93D77985-B3D8-4484-8318-672CDDA002CE),
3185  local
3186 ]
3188 {
3190  NSTCEHT_NOWHERE = 0x0001,
3191  NSTCEHT_ONITEMICON = 0x0002,
3192  NSTCEHT_ONITEMLABEL = 0x0004,
3193  NSTCEHT_ONITEMIDENT = 0x0008,
3194  NSTCEHT_ONITEMBUTTON = 0x0010,
3195  NSTCEHT_ONITEMRIGHT = 0x0020,
3196  NSTCEHT_ONITEMSTATEICON = 0x0040,
3197  NSTCEHT_ONITEM = 0x0046,
3198  NSTCEHT_ONITEMTABBUTTON = 0x1000
3199  };
3201 
3203  NSTCECT_LBUTTON = 0x1,
3204  NSTCECT_MBUTTON = 0x2,
3205  NSTCECT_RBUTTON = 0x3,
3206  NSTCECT_BUTTON = 0x3,
3207  NSTCECT_DBLCLICK = 0x4
3208  };
3210 
3211  HRESULT OnItemClick(
3212  [in] IShellItem *psi,
3213  [in] NSTCEHITTEST nstceHitTest,
3214  [in] NSTCECLICKTYPE nstceClickType);
3215 
3216  HRESULT OnPropertyItemCommit(
3217  [in] IShellItem *psi);
3218 
3219  HRESULT OnItemStateChanging(
3220  [in] IShellItem *psi,
3221  [in] NSTCITEMSTATE nstcisMask,
3222  [in] NSTCITEMSTATE nstcisState);
3223 
3224  HRESULT OnItemStateChanged(
3225  [in] IShellItem *psi,
3226  [in] NSTCITEMSTATE nstcisMask,
3227  [in] NSTCITEMSTATE nstcisState);
3228 
3229  HRESULT OnSelectionChanged(
3230  [in] IShellItemArray *psiaSelection);
3231 
3232  HRESULT OnKeyboardInput(
3233  [in] UINT uMsg,
3234  [in] WPARAM wParam,
3235  [in] LPARAM lParam);
3236 
3237  HRESULT OnBeforeExpand(
3238  [in] IShellItem *psi);
3239 
3240  HRESULT OnAfterExpand(
3241  [in] IShellItem *psi);
3242 
3244  [in] IShellItem *psi);
3245 
3247  [in] IShellItem *psi);
3248 
3249  HRESULT OnGetToolTip(
3250  [in] IShellItem *psi,
3251  [out, string, size_is(cchTip)] LPWSTR pszTip,
3252  [in] int cchTip);
3253 
3254  HRESULT OnBeforeItemDelete(
3255  [in] IShellItem *psi);
3256 
3257  HRESULT OnItemAdded(
3258  [in] IShellItem *psi,
3259  [in] BOOL fIsRoot);
3260 
3261  HRESULT OnItemDeleted(
3262  [in] IShellItem *psi,
3263  [in] BOOL fIsRoot);
3264 
3265  HRESULT OnBeforeContextMenu(
3266  [in, unique] IShellItem *psi,
3267  [in] REFIID riid,
3268  [out, iid_is(riid)] void **ppv);
3269 
3270  HRESULT OnAfterContextMenu(
3271  [in] IShellItem *psi,
3272  [in] IContextMenu *pcmIn,
3273  [in] REFIID riid,
3274  [out, iid_is(riid)] void **ppv);
3275 
3276  HRESULT OnBeforeStateImageChange(
3277  [in] IShellItem *psi);
3278 
3279  HRESULT OnGetDefaultIconIndex(
3280  [in] IShellItem *psi,
3281  [out] int *piDefaultIcon,
3282  [out] int *piOpenIcon);
3283 }
3284 
3285 /*****************************************************************************
3286  * INameSpaceTreeControlCustomDraw interface
3287  */
3288 [
3289  object,
3290  uuid(2D3BA758-33EE-42D5-BB7B-5F3431D86C78),
3291  local
3292 ]
3293 
3295 {
3296  typedef struct NSTCCUSTOMDRAW
3297  {
3300  NSTCITEMSTATE nstcis;
3302  int iImage;
3304  int iLevel;
3305  int iIndent;
3306  } NSTCCUSTOMDRAW;
3307 
3308  HRESULT PrePaint(
3309  [in] HDC hdc,
3310  [in] RECT *prc,
3311  [out] LRESULT *plres);
3312 
3313  HRESULT PostPaint(
3314  [in] HDC hdc,
3315  [in] RECT *prc);
3316 
3317  HRESULT ItemPrePaint(
3318  [in] HDC hdc,
3319  [in] RECT *prc,
3320  [in, out] COLORREF *pclrText,
3321  [in, out] COLORREF *pclrTextBk,
3322  [out] LRESULT *plres);
3323 
3324  HRESULT ItemPostPaint(
3325  [in] HDC hdc,
3326  [in] RECT *prc,
3327  [in] NSTCCUSTOMDRAW *pnstccdItem);
3328 }
3329 
3330 /*****************************************************************************
3331  * INameSpaceTreeControlDropHandler interface
3332  */
3333 [
3334  object,
3335  uuid(F9C665D6-C2F2-4C19-BF33-8322D7352F51),
3336  local
3337 ]
3339 {
3340  HRESULT OnDragEnter(
3341  [in, unique] IShellItem *psiOver,
3342  [in] IShellItemArray *psiaData,
3343  [in] BOOL fOutsideSource,
3344  [in] DWORD grfKeyState,
3345  [in, out] DWORD *pdwEffect);
3346 
3347  HRESULT OnDragOver(
3348  [in, unique] IShellItem *psiOver,
3349  [in] IShellItemArray *psiaData,
3350  [in] DWORD grfKeyState,
3351  [in, out] DWORD *pdwEffect);
3352 
3353  HRESULT OnDragPosition(
3354  [in, unique] IShellItem *psiOver,
3355  [in] IShellItemArray *psiaData,
3356  [in] int iNewPosition,
3357  [in] int iOldPosition);
3358 
3359  HRESULT OnDrop(
3360  [in, unique] IShellItem *psiOver,
3361  [in] IShellItemArray *psiaData,
3362  [in] int iPosition,
3363  [in] DWORD grfKeyState,
3364  [in, out] DWORD *pdwEffect);
3365 
3366  HRESULT OnDropPosition(
3367  [in, unique] IShellItem *psiOver,
3368  [in] IShellItemArray *psiaData,
3369  [in] int iNewPosition,
3370  [in] int iOldPosition);
3371 
3372  HRESULT OnDragLeave(
3373  [in, unique] IShellItem *psiOver);
3374 }
3375 cpp_quote("#define NSTCDHPOS_ONTOP -1")
3376 
3378 
3380 {
3385 
3387 {
3392 
3393 /*****************************************************************************
3394  * IFileDialogEvents interface
3395  */
3396 [
3397  object,
3398  uuid(973510DB-7D7F-452B-8975-74A85828D354),
3400 ]
3402 {
3403  HRESULT OnFileOk(
3404  [in] IFileDialog *pfd);
3405 
3406  HRESULT OnFolderChanging(
3407  [in] IFileDialog *pfd,
3408  [in] IShellItem *psiFolder);
3409 
3410  HRESULT OnFolderChange(
3411  [in] IFileDialog *pfd);
3412 
3413  HRESULT OnSelectionChange(
3414  [in] IFileDialog *pfd);
3415 
3416  HRESULT OnShareViolation(
3417  [in] IFileDialog *pfd,
3418  [in] IShellItem *psi,
3419  [out] FDE_SHAREVIOLATION_RESPONSE *pResponse);
3420 
3421  HRESULT OnTypeChange(
3422  [in] IFileDialog *pfd);
3423 
3425  [in] IFileDialog *pfd,
3426  [in] IShellItem *psi,
3427  [out] FDE_OVERWRITE_RESPONSE *pResponse);
3428 }
3429 
3430 /*****************************************************************************
3431  * IModalWindow interface
3432  */
3433 [
3434  object,
3435  uuid(B4DB1657-70D7-485E-8E3E-6FCB5A5C1802),
3437 ]
3438 interface IModalWindow : IUnknown
3439 {
3440  [local]
3441  HRESULT Show(
3442  [in, unique, annotation("__in_opt")] HWND hwndOwner);
3443 
3444  [call_as(Show)]
3445  HRESULT RemoteShow(
3446  [in, unique] HWND hwndOwner);
3447 }
3448 
3449 typedef [v1_enum] enum FDAP
3450 {
3451  FDAP_BOTTOM = 0,
3452  FDAP_TOP = 1
3453 } FDAP;
3454 
3455 /*****************************************************************************
3456  * IFileDialog interface
3457  */
3458 [
3459  object,
3460  uuid(42F85136-DB7E-439C-85F1-E4075D135FC8),
3462 ]
3463 interface IFileDialog : IModalWindow
3464 {
3466  {
3467  FOS_OVERWRITEPROMPT = 0x00000002,
3468  FOS_STRICTFILETYPES = 0x00000004,
3469  FOS_NOCHANGEDIR = 0x00000008,
3470  FOS_PICKFOLDERS = 0x00000020,
3471  FOS_FORCEFILESYSTEM = 0x00000040,
3472  FOS_ALLNONSTORAGEITEMS = 0x00000080,
3473  FOS_NOVALIDATE = 0x00000100,
3474  FOS_ALLOWMULTISELECT = 0x00000200,
3475  FOS_PATHMUSTEXIST = 0x00000800,
3476  FOS_FILEMUSTEXIST = 0x00001000,
3477  FOS_CREATEPROMPT = 0x00002000,
3478  FOS_SHAREAWARE = 0x00004000,
3479  FOS_NOREADONLYRETURN = 0x00008000,
3480  FOS_NOTESTFILECREATE = 0x00010000,
3481  FOS_HIDEMRUPLACES = 0x00020000,
3482  FOS_HIDEPINNEDPLACES = 0x00040000,
3483  FOS_NODEREFERENCELINKS = 0x00100000,
3484  FOS_DONTADDTORECENT = 0x02000000,
3485  FOS_FORCESHOWHIDDEN = 0x10000000,
3486  FOS_DEFAULTNOMINIMODE = 0x20000000,
3487  FOS_FORCEPREVIEWPANEON = 0x40000000
3488  };
3490 
3491  HRESULT SetFileTypes(
3492  [in] UINT cFileTypes,
3493  [in, size_is(cFileTypes)] const COMDLG_FILTERSPEC *rgFilterSpec);
3494 
3495  HRESULT SetFileTypeIndex(
3496  [in] UINT iFileType);
3497 
3498  HRESULT GetFileTypeIndex(
3499  [out] UINT *piFileType);
3500 
3501  HRESULT Advise(
3502  [in] IFileDialogEvents *pfde,
3503  [out] DWORD *pdwCookie);
3504 
3505  HRESULT Unadvise(
3506  [in] DWORD dwCookie);
3507 
3508  HRESULT SetOptions(
3509  [in] FILEOPENDIALOGOPTIONS fos);
3510 
3511  HRESULT GetOptions(
3512  [in] FILEOPENDIALOGOPTIONS *pfos);
3513 
3514  HRESULT SetDefaultFolder(
3515  [in] IShellItem *psi);
3516 
3517  HRESULT SetFolder(
3518  [in] IShellItem *psi);
3519 
3521  [out] IShellItem **ppsi);
3522 
3523  HRESULT GetCurrentSelection(
3524  [out] IShellItem **ppsi);
3525 
3527  [in, string] LPCWSTR pszName);
3528 
3530  [out, string] LPWSTR *pszName);
3531 
3532  HRESULT SetTitle(
3533  [in, string] LPCWSTR pszTitle);
3534 
3535  HRESULT SetOkButtonLabel(
3536  [in, string] LPCWSTR pszText);
3537 
3538  HRESULT SetFileNameLabel(
3539  [in, string] LPCWSTR pszLabel);
3540 
3541  HRESULT GetResult(
3542  [out] IShellItem **ppsi);
3543 
3544  HRESULT AddPlace(
3545  [in] IShellItem *psi,
3546  [in] FDAP fdap);
3547 
3548  HRESULT SetDefaultExtension(
3549  [in, string] LPCWSTR pszDefaultExtension);
3550 
3551  HRESULT Close(
3552  [in] HRESULT hr);
3553 
3554  HRESULT SetClientGuid(
3555  [in] REFGUID guid);
3556 
3557  HRESULT ClearClientData();
3558 
3559  HRESULT SetFilter(
3560  [in] IShellItemFilter *pFilter);
3561 }
3562 
3563 /*****************************************************************************
3564  * IFileDialog2 interface
3565  */
3566 [
3567  object,
3568  uuid(61744FC7-85B5-4791-A9B0-272276309B13),
3570 ]
3572 {
3573  HRESULT SetCancelButtonLabel(
3574  [in] LPCWSTR pszLabel);
3575 
3576  HRESULT SetNavigationRoot(
3577  [in] IShellItem *psi);
3578 }
3579 
3580 /*****************************************************************************
3581  * IFileOperationProgressSink interface
3582  */
3583 [
3584  object,
3585  uuid(04B0F1A7-9490-44BC-96E1-4296A31252E2),
3587 ]
3589 {
3590  HRESULT StartOperations();
3591 
3592  HRESULT FinishOperations(
3593  [in] HRESULT hrResult);
3594 
3595  HRESULT PreRenameItem(
3596  [in] DWORD dwFlags,
3597  [in] IShellItem *psiItem,
3598  [in, unique, string] LPCWSTR pszNewName);
3599 
3600  HRESULT PostRenameItem(
3601  [in] DWORD dwFlags,
3602  [in] IShellItem *psiItem,
3603  [in, string] LPCWSTR pszNewName,
3604  [in] HRESULT hrRename,
3605  [in] IShellItem *psiNewlyCreated);
3606 
3607  HRESULT PreMoveItem(
3608  [in] DWORD dwFlags,
3609  [in] IShellItem *psiItem,
3610  [in] IShellItem *psiDestinationFolder,
3611  [in, unique, string] LPCWSTR pszNewName);
3612 
3613  HRESULT PostMoveItem(
3614  [in] DWORD dwFlags,
3615  [in] IShellItem *psiItem,
3616  [in] IShellItem *psiDestinationFolder,
3617  [in, unique, string] LPCWSTR pszNewName,
3618  [in] HRESULT hrMove,
3619  [in] IShellItem *psiNewlyCreated);
3620 
3621  HRESULT PreCopyItem(
3622  [in] DWORD dwFlags,
3623  [in] IShellItem *psiItem,
3624  [in] IShellItem *psiDestinationFolder,
3625  [in, unique, string] LPCWSTR pszNewName);
3626 
3627  HRESULT PostCopyItem(
3628  [in] DWORD dwFlags,
3629  [in] IShellItem *psiItem,
3630  [in] IShellItem *psiDestinationFolder,
3631  [in, unique, string] LPCWSTR pszNewName,
3632  [in] HRESULT hrCopy,
3633  [in] IShellItem *psiNewlyCreated);
3634 
3635  HRESULT PreDeleteItem(
3636  [in] DWORD dwFlags,
3637  [in] IShellItem *psiItem);
3638 
3639  HRESULT PostDeleteItem(
3640  [in] DWORD dwFlags,
3641  [in] IShellItem *psiItem,
3642  [in] HRESULT hrDelete,
3643  [in] IShellItem *psiNewlyCreated);
3644 
3645  HRESULT PreNewItem(
3646  [in] DWORD dwFlags,
3647  [in] IShellItem *psiDestinationFolder,
3648  [in, unique, string] LPCWSTR pszNewName);
3649 
3650  HRESULT PostNewItem(
3651  [in] DWORD dwFlags,
3652  [in] IShellItem *psiDestinationFolder,
3653  [in, unique, string] LPCWSTR pszNewName,
3654  [in, unique, string] LPCWSTR pszTemplateName,
3656  [in] HRESULT hrNew,
3657  [in] IShellItem *psiNewItem);
3658 
3660  [in] UINT iWorkTotal,
3661  [in] UINT iWorkSoFar);
3662 
3663  HRESULT ResetTimer();
3664 
3665  HRESULT PauseTimer();
3666 
3667  HRESULT ResumeTimer();
3668 }
3669 
3670 /*****************************************************************************
3671  * IFileSaveDialog interface
3672  */
3673 [
3674  object,
3675  uuid(84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB),
3677 ]
3679 {
3680  HRESULT SetSaveAsItem(
3681  [in] IShellItem *psi);
3682 
3683  HRESULT SetProperties(
3684  [in] IPropertyStore *pStore);
3685 
3686  HRESULT SetCollectedProperties(
3687  [in] IPropertyDescriptionList *pList,
3688  [in] BOOL fAppendDefault);
3689 
3690  HRESULT GetProperties(
3691  [in] IPropertyStore **ppStore);
3692 
3693  HRESULT ApplyProperties(
3694  [in] IShellItem *psi,
3695  [in] IPropertyStore *pStore,
3696  [in, unique] HWND hwnd,
3698 }
3699 
3700 
3701 /*****************************************************************************
3702  * IFileOpenDialog interface
3703  */
3704 [
3705  object,
3706  uuid(D57C7288-D4AD-4768-BE02-9D969532D960),
3708 ]
3709 interface IFileOpenDialog : IFileDialog
3710 {
3711  HRESULT GetResults(
3712  [out] IShellItemArray **ppenum);
3713 
3714  HRESULT GetSelectedItems(
3715  [out] IShellItemArray **ppsai);
3716 }
3717 
3718 typedef [v1_enum] enum CDCONTROLSTATEF
3719 {
3720  CDCS_INACTIVE = 0x0,
3721  CDCS_ENABLED = 0x1,
3722  CDCS_VISIBLE = 0x2,
3723  CDCS_ENABLEDVISIBLE = 0x3
3724 } CDCONTROLSTATEF;
3725 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CDCONTROLSTATEF)")
3726 /*****************************************************************************
3727  * IFileDialogCustomize interface
3728  */
3729 [
3730  object,
3731  uuid(E6FDD21A-163F-4975-9C8C-A69F1BA37034),
3733 ]
3734 interface IFileDialogCustomize : IUnknown
3735 {
3736  HRESULT EnableOpenDropDown(
3737  [in] DWORD dwIDCtl);
3738 
3739  HRESULT AddMenu(
3740  [in] DWORD dwIDCtl,
3741  [in, string] LPCWSTR pszLabel);
3742 
3743  HRESULT AddPushButton(
3744  [in] DWORD dwIDCtl,
3745  [in, string] LPCWSTR pszLabel);
3746 
3747  HRESULT AddComboBox(
3748  [in] DWORD dwIDCtl);
3749 
3750  HRESULT AddRadioButtonList(
3751  [in] DWORD dwIDCtl);
3752 
3753  HRESULT AddCheckButton(
3754  [in] DWORD dwIDCtl,
3755  [in, string] LPCWSTR pszLabel,
3756  [in] BOOL bChecked);
3757 
3758  HRESULT AddEditBox(
3759  [in] DWORD dwIDCtl,
3760  [in, string] LPCWSTR pszText);
3761 
3763  [in] DWORD dwIDCtl);
3764 
3765  HRESULT AddText(
3766  [in] DWORD dwIDCtl,
3767  [in, string] LPCWSTR pszText);
3768 
3769  HRESULT SetControlLabel(
3770  [in] DWORD dwIDCtl,
3771  [in, string] LPCWSTR pszLabel);
3772 
3773  HRESULT GetControlState(
3774  [in] DWORD dwIDCtl,
3775  [out] CDCONTROLSTATEF *pdwState);
3776 
3777  HRESULT SetControlState(
3778  [in] DWORD dwIDCtl,
3779  [in] CDCONTROLSTATEF dwState);
3780 
3781  HRESULT GetEditBoxText(
3782  [in] DWORD dwIDCtl,
3783  [out, string] WCHAR **ppszText);
3784 
3785  HRESULT SetEditBoxText(
3786  [in] DWORD dwIDCtl,
3787  [in, string] LPCWSTR pszText);
3788 
3789  HRESULT GetCheckButtonState(
3790  [in] DWORD dwIDCtl,
3791  [out] BOOL *pbChecked);
3792 
3793  HRESULT SetCheckButtonState(
3794  [in] DWORD dwIDCtl,
3795  [in] BOOL bChecked);
3796 
3797  HRESULT AddControlItem(
3798  [in] DWORD dwIDCtl,
3799  [in] DWORD dwIDItem,
3800  [in] LPCWSTR pszLabel);
3801 
3802  HRESULT RemoveControlItem(
3803  [in] DWORD dwIDCtl,
3804  [in] DWORD dwIDItem);
3805 
3806  HRESULT RemoveAllControlItems(
3807  [in] DWORD dwIDCtl);
3808 
3809  HRESULT GetControlItemState(
3810  [in] DWORD dwIDCtl,
3811  [in] DWORD dwIDItem,
3812  [out] CDCONTROLSTATEF *pdwState);
3813 
3814  HRESULT SetControlItemState(
3815  [in] DWORD dwIDCtl,
3816  [in] DWORD dwIDItem,
3817  [in] CDCONTROLSTATEF dwState);
3818 
3819  HRESULT GetSelectedControlItem(
3820  [in] DWORD dwIDCtl,
3821  [out] DWORD *pdwIDItem);
3822 
3823  HRESULT SetSelectedControlItem(
3824  [in] DWORD dwIDCtl,
3825  [in] DWORD dwIDItem);
3826 
3827  HRESULT StartVisualGroup(
3828  [in] DWORD dwIDCtl,
3829  [in, string] LPCWSTR pszLabel);
3830 
3831  HRESULT EndVisualGroup();
3832 
3833  HRESULT MakeProminent(
3834  [in] DWORD dwIDCtl);
3835 
3836  HRESULT SetControlItemText(
3837  [in] DWORD dwIDCtl,
3838  [in] DWORD dwIDItem,
3839  [in, string] LPCWSTR pszLabel);
3840 }
3841 
3842 /*****************************************************************************
3843  * IFileDialogControlEvents interface
3844  */
3845 [
3846  object,
3847  uuid(36116642-D713-4B97-9B83-7484A9D00433),
3849 ]
3850 interface IFileDialogControlEvents : IUnknown
3851 {
3852  HRESULT OnItemSelected(
3853  [in] IFileDialogCustomize *pfdc,
3854  [in] DWORD dwIDCtl,
3855  [in] DWORD dwIDItem);
3856 
3857  HRESULT OnButtonClicked(
3858  [in] IFileDialogCustomize *pfdc,
3859  [in] DWORD dwIDCtl);
3860 
3861  HRESULT OnCheckButtonToggled(
3862  [in] IFileDialogCustomize *pfdc,
3863  [in] BOOL dwIDCtl,
3864  [in] BOOL bChecked);
3865 
3866  HRESULT OnControlActivating(
3867  [in] IFileDialogCustomize *pfdc,
3868  [in] DWORD dwIDCtl);
3869 }
3870 
3871 typedef [v1_enum] enum tagKF_CATEGORY
3872 {
3873  KF_CATEGORY_VIRTUAL = 0x00000001,
3874  KF_CATEGORY_FIXED = 0x00000002,
3875  KF_CATEGORY_COMMON = 0x00000003,
3876  KF_CATEGORY_PERUSER = 0x00000004
3877 } KF_CATEGORY;
3878 
3880 {
3888 
3890 {
3892  KFDF_ROAMABLE = 0x00000004,
3893  KFDF_PRECREATE = 0x00000008,
3894  KFDF_STREAM = 0x00000010,
3897 
3899 {
3900  KF_CATEGORY category;
3914 
3915 [
3916  object,
3917  uuid(3aa7af7e-9b36-420C-a8e3-f77d4674a488),
3919 ]
3920 interface IKnownFolder : IUnknown
3921 {
3922  HRESULT GetId(
3923  [out] KNOWNFOLDERID *pkfid);
3924 
3925  HRESULT GetCategory(
3926  [out] KF_CATEGORY *pCategory);
3927 
3928  HRESULT GetShellItem(
3929  [in] DWORD dwFlags,
3930  [in] REFIID riid,
3931  [out, iid_is(riid)] void **ppv);
3932 
3933  HRESULT GetPath(
3934  [in] DWORD dwFlags,
3935  [out, string] LPWSTR *ppszPath);
3936 
3937  HRESULT SetPath(
3938  [in] DWORD dwFlags,
3939  [in, string] LPCWSTR pszPath);
3940 
3941  HRESULT GetIDList(
3942  [in] DWORD dwFlags,
3943  [out] PIDLIST_ABSOLUTE *ppidl);
3944 
3945  HRESULT GetFolderType(
3946  [out] FOLDERTYPEID *pftid);
3947 
3948  HRESULT GetRedirectionCapabilities(
3949  [out] KF_REDIRECTION_CAPABILITIES *pCapabilities);
3950 
3951  HRESULT GetFolderDefinition(
3952  [out] KNOWNFOLDER_DEFINITION *pKFD);
3953 }
3954 
3955 typedef [v1_enum] enum tagKF_REDIRECT_FLAGS
3956 {
3957  KF_REDIRECT_USER_EXCLUSIVE = 0x00000001,
3958  KF_REDIRECT_COPY_SOURCE_DACL = 0x00000002,
3959  KF_REDIRECT_OWNER_USER = 0x00000004,
3960  KF_REDIRECT_SET_OWNER_EXPLICIT = 0x00000008,
3961  KF_REDIRECT_CHECK_ONLY = 0x00000010,
3962  KF_REDIRECT_WITH_UI = 0x00000020,
3963  KF_REDIRECT_UNPIN = 0x00000040,
3964  KF_REDIRECT_PIN = 0x00000080,
3965  KF_REDIRECT_COPY_CONTENTS = 0x00000200,
3966  KF_REDIRECT_DEL_SOURCE_CONTENTS = 0x00000400,
3968 } KF_REDIRECT_FLAGS;
3969 
3970 [
3971  object,
3972  uuid(8BE2D872-86AA-4d47-B776-32CCA40C7018),
3974 ]
3976 {
3977  typedef [v1_enum] enum tagFFFP_MODE
3978  {
3980  FFFP_NEARESTPARENTMATCH
3981  } FFFP_MODE;
3982 
3983  HRESULT FolderIdFromCsidl(
3984  [in] int nCsidl,
3985  [out] KNOWNFOLDERID *pfid);
3986 
3987  HRESULT FolderIdToCsidl(
3988  [in] REFKNOWNFOLDERID rfid,
3989  [out] int *pnCsidl);
3990 
3991  HRESULT GetFolderIds(
3992  [out, size_is(, *pCount)] KNOWNFOLDERID **ppKFId,
3993  [in, out] UINT *pCount);
3994 
3996  [in] REFKNOWNFOLDERID rfid,
3997  [out] IKnownFolder **ppkf);
3998 
3999  HRESULT GetFolderByName(
4000  [in, string] LPCWSTR pszCanonicalName,
4001  [out] IKnownFolder **ppkf);
4002 
4003  HRESULT RegisterFolder(
4004  [in] REFKNOWNFOLDERID rfid,
4005  [in] KNOWNFOLDER_DEFINITION const *pKFD);
4006 
4007  HRESULT UnregisterFolder(
4008  [in] REFKNOWNFOLDERID rfid);
4009 
4010  HRESULT FindFolderFromPath(
4011  [in, string] LPCWSTR pszPath,
4012  [in] FFFP_MODE mode,
4013  [out] IKnownFolder **ppkf);
4014 
4015  HRESULT FindFolderFromIDList(
4016  [in] PCIDLIST_ABSOLUTE pidl,
4017  [out] IKnownFolder **ppkf);
4018 
4019  HRESULT Redirect(
4020  [in] REFKNOWNFOLDERID rfid,
4021  [in, unique] HWND hwnd,
4022  [in] KF_REDIRECT_FLAGS flags,
4023  [in, unique, string] LPCWSTR pszTargetPath,
4024  [in] UINT cFolders,
4025  [in, size_is(cFolders), unique] KNOWNFOLDERID const *pExclusion,
4026  [out, string] LPWSTR *ppszError);
4027 }
4028 
4029 /* function for releasing structure returned from IKnownFolder::GetFolderDefinition */
4030 cpp_quote("static inline void FreeKnownFolderDefinitionFields(KNOWNFOLDER_DEFINITION *pKFD)")
4031 cpp_quote("{")
4032 cpp_quote(" CoTaskMemFree(pKFD->pszName);")
4033 cpp_quote(" CoTaskMemFree(pKFD->pszDescription);")
4034 cpp_quote(" CoTaskMemFree(pKFD->pszRelativePath);")
4035 cpp_quote(" CoTaskMemFree(pKFD->pszParsingName);")
4036 cpp_quote(" CoTaskMemFree(pKFD->pszTooltip);")
4037 cpp_quote(" CoTaskMemFree(pKFD->pszLocalizedName);")
4038 cpp_quote(" CoTaskMemFree(pKFD->pszIcon);")
4039 cpp_quote(" CoTaskMemFree(pKFD->pszSecurity);")
4040 cpp_quote("}")
4041 
4042 typedef [v1_enum] enum ASSOCIATIONLEVEL {
4043  AL_MACHINE,
4044  AL_EFFECTIVE,
4045  AL_USER
4046 } ASSOCIATIONLEVEL;
4047 
4048 typedef [v1_enum] enum ASSOCIATIONTYPE {
4049  AT_FILEEXTENSION,
4050  AT_URLPROTOCOL,
4051  AT_STARTMENUCLIENT,
4052  AT_MIMETYPE
4053 } ASSOCIATIONTYPE;
4054 
4055 [
4056  object,
4057  uuid(4e530b0a-e611-4c77-a3ac-9031d022281b),
4058  pointer_default(unique)
4059 ]
4060 interface IApplicationAssociationRegistration : IUnknown
4061 {
4062  HRESULT QueryCurrentDefault(
4063  [in, string] LPCWSTR pszQuery,
4064  [in] ASSOCIATIONTYPE atQueryType,
4065  [in] ASSOCIATIONLEVEL alQueryLevel,
4066  [out, string] LPWSTR *ppszAssociation);
4067 
4068  HRESULT QueryAppIsDefault(
4069  [in, string] LPCWSTR pszQuery,
4070  [in] ASSOCIATIONTYPE atQueryType,
4071  [in] ASSOCIATIONLEVEL alQueryLevel,
4072  [in, string] LPCWSTR pszAppRegistryName,
4073  [out] BOOL *pfDefault);
4074 
4075  HRESULT QueryAppIsDefaultAll(
4076  [in] ASSOCIATIONLEVEL alQueryLevel,
4077  [in, string] LPCWSTR pszAppRegistryName,
4078  [out] BOOL* pfDefault);
4079 
4080  HRESULT SetAppAsDefault(
4081  [in, string] LPCWSTR pszAppRegistryName,
4082  [in, string] LPCWSTR pszSet,
4083  [in] ASSOCIATIONTYPE atSetType);
4084 
4085  HRESULT SetAppAsDefaultAll(
4086  [in, string] LPCWSTR pszAppRegistryName);
4087 
4088  HRESULT ClearUserAssociations();
4089 }
4090 
4091 [
4092  uuid(6332debf-87b5-4670-90c0-5e57b408a49e),
4093  object,
4094  pointer_default(unique)
4095 ]
4096 interface ICustomDestinationList : IUnknown
4097 {
4098  typedef [v1_enum] enum KNOWNDESTCATEGORY {
4099  KDC_FREQUENT = 1,
4100  KDC_RECENT
4101  } KNOWNDESTCATEGORY;
4102 
4103  HRESULT SetAppID([in, string] LPCWSTR pszAppID);
4104 
4105  HRESULT BeginList(
4106  [out] UINT *pcMinSlots,
4107  [in] REFIID riid,
4108  [out, iid_is(riid)] void **ppv);
4109 
4110  HRESULT AppendCategory(
4111  [in, string] LPCWSTR pszCategory,
4112  [in] IObjectArray *poa);
4113 
4114  HRESULT AppendKnownCategory([in] KNOWNDESTCATEGORY category);
4115  HRESULT AddUserTasks([in] IObjectArray *poa);
4116  HRESULT CommitList();
4117 
4118  HRESULT GetRemovedDestinations(
4119  [in] REFIID riid,
4120  [out, iid_is(riid)] void **ppv);
4121 
4122  HRESULT DeleteList([in, unique, string] LPCWSTR pszAppID);
4123  HRESULT AbortList();
4124 }
4125 
4126 [
4127  uuid(ddefe873-6997-4e68-be26-39b633adbe12),
4128  object,
4129  pointer_default(unique)
4130 ]
4131 interface IQueryCancelAutoPlay : IUnknown
4132 {
4133  HRESULT AllowAutoPlay([in, string] LPCWSTR path,
4134  [in] DWORD content_type,
4135  [in, string] LPCWSTR label,
4136  [in] DWORD serial_number);
4137 }
4138 
4139 [
4140  uuid(d594d0d8-8da7-457b-b3b4-ce5dbaac0b88),
4141  pointer_default(unique)
4142 ]
4143 interface ITransferAdviseSink : IUnknown
4144 {
4145  [v1_enum] enum _TRANSFER_ADVISE_STATE
4146  {
4147  TS_NONE = 0,
4148  TS_PERFORMING = 1,
4149  TS_PREPARING = 2,
4150  TS_INDETERMINATE = 4
4151  };
4152  typedef DWORD TRANSFER_ADVISE_STATE;
4153 
4154  HRESULT UpdateProgress([in] ULONGLONG size_current,
4155  [in] ULONGLONG size_total,
4156  [in] INT files_current,
4157  [in] INT files_total,
4158  [in] INT folders_current,
4159  [in] INT folders_total);
4160  HRESULT UpdateTransferState([in] TRANSFER_ADVISE_STATE state);
4161  HRESULT ConfirmOverwrite([in] IShellItem *source,
4162  [in] IShellItem *dest_parent,
4163  [in, string] LPCWSTR name);
4164  HRESULT ConfirmEncryptLoss([in] IShellItem *source);
4165  HRESULT FileFailure([in] IShellItem *item,
4166  [in, unique, string] LPCWSTR itemname,
4167  [in] HRESULT hr,
4168  [in, out, unique, size_is(crename)] LPWSTR rename,
4169  [in] ULONG crename);
4170  HRESULT SubStreamFailure([in] IShellItem *item,
4171  [in, string] LPCWSTR stream,
4172  [in] HRESULT hr);
4173  HRESULT PropertyFailure([in] IShellItem *item,
4174  [in, unique] const PROPERTYKEY *key,
4175  [in] HRESULT hr);
4176 }
4177 
4178 [v1_enum] enum _TRANSFER_SOURCE_FLAGS
4179 {
4180  TSF_NORMAL = 0,
4181  TSF_FAIL_EXIST = 0,
4182  TSF_RENAME_EXIST = 0x1,
4183  TSF_OVERWRITE_EXIST = 0x2,
4184  TSF_ALLOW_DECRYPTION = 0x4,
4185  TSF_NO_SECURITY = 0x8,
4186  TSF_COPY_CREATION_TIME = 0x10,
4187  TSF_COPY_WRITE_TIME = 0x20,
4188  TSF_USE_FULL_ACCESS = 0x40,
4189  TSF_DELETE_RECYCLE_IF_POSSIBLE = 0x80,
4190  TSF_COPY_HARD_LINK = 0x100,
4191  TSF_COPY_LOCALIZED_NAME = 0x200,
4192  TSF_MOVE_AS_COPY_DELETE = 0x400,
4193  TSF_SUSPEND_SHELLEVENTS = 0x800
4194 };
4195 typedef DWORD TRANSFER_SOURCE_FLAGS;
4196 
4197 [
4198  uuid(00adb003-bde9-45c6-8e29-d09f9353e108),
4199  object,
4200  pointer_default(unique)
4201 ]
4202 interface ITransferSource : IUnknown
4203 {
4204  HRESULT Advise([in] ITransferAdviseSink *sink, [out] DWORD *cookie);
4205  HRESULT Unadvise([in] DWORD cookie);
4206  HRESULT SetProperties([in] IPropertyChangeArray *array);
4207  HRESULT OpenItem([in] IShellItem *item,
4208  [in] TRANSFER_SOURCE_FLAGS flags,
4209  [in] REFIID riid,
4210  [out, iid_is(riid)] void **ppv);
4211  HRESULT MoveItem([in] IShellItem *item,
4212  [in] IShellItem *parent_dest,
4213  [in, string] LPCWSTR name_dest,
4214  [in] TRANSFER_SOURCE_FLAGS flags,
4215  [out] IShellItem **newitem);
4216  HRESULT RecycleItem([in] IShellItem *source,
4217  [in] IShellItem *parent_dest,
4218  [in] TRANSFER_SOURCE_FLAGS flags,
4219  [out] IShellItem **new_dest);
4220  HRESULT RemoveItem([in] IShellItem *source, [in] TRANSFER_SOURCE_FLAGS flags);
4221  HRESULT RenameItem([in] IShellItem *source,
4222  [in, string] LPCWSTR newname,
4223  [in] TRANSFER_SOURCE_FLAGS flags,
4224  [out] IShellItem **new_dest);
4225  HRESULT LinkItem([in] IShellItem *source,
4226  [in] IShellItem *parent_dest,
4227  [in, unique, string] LPCWSTR new_name,
4228  [in] TRANSFER_SOURCE_FLAGS flags,
4229  [out] IShellItem **new_dest);
4230  HRESULT ApplyPropertiesToItem([in] IShellItem *source, [out] IShellItem **newitem);
4231  HRESULT GetDefaultDestinationName([in] IShellItem *source,
4232  [in] IShellItem *parent_dest,
4233  [out, string] LPWSTR *dest_name);
4234  HRESULT EnterFolder([in] IShellItem *child_folder);
4235  HRESULT LeaveFolder([in] IShellItem *child_folder);
4236 }
4237 
4238 [
4239  uuid(48addd32-3ca5-4124-abe3-b5a72531b207),
4240  object,
4241  pointer_default(unique)
4242 ]
4243 interface ITransferDestination : IUnknown
4244 {
4245  HRESULT Advise([in] ITransferAdviseSink *sink, [out] DWORD *cookie);
4246  HRESULT Unadvise([in] DWORD cookie);
4247  HRESULT CreateItem([in, string] LPCWSTR name,
4248  [in] DWORD attr,
4249  [in] ULONGLONG size,
4250  [in] TRANSFER_SOURCE_FLAGS flags,
4251  [in] REFIID riid,
4252  [out, iid_is(riid)] void **ppv,
4253  [in] REFIID resources,
4254  [out, iid_is(riid)] void **presources);
4255 }
4256 
4257 [
4258  uuid(92218cab-ecaa-4335-8133-807fd234c2ee),
4259  object,
4260  pointer_default(unique)
4261 ]
4262 interface IAssocHandlerInvoker : IUnknown
4263 {
4264  HRESULT SupportsSelection();
4265  HRESULT Invoke();
4266 }
4267 
4268 [
4269  uuid(f04061ac-1659-4a3f-a954-775aa57fc083),
4270  object,
4271  pointer_default(unique)
4272 ]
4273 interface IAssocHandler : IUnknown
4274 {
4275  HRESULT GetName([out, string] LPWSTR *name);
4276  HRESULT GetUIName([out, string] LPWSTR *uiname);
4277  HRESULT GetIconLocation([out, string] LPWSTR *path,
4278  [out] int *index);
4279  HRESULT IsRecommended();
4280  HRESULT MakeDefault([in, string] LPCWSTR description);
4281  HRESULT Invoke([in] IDataObject *object);
4282  HRESULT CreateInvoker([in] IDataObject *object,
4283  [out] IAssocHandlerInvoker **invoker);
4284 }
4285 
4286 [
4287  uuid(973810ae-9599-4b88-9e4d-6ee98c9552da),
4288  object,
4289  pointer_default(unique)
4290 ]
4291 interface IEnumAssocHandlers : IUnknown
4292 {
4293  HRESULT Next([in] ULONG count,
4294  [out, size_is(count), length_is(*fetched)] IAssocHandler **handlers,
4295  [out] ULONG *fetched);
4296 }
4297 
4298 typedef enum ASSOC_FILTER
4299 {
4300  ASSOC_FILTER_NONE = 0,
4301  ASSOC_FILTER_RECOMMENDED
4302 } ASSOC_FILTER;
4303 cpp_quote("HRESULT WINAPI SHAssocEnumHandlers(PCWSTR extra, ASSOC_FILTER filter, IEnumAssocHandlers **handlersenum);")
4304 
4305 typedef [v1_enum] enum ACTIVATEOPTIONS
4306 {
4307  AO_NONE = 0x00000000,
4308  AO_DESIGNMODE = 0x00000001,
4309  AO_NOERRORUI = 0x00000002,
4310  AO_NOSPLASHSCREEN = 0x00000004
4311 } ACTIVATEOPTIONS;
4312 
4313 [
4314  uuid(2e941141-7f97-4756-ba1d-9decde894a3d),
4315  object,
4316  pointer_default(unique)
4317 ]
4318 interface IApplicationActivationManager : IUnknown
4319 {
4320  HRESULT ActivateApplication([in] LPCWSTR appusermodelid,
4321  [in, unique] LPCWSTR arguments,
4322  [in] ACTIVATEOPTIONS options,
4323  [out] DWORD *processid);
4324  HRESULT ActivateForFile([in] LPCWSTR appusermodelid,
4325  [in] IShellItemArray *itemarray,
4326  [in, unique] LPCWSTR verb,
4327  [out] DWORD *processid);
4328  HRESULT ActivateForProtocol([in] LPCWSTR appusermodelid,
4329  [in] IShellItemArray *itemarray,
4330  [out] DWORD *processid);
4331 }
4332 
4333 /*****************************************************************************
4334  * ShellObjects typelibrary
4335  */
4336 [
4337  uuid(50A7E9B1-70EF-11D1-B75A-00A0C90564FE),
4338  lcid(0x0000),
4339  version(1.0)
4340 ]
4341 library ShellObjects
4342 {
4343  [
4344  uuid(71F96385-DDD6-48D3-A0C1-AE06E8B055FB)
4345  ]
4346  coclass ExplorerBrowser
4347  {
4348  interface IExplorerBrowser;
4349  }
4350 
4351  [
4352  uuid(DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7)
4353  ]
4354  coclass FileOpenDialog
4355  {
4356  interface IFileOpenDialog;
4357  }
4358 
4359  [
4360  uuid(C0B4E2F3-BA21-4773-8DBA-335EC946EB8B)
4361  ]
4362  coclass FileSaveDialog
4363  {
4364  interface IFileSaveDialog;
4365  }
4366 
4367  [
4368  uuid(AE054212-3535-4430-83ED-D501AA6680E6)
4369  ]
4370  coclass NamespaceTreeControl
4371  {
4372  interface INameSpaceTreeControl2;
4373  }
4374 
4375  [
4376  uuid(4df0c730-df9d-4ae3-9153-aa6b82e9795a)
4377  ]
4378  coclass KnownFolderManager
4379  {
4380  interface IKnownFolderManager;
4381  }
4382 
4383  [
4384  uuid(591209c7-767b-42b2-9fba-44ee4615f2c7)
4385  ]
4386  coclass ApplicationAssociationRegistration
4387  {
4388  interface IApplicationAssociationRegistration;
4389  }
4390 
4391  [
4392  uuid(00021401-0000-0000-c000-000000000046)
4393  ]
4394  coclass ShellLink
4395  {
4396  interface IShellLinkW;
4397  }
4398 
4399  [
4400  uuid(56fdf344-fd6d-11d0-958a-006097c9a090)
4401  ]
4402  coclass TaskbarList
4403  {
4404  interface ITaskbarList4;
4405  }
4406 
4407  [
4408  uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6)
4409  ]
4410  coclass DestinationList {
4411  interface ICustomDestinationList;
4412  }
4413 
4414  [
4415  uuid(2d3468c1-36a7-43b6-ac24-d3f02fd9607a)
4416  ]
4417  coclass EnumerableObjectCollection
4418  {
4419  interface IEnumObjects;
4420  }
4421 
4422  [
4423  uuid(331f1768-05a9-4ddd-b86e-dae34ddc998a)
4424  ]
4425  coclass QueryCancelAutoPlay
4426  {
4427  interface IQueryCancelAutoPlay;
4428  }
4429 
4430  [
4431  uuid(9ac9fbe1-e0a2-4ad6-b4ee-e212013ea917)
4432  ]
4433  coclass ShellItem {
4434  interface IShellItem2;
4435  }
4436 
4437  [
4438  uuid(45ba127d-10a8-46ea-8ab7-56ea9078943c)
4439  ]
4440  coclass ApplicationActivationManager
4441  {
4442  interface IApplicationActivationManager;
4443  }
4444 
4445 #ifdef __REACTOS__
4446  [
4447  uuid(0010890e-8789-413c-adbc-48f5b511b3af)
4448  ]
4449  coclass UserNotification
4450  {
4451  interface IUserNotification;
4452  }
4453 #endif // __REACTOS__
4454 
4455 }
4456 
4457 enum _OPPROGDLGF
4458 {
4459  OPPROGDLG_DEFAULT = 0,
4460  OPPROGDLG_ENABLEPAUSE = 0x80,
4461  OPPROGDLG_ALLOWUNDO = 0x100,
4462  OPPROGDLG_DONTDISPLAYSOURCEPATH = 0x200,
4463  OPPROGDLG_DONTDISPLAYDESTPATH = 0x400,
4464  OPPROGDLG_NOMULTIDAYESTIMATES = 0x800,
4465  OPPROGDLG_DONTDISPLAYLOCATIONS = 0x1000
4466 };
4467 typedef DWORD OPPROGDLGF;
4468 
4469 enum _PDMODE
4470 {
4471  PDM_DEFAULT = 0,
4472  PDM_RUN = 0x1,
4473  PDM_PREFLIGHT = 0x2,
4474  PDM_UNDOING = 0x4,
4475  PDM_ERRORSBLOCKING = 0x8,
4476  PDM_INDETERMINATE = 0x10
4477 };
4478 typedef DWORD PDMODE;
4479 
4480 typedef enum PDOPSTATUS
4481 {
4482  PDOPS_RUNNING = 1,
4483  PDOPS_PAUSED = 2,
4484  PDOPS_CANCELLED = 3,
4485  PDOPS_STOPPED = 4,
4486  PDOPS_ERRORS = 5
4487 } PDOPSTATUS;
4488 
4489 typedef enum _SPACTION
4490 {
4491  SPACTION_NONE = 0,
4492  SPACTION_MOVING = 1,
4493  SPACTION_COPYING = 2,
4494  SPACTION_RECYCLING = 3,
4495  SPACTION_APPLYINGATTRIBS = 4,
4496  SPACTION_DOWNLOADING = 5,
4497  SPACTION_SEARCHING_INTERNET = 6,
4498  SPACTION_CALCULATING = 7,
4499  SPACTION_UPLOADING = 8,
4500  SPACTION_SEARCHING_FILES = 9,
4501  SPACTION_DELETING = 10,
4502  SPACTION_RENAMING = 11,
4503  SPACTION_FORMATTING = 12,
4504  SPACTION_COPY_MOVING = 13
4505 } SPACTION;
4506 
4507 [
4508  uuid(0C9FB851-E5C9-43EB-A370-F0677B13874C),
4509  object,
4510  pointer_default(unique)
4511 ]
4512 interface IOperationsProgressDialog : IUnknown
4513 {
4514  HRESULT StartProgressDialog(
4515  [in] HWND hwndOwner,
4516  [in] OPPROGDLGF flags);
4517  HRESULT StopProgressDialog();
4518  HRESULT SetOperation(
4519  [in] SPACTION action);
4520  HRESULT SetMode(
4521  [in] PDMODE mode);
4522  HRESULT UpdateProgress(
4523  [in] ULONGLONG ullPointsCurrent,
4524  [in] ULONGLONG ullPointsTotal,
4525  [in] ULONGLONG ullSizeCurrent,
4526  [in] ULONGLONG ullSizeTotal,
4527  [in] ULONGLONG ullItemsCurrent,
4528  [in] ULONGLONG ullItemsTotal);
4529  HRESULT UpdateLocations(
4530  [in, optional] IShellItem *psiSource,
4531  [in, optional] IShellItem *psiTarget,
4532  [in, optional] IShellItem *psiItem);
4533  HRESULT ResetTimer();
4534  HRESULT PauseTimer();
4535  HRESULT ResumeTimer();
4536  HRESULT GetMilliseconds(
4537  [out] ULONGLONG *pullElapsed,
4538  [out] ULONGLONG *pullRemaining);
4539  HRESULT GetOperationStatus(
4540  [out] PDOPSTATUS *popstatus);
4541 };
4542 
4543 [
4544  uuid(947aab5f-0a5c-4c13-b4d6-4bf7836fc9f8),
4545  object,
4546  pointer_default(unique)
4547 ]
4548 interface IFileOperation : IUnknown
4549 {
4550  HRESULT Advise(
4551  [in] IFileOperationProgressSink *pfops,
4552  [out] DWORD *pdwCookie);
4553  HRESULT Unadvise(
4554  [in] DWORD dwCookie);
4555  HRESULT SetOperationFlags(
4556  [in] DWORD dwOperationFlags);
4557  HRESULT SetProgressMessage(
4558  [in] LPCWSTR pszMessage);
4559  HRESULT SetProgressDialog(
4560  [in] IOperationsProgressDialog *popd);
4561  HRESULT SetProperties(
4562  [in] IPropertyChangeArray *pproparray);
4563  HRESULT SetOwnerWindow(
4564  [in] HWND hwndOwner);
4565  HRESULT ApplyPropertiesToItem(
4566  [in] IShellItem *psiItem);
4567  HRESULT ApplyPropertiesToItems(
4568  [in] IUnknown *punkItems);
4569  HRESULT RenameItem(
4570  [in] IShellItem *psiItem,
4571  [in] LPCWSTR pszNewName,
4572  [in] IFileOperationProgressSink *pfopsItem);
4573  HRESULT RenameItems(
4574  [in] IUnknown *pUnkItems,
4575  [in] LPCWSTR pszNewName);
4576  HRESULT MoveItem(
4577  [in] IShellItem *psiItem,
4578  [in] IShellItem *psiDestinationFolder,
4579  [in] LPCWSTR pszNewName,
4580  [in] IFileOperationProgressSink *pfopsItem);
4581  HRESULT MoveItems(
4582  [in] IUnknown *punkItems,
4583  [in] IShellItem *psiDestinationFolder);
4584  HRESULT CopyItem(
4585  [in] IShellItem *psiItem,
4586  [in] IShellItem *psiDestinationFolder,
4587  [in] LPCWSTR pszCopyName,
4588  [in] IFileOperationProgressSink *pfopsItem);
4589  HRESULT CopyItems(
4590  [in] IUnknown *punkItems,
4591  [in] IShellItem *psiDestinationFolder);
4592  HRESULT DeleteItem(
4593  [in] IShellItem *psiItem,
4594  [in] IFileOperationProgressSink *pfopsItem);
4595  HRESULT DeleteItems(
4596  [in] IUnknown *punkItems);
4597  HRESULT NewItem(
4598  [in] IShellItem *psiDestinationFolder,
4599  [in] DWORD dwFileAttributes,
4600  [in] LPCWSTR pszName,
4601  [in] LPCWSTR pszTemplateName,
4602  [in] IFileOperationProgressSink *pfopsItem);
4603  HRESULT PerformOperations();
4604  HRESULT GetAnyOperationsAborted(
4605  [out] BOOL *pfAnyOperationsAborted);
4606 };
4607 
4608 [
4609  uuid(6CCB7BE0-6807-11d0-B810-00C04FD706EC),
4610  object,
4611  local,
4612  pointer_default(unique)
4613 ]
4614 interface IShellTaskScheduler : IUnknown
4615 {
4616  HRESULT AddTask(
4617  [in] IRunnableTask *pTask,
4618  [in] REFGUID rtoid,
4619  [in] DWORD_PTR lParam,
4620  [in] DWORD dwPriority);
4621  HRESULT RemoveTasks(
4622  [in] REFGUID rtoid,
4623  [in] DWORD_PTR lParam,
4624  [in] BOOL fWaitIfRunning);
4625  UINT CountTasks(
4626  [in] REFGUID rtoid);
4627  HRESULT Status(
4628  [in] DWORD dwReleaseStatus,
4629  [in] DWORD dwThreadTimeout);
4630 }
4631 
4632 
4633 [
4634  uuid(47c01f95-e185-412c-b5c5-4f27df965aea),
4635  object,
4636  pointer_default(unique)
4637 ]
4638 interface IFolderBandPriv : IUnknown
4639 {
4640  HRESULT SetCascade([in] BOOL fCascade);
4641 
4642  HRESULT SetAccelerators([in] BOOL fAccelerators);
4643 
4644  HRESULT SetNoIcons([in] BOOL fNoIcons);
4645 
4646  HRESULT SetNoText([in] BOOL fNoText);
4647 }
4648 
4649 
4650 #ifdef __REACTOS__
4651 /*****************************************************************************
4652  * IQueryContinue interface
4653  */
4654 
4655 [
4656  uuid(7307055c-b24a-486b-9f25-163e597a28a9),
4657  object,
4658  pointer_default(unique)
4659 ]
4660 interface IQueryContinue : IUnknown
4661 {
4662  // Returns S_OK if the operation should continue, and S_FALSE if not.
4663  HRESULT QueryContinue();
4664 }
4665 
4666 
4667 /*****************************************************************************
4668  * IUserNotification interface
4669  */
4670 
4671 [
4672  uuid(ba9711ba-5893-4787-a7e1-41277151550b),
4673  object,
4674  pointer_default(unique)
4675 ]
4676 interface IUserNotification : IUnknown
4677 {
4678  HRESULT SetBalloonInfo(
4679  [in, unique, string] LPCWSTR pszTitle,
4680  [in, unique, string] LPCWSTR pszText,
4681  [in] DWORD dwInfoFlags);
4682 
4683  HRESULT SetBalloonRetry(
4684  [in] DWORD dwShowTime, // Time intervals in milliseconds
4685  [in] DWORD dwInterval,
4686  [in] UINT cRetryCount);
4687 
4688  HRESULT SetIconInfo(
4689  [in, unique] HICON hIcon,
4690  [in, unique, string] LPCWSTR pszToolTip);
4691 
4692  // Blocks until the notification times out.
4693  HRESULT Show(
4694  [in, unique] IQueryContinue *pqc,
4695  [in] DWORD dwContinuePollInterval);
4696 
4697  HRESULT PlaySound(
4698  [in, string] LPCWSTR pszSoundName);
4699 };
4700 
4701 
4702 /*****************************************************************************
4703  * IUserNotificationCallback interface (Vista+)
4704  */
4705 
4706 [
4707  uuid(19108294-0441-4aff-8013-fa0a730b0bea),
4708  object
4709 ]
4710 interface IUserNotificationCallback : IUnknown
4711 {
4712  HRESULT OnBalloonUserClick([in] POINT * pt);
4713  HRESULT OnLeftClick([in] POINT * pt);
4714  HRESULT OnContextMenu([in] POINT * pt);
4715 };
4716 
4717 
4718 /*****************************************************************************
4719  * IUserNotification2 interface (Vista+)
4720  */
4721 
4722 [
4723  uuid(215913cc-57eb-4fab-ab5a-e5fa7bea2a6c),
4724  object,
4725  pointer_default(unique)
4726 ]
4727 interface IUserNotification2 : IUnknown
4728 {
4729  HRESULT SetBalloonInfo(
4730  [in, unique, string] LPCWSTR pszTitle,
4731  [in, unique, string] LPCWSTR pszText,
4732  [in] DWORD dwInfoFlags);
4733 
4734  HRESULT SetBalloonRetry(
4735  [in] DWORD dwShowTime, // Time intervals in milliseconds
4736  [in] DWORD dwInterval,
4737  [in] UINT cRetryCount);
4738 
4739  HRESULT SetIconInfo(
4740  [in, unique] HICON hIcon,
4741  [in, unique, string] LPCWSTR pszToolTip);
4742 
4743  // Blocks until the notification times out.
4744  HRESULT Show(
4745  [in, unique] IQueryContinue *pqc,
4746  [in] DWORD dwContinuePollInterval,
4747  [in, unique] IUserNotificationCallback *pSink);
4748 
4749  HRESULT PlaySound(
4750  [in, string] LPCWSTR pszSoundName);
4751 };
4752 
4753 /*****************************************************************************
4754  * IItemNameLimits interface
4755  */
4756 
4757 [
4758  uuid(1df0d7f1-b267-4d28-8b10-12e23202a5c4)
4759 ]
4760 interface IItemNameLimits : IUnknown
4761 {
4762  HRESULT GetValidCharacters(
4763  [out, string] LPWSTR *ppwszValidChars,
4764  [out, string] LPWSTR *ppwszInvalidChars);
4765 
4766  HRESULT GetMaxLength(
4767  [in, string] LPCWSTR pszName,
4768  [out] int *piMaxNameLen);
4769 };
4770 
4771 #endif // __REACTOS__
DBIM_BKCOLOR struct tagDESKBANDINFO DESKBANDINFO
DWORD dwMask
Definition: shobjidl.idl:2640
#define EnableModeless(type)
Definition: ordinal.c:3400
BOOL WINAPI SHIM_OBJ_NAME() Notify(DWORD fdwReason, PVOID ptr)
#define TranslateAccelerator