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