/* * COM interfaces for shell objects * * Copyright (C) 1999 Juergen Schmied * Copyright (C) 2003 Alexandre Julliard * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ import "objidl.idl"; import "oleidl.idl"; import "oaidl.idl"; import "docobj.idl"; import "shtypes.idl"; import "servprov.idl"; import "comcat.idl"; import "propidl.idl"; /* FIXME: import "prsht.idl";*/ import "msxml.idl"; import "wtypes.idl"; import "propsys.idl"; import "objectarray.idl"; /* FIXME: import "structuredquery.idl"; */ cpp_quote("/* FIXME: #include <sherrors.h> */") /***************************************************************************** * IPersistFolder interface */ [ object, uuid(000214ea-0000-0000-c000-000000000046), pointer_default(unique) ] interface IPersistFolder : IPersist { typedef IPersistFolder *LPPERSISTFOLDER; HRESULT Initialize( [in] LPCITEMIDLIST pidl ); } /***************************************************************************** * IPersistFolder2 interface */ [ object, uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f), pointer_default(unique) ] interface IPersistFolder2 : IPersistFolder { typedef IPersistFolder2 *LPPERSISTFOLDER2; HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl ); } /***************************************************************************** * IPersistIDList interface */ [ object, uuid(1079acfc-29bd-11d3-8e0d-00c04f6837d5), pointer_default(unique) ] interface IPersistIDList : IPersist { HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); HRESULT GetIDList( [out] LPITEMIDLIST *ppidl ); } /***************************************************************************** * IEnumIDList interface */ [ object, uuid(000214f2-0000-0000-c000-000000000046), pointer_default(unique) ] interface IEnumIDList : IUnknown { typedef IEnumIDList *LPENUMIDLIST; HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt, [out] ULONG *pceltFetched); HRESULT Skip( [in] ULONG celt ); HRESULT Reset(); HRESULT Clone( [out] IEnumIDList **ppenum ); } /***************************************************************************** * IShellPropSheetExt interface */ cpp_quote("#if 0") typedef LPARAM LPFNSVADDPROPSHEETPAGE; cpp_quote("#else") cpp_quote("#include <prsht.h>") cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;") cpp_quote("#endif") [ object, uuid(000214E9-0000-0000-C000-000000000046), pointer_default(unique), local ] interface IShellPropSheetExt : IUnknown { enum tagSHELLPROPSHEETEXTPAGEID { EXPPS_FILETYPES = 0x1 }; typedef UINT EXPPS; HRESULT AddPages( [in] LPFNSVADDPROPSHEETPAGE pfnAddPage, [in] LPARAM lParam); HRESULT ReplacePage( [in] EXPPS uPageID, [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith, [in] LPARAM lParam); } typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT; /***************************************************************************** * IShellFolder interface */ [ object, uuid(000214e6-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellFolder : IUnknown { typedef IShellFolder * LPSHELLFOLDER; typedef enum tagSHGDN { SHGDN_NORMAL = 0, SHGDN_INFOLDER = 1, SHGDN_FOREDITING = 0x1000, SHGDN_INCLUDE_NONFILESYS = 0x2000, SHGDN_FORADDRESSBAR = 0x4000, SHGDN_FORPARSING = 0x8000 } SHGNO; typedef DWORD SHGDNF; enum tagSHCONTF { SHCONTF_CHECKING_FOR_CHILDREN = 0x00000010, SHCONTF_FOLDERS = 0x00000020, SHCONTF_NONFOLDERS = 0x00000040, SHCONTF_INCLUDEHIDDEN = 0x00000080, SHCONTF_INIT_ON_FIRST_NEXT = 0x00000100, SHCONTF_NETPRINTERSRCH = 0x00000200, SHCONTF_SHAREABLE = 0x00000400, SHCONTF_STORAGE = 0x00000800, SHCONTF_NAVIGATION_ENUM = 0x00001000, SHCONTF_FASTITEMS = 0x00002000, SHCONTF_FLATLIST = 0x00004000, SHCONTF_ENABLE_ASYNC = 0x00008000, SHCONTF_INCLUDESUPERHIDDEN = 0x00010000 }; typedef DWORD SHCONTF; cpp_quote("#define SFGAO_CANCOPY DROPEFFECT_COPY") cpp_quote("#define SFGAO_CANMOVE DROPEFFECT_MOVE") cpp_quote("#define SFGAO_CANLINK DROPEFFECT_LINK") cpp_quote("#define SFGAO_STORAGE 0x00000008L") cpp_quote("#define SFGAO_CANRENAME 0x00000010L") cpp_quote("#define SFGAO_CANDELETE 0x00000020L") cpp_quote("#define SFGAO_HASPROPSHEET 0x00000040L") cpp_quote("#define SFGAO_DROPTARGET 0x00000100L") cpp_quote("#define SFGAO_CAPABILITYMASK 0x00000177L") cpp_quote("#define SFGAO_SYSTEM 0x00001000L") cpp_quote("#define SFGAO_ENCRYPTED 0x00002000L") cpp_quote("#define SFGAO_ISSLOW 0x00004000L") cpp_quote("#define SFGAO_GHOSTED 0x00008000L") cpp_quote("#define SFGAO_LINK 0x00010000L") cpp_quote("#define SFGAO_SHARE 0x00020000L") cpp_quote("#define SFGAO_READONLY 0x00040000L") cpp_quote("#define SFGAO_HIDDEN 0x00080000L") cpp_quote("#define SFGAO_DISPLAYATTRMASK 0x000FC000L") cpp_quote("#define SFGAO_FILESYSANCESTOR 0x10000000L") cpp_quote("#define SFGAO_FOLDER 0x20000000L") cpp_quote("#define SFGAO_FILESYSTEM 0x40000000L") cpp_quote("#define SFGAO_HASSUBFOLDER 0x80000000L") cpp_quote("#define SFGAO_CONTENTSMASK 0x80000000L") cpp_quote("#define SFGAO_VALIDATE 0x01000000L") cpp_quote("#define SFGAO_REMOVABLE 0x02000000L") cpp_quote("#define SFGAO_COMPRESSED 0x04000000L") cpp_quote("#define SFGAO_BROWSABLE 0x08000000L") cpp_quote("#define SFGAO_NONENUMERATED 0x00100000L") cpp_quote("#define SFGAO_NEWCONTENT 0x00200000L") cpp_quote("#define SFGAO_CANMONIKER 0x00400000L") cpp_quote("#define SFGAO_HASSTORAGE 0x00400000L") cpp_quote("#define SFGAO_STREAM 0x00400000L") cpp_quote("#define SFGAO_STORAGEANCESTOR 0x00800000L") cpp_quote("#define SFGAO_STORAGEGAPMASK 0x70C50008L") cpp_quote("#define SFGAO_PKEYSFGAOMASK 0x81044000L") typedef ULONG SFGAOF; HRESULT ParseDisplayName( [in] HWND hwndOwner, [in] LPBC pbcReserved, [in, string] LPOLESTR lpszDisplayName, [out] ULONG *pchEaten, [out] LPITEMIDLIST *ppidl, [in, out, unique] ULONG *pdwAttributes); HRESULT EnumObjects( [in] HWND hwndOwner, [in] SHCONTF grfFlags, [out] IEnumIDList **ppenumIDList); HRESULT BindToObject( [in] LPCITEMIDLIST pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut); HRESULT BindToStorage( [in] LPCITEMIDLIST pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvObj); HRESULT CompareIDs( [in] LPARAM lParam, [in] LPCITEMIDLIST pidl1, [in] LPCITEMIDLIST pidl2); HRESULT CreateViewObject( [in] HWND hwndOwner, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut); HRESULT GetAttributesOf( [in] UINT cidl, [in, size_is(cidl)] LPCITEMIDLIST *apidl, [in, out] SFGAOF *rgfInOut); HRESULT GetUIObjectOf( [in] HWND hwndOwner, [in] UINT cidl, [in, size_is(cidl)] LPCITEMIDLIST *apidl, [in] REFIID riid, [in, out, unique] UINT *prgfInOut, [out, iid_is(riid)] void **ppvOut); HRESULT GetDisplayNameOf( [in] LPCITEMIDLIST pidl, [in] SHGDNF uFlags, [out] STRRET *lpName); HRESULT SetNameOf( [in] HWND hwnd, [in] LPCITEMIDLIST pidl, [in, string] LPCOLESTR lpszName, [in] SHGDNF uFlags, [out] LPITEMIDLIST *ppidlOut); } /***************************************************************************** * IEnumExtraSearch interface */ [ object, uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13), pointer_default(unique) ] interface IEnumExtraSearch : IUnknown { typedef IEnumExtraSearch *LPENUMEXTRASEARCH; typedef struct { GUID guidSearch; WCHAR wszFriendlyName[80]; /* *WCHAR wszMenuText[80]; *WCHAR wszHelpText[MAX_PATH]; */ WCHAR wszUrl[2084]; /* *WCHAR wszIcon[MAX_PATH+10]; *WCHAR wszGreyIcon[MAX_PATH+10]; *WCHAR wszClrIcon[MAX_PATH+10]; */ } EXTRASEARCH, *LPEXTRASEARCH; HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt, [out] ULONG *pceltFetched); HRESULT Skip( [in] ULONG celt ); HRESULT Reset(); HRESULT Clone( [out] IEnumExtraSearch **ppenum ); } /***************************************************************************** * IShellFolder2 interface */ [ object, uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1), pointer_default(unique) ] interface IShellFolder2 : IShellFolder { typedef struct { GUID fmtid; DWORD pid; } SHCOLUMNID, *LPSHCOLUMNID; typedef const SHCOLUMNID *LPCSHCOLUMNID; HRESULT GetDefaultSearchGUID( [out] GUID *lpguid ); HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum ); HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay ); HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags ); HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv); HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd); HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid ); } /***************************************************************************** * IShellItem interface */ [ object, uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe), pointer_default(unique) ] interface IShellItem : IUnknown { typedef [v1_enum] enum { SIGDN_NORMALDISPLAY = 0, SIGDN_PARENTRELATIVEPARSING = 0x80018001, SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000, SIGDN_PARENTRELATIVEEDITING = 0x80031001, SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000, SIGDN_FILESYSPATH = 0x80058000, SIGDN_URL = 0x80068000, SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001, SIGDN_PARENTRELATIVE = 0x80080001, SIGDN_PARENTRELATIVEFORUI = 0x80094001, } SIGDN; /* & 0xFFFF => SHGDN */ [v1_enum] enum _SICHINTF { SICHINT_DISPLAY = 0x00000000, SICHINT_CANONICAL = 0x10000000, SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000, SICHINT_ALLFIELDS = 0x80000000 }; typedef DWORD SICHINTF; HRESULT BindToHandler( [in] IBindCtx *pbc, [in] REFGUID rbhid, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut); HRESULT GetParent( [out] IShellItem **ppsi ); HRESULT GetDisplayName( [in] SIGDN sigdnName, [out] LPWSTR *ppszName); HRESULT GetAttributes( [in] SFGAOF sfgaoMask, [out] SFGAOF *psfgaoAttribs); HRESULT Compare( [in] IShellItem *psi, [in] SICHINTF hint, [out] int *piOrder); } /***************************************************************************** * IShellItem2 interface */ [ object, uuid(7E9FB0D3-919F-4307-AB2E-9B1860310C93), pointer_default(unique) ] interface IShellItem2 : IShellItem { HRESULT GetPropertyStore( [in] GETPROPERTYSTOREFLAGS flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT GetPropertyStoreWithCreateObject( [in] GETPROPERTYSTOREFLAGS flags, [in] IUnknown *punkCreateObject, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT GetPropertyStoreForKeys( [in, size_is(cKeys)] const PROPERTYKEY *rgKeys, [in] UINT cKeys, [in] GETPROPERTYSTOREFLAGS flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT GetPropertyDescriptionList( [in] REFPROPERTYKEY keyType, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT Update( [in, unique] IBindCtx *pbc); HRESULT GetProperty( [in] REFPROPERTYKEY key, [out] PROPVARIANT *ppropvar); HRESULT GetCLSID( [in] REFPROPERTYKEY key, [out] CLSID *pclsid); HRESULT GetFileTime ( [in] REFPROPERTYKEY key, [out] FILETIME *pft); HRESULT GetInt32( [in] REFPROPERTYKEY key, [out] int *pi); HRESULT GetString( [in] REFPROPERTYKEY key, [out, string] LPWSTR *ppsz); HRESULT GetUInt32( [in] REFPROPERTYKEY key, [out] ULONG *pui); HRESULT GetUInt64( [in] REFPROPERTYKEY key, [out] ULONGLONG *pull); HRESULT GetBool( [in] REFPROPERTYKEY key, [out] BOOL *pf); } typedef [v1_enum] enum tagNWMF { NWMF_UNLOADING = 0x00000001, NWMF_USERINITED = 0x00000002, NWMF_FIRST = 0x00000004, NWMF_OVERRIDEKEY = 0x00000008, NWMF_SHOWHELP = 0x00000010, NWMF_HTMLDIALOG = 0x00000020, NWMF_FROMDIALOGCHILD = 0x00000040, NWMF_USERREQUESTED = 0x00000080, NWMF_USERALLOWED = 0x00000100, NWMF_FORCEWINDOW = 0x00010000, NWMF_FORCETAB = 0x00020000, NWMF_SUGGESTWINDOW = 0x00040000, NWMF_SUGGESTTAB = 0x00080000, NWMF_INACTIVETAB = 0x00100000, } NWMF; [ uuid(d2bc4c84-3f72-4a52-a604-7bcbf3982cbb), object, pointer_default(unique) ] interface INewWindowManager : IUnknown { HRESULT EvaluateNewWindow( [in, string] LPCWSTR pszUrl, [in, string] LPCWSTR pszName, [in, string] LPCWSTR pszUrlContext, [in, string] LPCWSTR pszFeatures, [in] BOOL fReplace, [in] DWORD dwFlags, [in] DWORD dwUserActionTime); } cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager") /***************************************************************************** * IEnumShellItems interface */ [ object, uuid(70629033-E363-4A28-A567-0DB78006E6D7), pointer_default(unique) ] interface IEnumShellItems : IUnknown { [local] HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt, [out] ULONG *pceltFetched); [call_as(Next)] HRESULT RemoteNext( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt, [out] ULONG *pceltFetched); HRESULT Skip( [in] ULONG celt); HRESULT Reset(); HRESULT Clone( [out] IEnumShellItems **ppenum); } /***************************************************************************** * IShellItemArray interface */ [ object, uuid(B63EA76D-1F85-456F-A19C-48159EFA858B), pointer_default(unique) ] interface IShellItemArray : IUnknown { typedef [v1_enum] enum SIATTRIBFLAGS { SIATTRIBFLAGS_AND = 0x0001, SIATTRIBFLAGS_OR = 0x0002, SIATTRIBFLAGS_APPCOMPAT = 0x0003, SIATTRIBFLAGS_MASK = 0x0003, SIATTRIBFLAGS_ALLITEMS = 0x4000 } SIATTRIBFLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)") HRESULT BindToHandler( [in, unique] IBindCtx *pbc, [in] REFGUID bhid, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut); HRESULT GetPropertyStore( [in] GETPROPERTYSTOREFLAGS flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT GetPropertyDescriptionList( [in] REFPROPERTYKEY keyType, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT GetAttributes( [in] SIATTRIBFLAGS AttribFlags, [in] SFGAOF sfgaoMask, [out] SFGAOF *psfgaoAttribs); HRESULT GetCount( [out] DWORD *pdwNumItems); HRESULT GetItemAt( [in] DWORD dwIndex, [out] IShellItem **ppsi); HRESULT EnumItems( [out] IEnumShellItems **ppenumShellItems); } typedef [v1_enum] enum DATAOBJ_GET_ITEM_FLAGS { DOGIF_DEFAULT = 0x0, DOGIF_TRAVERSE_LINK = 0x1, DOGIF_NO_HDROP = 0x2, DOGIF_NO_URL = 0x4, DOGIF_ONLY_IF_ONE = 0x8 } DATAOBJ_GET_ITEM_FLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DATAOBJ_GET_ITEM_FLAGS)") cpp_quote("HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName);") cpp_quote("HRESULT WINAPI SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv);") cpp_quote("HRESULT WINAPI SHCreateItemFromIDList(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv);") cpp_quote("HRESULT WINAPI SHCreateItemFromRelativeName(IShellItem *parent, PCWSTR name, IBindCtx *pbc, REFIID riid, void **ppv);") cpp_quote("HRESULT WINAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv);") cpp_quote("HRESULT WINAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl);") cpp_quote("HRESULT WINAPI SHGetItemFromObject(IUnknown *punk, REFIID riid, void **ppv);") cpp_quote("HRESULT WINAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, IShellFolder* psf, UINT cidl, PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray);") cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv);") cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromIDLists(UINT cidl, PCIDLIST_ABSOLUTE_ARRAY pidl_array, IShellItemArray **psia);") cpp_quote("HRESULT WINAPI SHCreateItemInKnownFolder(REFKNOWNFOLDERID rfid, DWORD flags, PCWSTR filename, REFIID riid, void **ppv);") cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromDataObject(IDataObject *pdo, REFIID riid, void **ppv);") /***************************************************************************** * IShellItemFilter interface */ [ object, uuid(2659B475-EEB8-48B7-8F07-B378810F48CF), pointer_default(unique) ] interface IShellItemFilter : IUnknown { HRESULT IncludeItem( [in] IShellItem *psi); HRESULT GetEnumFlagsForItem( [in] IShellItem *psi, [out] SHCONTF *pgrfFlags); } /***************************************************************************** * FOLDERSETTINGS */ typedef char *LPVIEWSETTINGS; typedef [v1_enum] enum FOLDERFLAGS { FWF_AUTOARRANGE = 0x00000001, FWF_ABBREVIATEDNAMES = 0x00000002, FWF_SNAPTOGRID = 0x00000004, FWF_OWNERDATA = 0x00000008, FWF_BESTFITWINDOW = 0x00000010, FWF_DESKTOP = 0x00000020, FWF_SINGLESEL = 0x00000040, FWF_NOSUBFOLDERS = 0x00000080, FWF_TRANSPARENT = 0x00000100, FWF_NOCLIENTEDGE = 0x00000200, FWF_NOSCROLL = 0x00000400, FWF_ALIGNLEFT = 0x00000800, FWF_NOICONS = 0x00001000, FWF_SHOWSELALWAYS = 0x00002000, FWF_NOVISIBLE = 0x00004000, FWF_SINGLECLICKACTIVATE = 0x00008000, FWF_NOWEBVIEW = 0x00010000, FWF_HIDEFILENAMES = 0x00020000, FWF_CHECKSELECT = 0x00040000, FWF_NOENUMREFRESH = 0x00080000, FWF_NOGROUPING = 0x00100000, FWF_FULLROWSELECT = 0x00200000, FWF_NOFILTERS = 0x00400000, FWF_NOCOLUMNHEADER = 0x00800000, FWF_NOHEADERINALLVIEWS = 0x01000000, FWF_EXTENDEDTILES = 0x02000000, FWF_TRICHECKSELECT = 0x04000000, FWF_AUTOCHECKSELECT = 0x08000000, FWF_NOBROWSERVIEWSTATE = 0x10000000, FWF_SUBSETGROUPS = 0x20000000, FWF_USESEARCHFOLDER = 0x40000000, FWF_ALLOWRTLREADING = 0x80000000 } FOLDERFLAGS; typedef [v1_enum] enum FOLDERVIEWMODE { FVM_AUTO =-1, FVM_ICON = 1, FVM_FIRST = FVM_ICON, FVM_SMALLICON = 2, FVM_LIST = 3, FVM_DETAILS = 4, FVM_THUMBNAIL = 5, FVM_TILE = 6, FVM_THUMBSTRIP = 7, FVM_CONTENT = 8, FVM_LAST = FVM_CONTENT } FOLDERVIEWMODE; typedef struct { UINT ViewMode; UINT fFlags; } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS; typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS; /***************************************************************************** * IShellIcon interface */ [ uuid(000214e5-0000-0000-c000-000000000046), object, pointer_default(unique) ] interface IShellIcon : IUnknown { HRESULT GetIconOf( [in] PCUITEMID_CHILD pidl, [in] UINT flags, [out] int *pIconIndex); } /***************************************************************************** * IShellView interface */ interface IShellBrowser; /* forward declaration */ [ object, uuid(000214e3-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellView : IOleWindow { typedef IShellView *LPSHELLVIEW; typedef [v1_enum] enum _SVSIF { SVSI_DESELECT = 0x00000000, SVSI_SELECT = 0x00000001, SVSI_EDIT = 0x00000003, SVSI_DESELECTOTHERS = 0x00000004, SVSI_ENSUREVISIBLE = 0x00000008, SVSI_FOCUSED = 0x00000010, SVSI_TRANSLATEPT = 0x00000020, SVSI_SELECTIONMARK = 0x00000040, SVSI_POSITIONITEM = 0x00000080, SVSI_CHECK = 0x00000100, SVSI_CHECK2 = 0x00000200, SVSI_KEYBOARDSELECT = 0x00000401, SVSI_NOTAKEFOCUS = 0x40000000, } _SVSIF; cpp_quote("#define SVSI_NOSTATECHANGE 0x80000000") typedef UINT SVSIF; typedef [v1_enum] enum _SVGIO { SVGIO_BACKGROUND = 0x00000000, SVGIO_SELECTION = 0x00000001, SVGIO_ALLVIEW = 0x00000002, SVGIO_CHECKED = 0x00000003, SVGIO_TYPE_MASK = 0x0000000f, SVGIO_FLAG_VIEWORDER = 0x80000000, } _SVGIO; typedef INT SVGIO; typedef [v1_enum] enum SVUIA_STATUS { SVUIA_DEACTIVATE = 0, SVUIA_ACTIVATE_NOFOCUS = 1, SVUIA_ACTIVATE_FOCUS = 2, SVUIA_INPLACEACTIVATE = 3 } SVUIA_STATUS; HRESULT TranslateAccelerator( [in] MSG *pmsg ); HRESULT EnableModeless( [in] BOOL fEnable ); HRESULT UIActivate( [in] UINT uState ); HRESULT Refresh(); HRESULT CreateViewWindow( [in] IShellView *psvPrevious, [in] LPCFOLDERSETTINGS lpfs, [in] IShellBrowser *psb, [out] RECT *prcView, [out] HWND *phWnd); HRESULT DestroyViewWindow(); HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs ); [local] HRESULT AddPropertySheetPages( [in] DWORD dwReserved, [in] LPFNSVADDPROPSHEETPAGE pfn, [in] LPARAM lparam); HRESULT SaveViewState(); HRESULT SelectItem( [in] LPCITEMIDLIST pidlItem, [in] SVSIF uFlags); HRESULT GetItemObject( [in] UINT uItem, [in] REFIID riid, [out, iid_is(riid)] void **ppv); } [ object, uuid(88e39e80-3578-11cf-ae69-08002b2e1262), pointer_default(unique) ] interface IShellView2 : IShellView { typedef GUID SHELLVIEWID; cpp_quote("#include <pshpack8.h>") typedef struct _SV2CVW2_PARAMS { DWORD cbSize; IShellView *psvPrev; LPCFOLDERSETTINGS pfs; IShellBrowser *psbOwner; RECT *prcView; SHELLVIEWID const *pvid; HWND hwndView; } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS; cpp_quote("#include <poppack.h>") HRESULT GetView( [in, out] SHELLVIEWID *view_guid, [in] ULONG view_type ); HRESULT CreateViewWindow2( [in] LPSV2CVW2_PARAMS view_params ); HRESULT HandleRename( [in] LPCITEMIDLIST new_pidl ); HRESULT SelectAndPositionItem( [in] LPCITEMIDLIST item, [in] UINT flags, [in] POINT *point ); } [ object, uuid(ec39fa88-f8af-41c5-8421-38bed28f4673), pointer_default(unique) ] interface IShellView3 : IShellView2 { [v1_enum] enum _SV3CVW3_FLAGS { SV3CVW3_DEFAULT = 0x00000000, SV3CVW3_NONINTERACTIVE = 0x00000001, SV3CVW3_FORCEVIEWMODE = 0x00000002, SV3CVW3_FORCEFOLDERFLAGS = 0x00000004 }; typedef DWORD SV3CVW3_FLAGS; HRESULT CreateViewWindow3( [in] IShellBrowser *owner, [in, unique] IShellView *prev_view, [in] SV3CVW3_FLAGS view_flags, [in] FOLDERFLAGS mask, [in] FOLDERFLAGS flags, [in] FOLDERVIEWMODE mode, [in, unique] const SHELLVIEWID *view_id, [in] const RECT *rect, [out] HWND *hwnd); } /***************************************************************************** * IFolderView interface */ [ uuid(cde725b0-ccc9-4519-917e-325d72fab4ce), object, pointer_default(unique) ] interface IFolderView : IUnknown { HRESULT GetCurrentViewMode( [out] UINT *mode ); HRESULT SetCurrentViewMode( [in] UINT mode ); HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv ); HRESULT Item( [in] int index, [out] PITEMID_CHILD *ppidl ); HRESULT ItemCount( [in] UINT flags, [out] int *items ); HRESULT Items( [in] UINT flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv ); HRESULT GetSelectionMarkedItem( [out] int *item ); HRESULT GetFocusedItem( [out] int *item ); HRESULT GetItemPosition( [in] PCUITEMID_CHILD pidl, [out] POINT* ppt ); HRESULT GetSpacing( [in, out, unique] POINT* pt ); HRESULT GetDefaultSpacing( [out] POINT* pt ); HRESULT GetAutoArrange(); HRESULT SelectItem( [in] int item, [in] DWORD flags ); HRESULT SelectAndPositionItems( [in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in, unique, size_is(cidl)] POINT* apt, [in] DWORD flags ); } [v1_enum] enum tagSORTDIRECTION { SORT_DESCENDING = -1, SORT_ASCENDING = 1 }; typedef int SORTDIRECTION; typedef struct SORTCOLUMN { PROPERTYKEY propkey; SORTDIRECTION direction; } SORTCOLUMN; typedef [v1_enum] enum FVTEXTTYPE { FVST_EMPTYTEXT = 0 } FVTEXTTYPE; [ uuid(1af3a467-214f-4298-908e-06b03e0b39f9), object, pointer_default(unique) ] interface IFolderView2 : IFolderView { HRESULT SetGroupBy( [in] REFPROPERTYKEY key, [in] BOOL ascending); [local] HRESULT GetGroupBy( [out] PROPERTYKEY *pkey, [out] BOOL *ascending); [call_as(GetGroupBy)] HRESULT RemoteGetGroupBy( [out] PROPERTYKEY *pkey, [out] BOOL *ascending); HRESULT SetViewProperty( [in] PCUITEMID_CHILD pidl, [in] REFPROPERTYKEY propkey, [in] REFPROPVARIANT propvar); HRESULT GetViewProperty( [in] PCUITEMID_CHILD pidl, [in] REFPROPERTYKEY propkey, [out] PROPVARIANT *propvar); HRESULT SetTileViewProperties( [in] PCUITEMID_CHILD pidl, [in, string] LPCWSTR prop_list); HRESULT SetExtendedTileViewProperties( [in] PCUITEMID_CHILD pidl, [in, string] LPCWSTR prop_list); HRESULT SetText( [in] FVTEXTTYPE type, [in] LPCWSTR text); HRESULT SetCurrentFolderFlags( [in] DWORD mask, [in] DWORD flags); HRESULT GetCurrentFolderFlags([out] DWORD *flags); HRESULT GetSortColumnCount([out] int *columns); HRESULT SetSortColumns( [in, size_is(count)] const SORTCOLUMN *columns, [in] int count); HRESULT GetSortColumns( [out, size_is(count)] SORTCOLUMN *columns, [in] int count); HRESULT GetItem( [in] int ittem, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT GetVisibleItem( [in] int start, [in] BOOL previous, [out] int *item); HRESULT GetSelectedItem( [in] int start, [out] int *item); HRESULT GetSelection( [in] BOOL none_implies_folder, [out] IShellItemArray **array); HRESULT GetSelectionState( [in] PCUITEMID_CHILD pidl, [out] DWORD *flags); HRESULT InvokeVerbOnSelection([in, unique, string] LPCSTR verb); HRESULT SetViewModeAndIconSize( [in] FOLDERVIEWMODE mode, [in] int size); HRESULT GetViewModeAndIconSize( [out] FOLDERVIEWMODE *mode, [out] int *size); HRESULT SetGroupSubsetCount([in] UINT visible_rows); HRESULT GetGroupSubsetCount([out] UINT *visible_rows); HRESULT SetRedraw([in] BOOL redraw); HRESULT IsMoveInSameFolder(); HRESULT DoRename(); } /***************************************************************************** * IShellBrowser interface */ [ object, uuid(000214e2-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellBrowser : IOleWindow { typedef IShellBrowser *LPSHELLBROWSER; cpp_quote("#define SBSP_DEFBROWSER 0x00000000") cpp_quote("#define SBSP_SAMEBROWSER 0x00000001") cpp_quote("#define SBSP_NEWBROWSER 0x00000002") cpp_quote("#define SBSP_DEFMODE 0x00000000") cpp_quote("#define SBSP_OPENMODE 0x00000010") cpp_quote("#define SBSP_EXPLOREMODE 0x00000020") cpp_quote("#define SBSP_HELPMODE 0x00000040") cpp_quote("#define SBSP_NOTRANSFERHIST 0x00000080") cpp_quote("#define SBSP_ABSOLUTE 0x00000000") cpp_quote("#define SBSP_RELATIVE 0x00001000") cpp_quote("#define SBSP_PARENT 0x00002000") cpp_quote("#define SBSP_NAVIGATEBACK 0x00004000") cpp_quote("#define SBSP_NAVIGATEFORWARD 0x00008000") cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE 0x00010000") cpp_quote("#define SBSP_KEEPSAMETEMPLATE 0x00020000") cpp_quote("#define SBSP_KEEPWORDWHEELTEXT 0x00040000") cpp_quote("#define SBSP_ACTIVATE_NOFOCUS 0x00080000") cpp_quote("#define SBSP_CREATENOHISTORY 0x00100000") cpp_quote("#define SBSP_PLAYNOSOUND 0x00200000") cpp_quote("#define SBSP_CALLERUNTURUSTED 0x00800000") cpp_quote("#define SBSP_TRUSTFIRSTDOWNLOAD 0x01000000") cpp_quote("#define SBSP_UNTRUSTEDFORDOWNLOAD 0x02000000") cpp_quote("#define SBSP_NOAUTOSELECT 0x04000000") cpp_quote("#define SBSP_WRITENOHISTORY 0x08000000") cpp_quote("#define SBSP_TRUSTEDFORACTIVEX 0x10000000") cpp_quote("#define SBSP_FEEDNAVIGATION 0x20000000") cpp_quote("#define SBSP_REDIRECT 0x40000000") cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000") cpp_quote("#define FCW_STATUS 0x0001") cpp_quote("#define FCW_TOOLBAR 0x0002") cpp_quote("#define FCW_TREE 0x0003") cpp_quote("#define FCW_INTERNETBAR 0x0006") cpp_quote("#define FCW_PROGRESS 0x0008") cpp_quote("#define FCT_MERGE 0x0001") cpp_quote("#define FCT_CONFIGABLE 0x0002") cpp_quote("#define FCT_ADDTOEND 0x0004") cpp_quote("#if 0") typedef LPARAM LPTBBUTTONSB; cpp_quote("#else") cpp_quote("#include <commctrl.h>") cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;") cpp_quote("#endif") HRESULT InsertMenusSB( [in] HMENU hmenuShared, [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths); HRESULT SetMenuSB( [in] HMENU hmenuShared, [in] HOLEMENU holemenuReserved, [in] HWND hwndActiveObject); HRESULT RemoveMenusSB( [in] HMENU hmenuShared ); HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText ); HRESULT EnableModelessSB( [in] BOOL fEnable ); HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID ); HRESULT BrowseObject( [in] LPCITEMIDLIST pidl, [in] UINT wFlags); HRESULT GetViewStateStream( [in] DWORD grfMode, [out] IStream **ppStrm); HRESULT GetControlWindow( [in] UINT id, [out] HWND *phwnd); [local] HRESULT SendControlMsg( [in] UINT id, [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam, [in] LRESULT *pret); HRESULT QueryActiveShellView( [out] IShellView **ppshv ); HRESULT OnViewWindowActive( [in] IShellView *pshv ); [local] HRESULT SetToolbarItems( [in] LPTBBUTTONSB lpButtons, [in] UINT nButtons, [in] UINT uFlags); } /***************************************************************************** * IShellLinkA interface */ [ object, uuid(000214ee-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellLinkA : IUnknown { typedef [v1_enum] enum SLR_FLAGS { SLR_NO_UI = 0x0001, SLR_ANY_MATCH = 0x0002, SLR_UPDATE = 0x0004, SLR_NOUPDATE = 0x0008, SLR_NOSEARCH = 0x0010, SLR_NOTRACK = 0x0020, SLR_NOLINKINFO = 0x0040, SLR_INVOKE_MSI = 0x0080, SLR_NO_UI_WITH_MSG_PUMP = 0x0101, SLR_OFFER_DELETE_WITHOUT_FILE = 0x0200, SLR_KNOWNFOLDER = 0x0400, SLR_MACHINE_IN_LOCAL_TARGET = 0x0800, SLR_UPDATE_MACHINE_AND_SID = 0x1000, SLR_NO_OBJECT_ID = 0x2000 } SLR_FLAGS; typedef [v1_enum] enum SLGP_FLAGS { SLGP_SHORTPATH = 0x0001, SLGP_UNCPRIORITY = 0x0002, SLGP_RAWPATH = 0x0004, SLGP_RELATIVEPRIORITY = 0x0008 } SLGP_FLAGS; HRESULT GetPath( [out, size_is(cch)] LPSTR pszFile, [in] int cch, [in, out, unique] WIN32_FIND_DATAA *pfd, [in] DWORD fFlags); HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); HRESULT GetDescription( [out, size_is(cch)] LPSTR pszName, [in] int cch); HRESULT SetDescription( [in] LPCSTR pszName ); HRESULT GetWorkingDirectory( [out, size_is(cch)] LPSTR pszDir, [in] int cch); HRESULT SetWorkingDirectory( [in] LPCSTR pszDir ); HRESULT GetArguments( [out, size_is(cch)] LPSTR pszArgs, [in] int cch); HRESULT SetArguments( [in] LPCSTR pszArgs ); HRESULT GetHotkey( [out] WORD *pwHotkey ); HRESULT SetHotkey( [in] WORD wHotkey ); HRESULT GetShowCmd( [out] int *piShowCmd ); HRESULT SetShowCmd( [in] int iShowCmd ); HRESULT GetIconLocation( [out, size_is(cch)] LPSTR pszIconPath, [in] int cch, [out] int *piIcon); HRESULT SetIconLocation( [in] LPCSTR pszIconPath, [in] int iIcon); HRESULT SetRelativePath( [in] LPCSTR pszPathRel, [in] DWORD dwReserved); HRESULT Resolve( [in] HWND hwnd, [in] DWORD fFlags); HRESULT SetPath( [in] LPCSTR pszFile ); } /***************************************************************************** * IShellLinkW interface */ [ object, uuid(000214f9-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellLinkW : IUnknown { HRESULT GetPath( [out, size_is(cch)] LPWSTR pszFile, [in] int cch, [in, out] WIN32_FIND_DATAW *pfd, [in] DWORD fFlags); HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); HRESULT GetDescription( [out, size_is(cch)] LPWSTR pszName, [in] int cch); HRESULT SetDescription( [in] LPCWSTR pszName ); HRESULT GetWorkingDirectory( [out, size_is(cch)] LPWSTR pszDir, [in] int cch); HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir ); HRESULT GetArguments( [out, size_is(cch)] LPWSTR pszArgs, [in] int cch); HRESULT SetArguments( [in] LPCWSTR pszArgs ); HRESULT GetHotkey( [out] WORD *pwHotkey ); HRESULT SetHotkey( [in] WORD wHotkey ); HRESULT GetShowCmd( [out] int *piShowCmd ); HRESULT SetShowCmd( [in] int iShowCmd ); HRESULT GetIconLocation( [out, size_is(cch)] LPWSTR pszIconPath, [in] int cch, [out] int *piIcon); HRESULT SetIconLocation( [in] LPCWSTR pszIconPath, [in] int iIcon); HRESULT SetRelativePath( [in] LPCWSTR pszPathRel, [in] DWORD dwReserved); HRESULT Resolve( [in] HWND hwnd, [in] DWORD fFlags); HRESULT SetPath( [in] LPCWSTR pszFile ); } cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)") /***************************************************************************** * IShellExtInit interface */ [ object, uuid(000214e8-0000-0000-c000-000000000046), pointer_default(unique), local ] interface IShellExtInit : IUnknown { typedef IShellExtInit *LPSHELLEXTINIT; HRESULT Initialize( [in] LPCITEMIDLIST pidlFolder, [in] IDataObject *pdtobj, [in] HKEY hkeyProgID); } /*******************************************************************************/ /* Note: the following interfaces are not in shobjidl.idl under Windows, they */ /* are declared directly in shlobj.h. It hopefully won't break anything to put */ /* them here anyway. */ /*******************************************************************************/ #ifndef MAX_PATH #define MAX_PATH 260 #endif /***************************************************************************** * IPersistFolder3 interface */ [ object, uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf), pointer_default(unique) ] interface IPersistFolder3 : IPersistFolder2 { typedef struct { LPITEMIDLIST pidlTargetFolder; WCHAR szTargetParsingName[MAX_PATH]; WCHAR szNetworkProvider[MAX_PATH]; DWORD dwAttributes; int csidl; } PERSIST_FOLDER_TARGET_INFO; HRESULT InitializeEx( [in] IBindCtx *pbc, [in] LPCITEMIDLIST pidlRoot, [in] const PERSIST_FOLDER_TARGET_INFO *ppfti); HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti ); } /***************************************************************************** * IExtractIconA interface */ [ object, uuid(000214eb-0000-0000-c000-000000000046), pointer_default(unique), local ] interface IExtractIconA : IUnknown { cpp_quote("#define GIL_OPENICON 0x0001") cpp_quote("#define GIL_FORSHELL 0x0002") cpp_quote("#define GIL_ASYNC 0x0020") cpp_quote("#define GIL_DEFAULTICON 0x0040") cpp_quote("#define GIL_FORSHORTCUT 0x0080") cpp_quote("#define GIL_SIMULATEDOC 0x0001") cpp_quote("#define GIL_PERINSTANCE 0x0002") cpp_quote("#define GIL_PERCLASS 0x0004") cpp_quote("#define GIL_NOTFILENAME 0x0008") cpp_quote("#define GIL_DONTCACHE 0x0010") typedef IExtractIconA *LPEXTRACTICONA; HRESULT GetIconLocation( [in] UINT uFlags, [out, size_is(cchMax)] LPSTR szIconFile, [in] UINT cchMax, [out] INT *piIndex, [out] UINT *pwFlags); HRESULT Extract( [in] LPCSTR pszFile, [in] UINT nIconIndex, [out] HICON *phiconLarge, [out] HICON *phiconSmall, [in] UINT nIconSize ); } /***************************************************************************** * IExtractIconW interface */ [ object, uuid(000214fa-0000-0000-c000-000000000046), pointer_default(unique), local ] interface IExtractIconW : IUnknown { typedef IExtractIconW *LPEXTRACTICONW; HRESULT GetIconLocation( [in] UINT uFlags, [out, size_is(cchMax)] LPWSTR szIconFile, [in] UINT cchMax, [out] INT *piIndex, [out] UINT *pwFlags); HRESULT Extract( [in] LPCWSTR pszFile, [in] UINT nIconIndex, [out] HICON *phiconLarge, [out] HICON *phiconSmall, [in] UINT nIconSize ); } cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)") cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)") /***************************************************************************** * ICommDlgBrowser interface */ [ object, uuid(000214f1-0000-0000-c000-000000000046), pointer_default(unique) ] interface ICommDlgBrowser : IUnknown { cpp_quote("#define CDBOSC_SETFOCUS 0x00000000") cpp_quote("#define CDBOSC_KILLFOCUS 0x00000001") cpp_quote("#define CDBOSC_SELCHANGE 0x00000002") cpp_quote("#define CDBOSC_RENAME 0x00000003") cpp_quote("#define CDBOSC_STATECHANGE 0x00000004") typedef ICommDlgBrowser *LPCOMMDLGBROWSER; HRESULT OnDefaultCommand( [in] IShellView *shv ); HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange ); HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl ); } /***************************************************************************** * ICommDlgBrowser2 interface */ [ object, uuid(10339516-2894-11D2-9039-00C04F8EEB3E), pointer_default(unique) ] interface ICommDlgBrowser2 : ICommDlgBrowser { HRESULT Notify( [in] IShellView *ppshv, [in] DWORD dwNotifyType); HRESULT GetDefaultMenuText( [in] IShellView *ppshv, [out, string, size_is(cchMax)] LPWSTR pszText, [in] int cchMax); HRESULT GetViewFlags( [out] DWORD *pdwFlags); } /***************************************************************************** * ICommDlgBrowser3 interface */ [ object, uuid(C8AD25A1-3294-41EE-8165-71174BD01C57), pointer_default(unique) ] interface ICommDlgBrowser3 : ICommDlgBrowser2 { HRESULT OnColumnClicked( [in] IShellView *ppshv, [in] int iColumn); HRESULT GetCurrentFilter( [out, string, size_is(cchFileSpec)] LPWSTR pszFileSpec, [in] int cchFileSpec); HRESULT OnPreViewCreated( [in] IShellView *ppshv); } /***************************************************************************** * IDockingWindow interface */ [ object, uuid(012dd920-7b26-11d0-8ca9-00a0c92dbfe8) ] interface IDockingWindow : IOleWindow { HRESULT ShowDW( [in] BOOL fShow); HRESULT CloseDW( [in] DWORD dwReserved); HRESULT ResizeBorderDW( [in] LPCRECT prcBorder, [in] IUnknown *punkToolbarSite, [in] BOOL fReserved); } /***************************************************************************** * IDockingWindowFrame interface */ [ object, uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8), pointer_default(unique), local ] interface IDockingWindowFrame : IOleWindow { cpp_quote("#define DWFRF_NORMAL 0x0000") cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001") cpp_quote("#define DWFAF_HIDDEN 0x0001") HRESULT AddToolbar( [in] IUnknown *punkSrc, [in] LPCWSTR pwszItem, [in] DWORD dwAddFlags); HRESULT RemoveToolbar( [in] IUnknown *punkSrc, [in] DWORD dwRemoveFlags); HRESULT FindToolbar( [in] LPCWSTR pwszItem, [in] REFIID riid, [out] LPVOID *ppvObj); } /***************************************************************************** * IDragSourceHelper interface */ [ object, uuid(de5bf786-477a-11d2-839d-00c04fd918d0), pointer_default(unique), local ] interface IDragSourceHelper : IUnknown { typedef struct { SIZE sizeDragImage; POINT ptOffset; HBITMAP hbmpDragImage; COLORREF crColorKey; } SHDRAGIMAGE, *LPSHDRAGIMAGE; HRESULT InitializeFromBitmap( [in] LPSHDRAGIMAGE pshdi, [in] IDataObject *pDataObject); HRESULT InitializeFromWindow( [in] HWND hwnd, [in] POINT *ppt, [in] IDataObject *pDataObject); } /***************************************************************************** * IDropTargetHelper interface */ [ object, uuid(4657278b-411b-11d2-839a-00c04fd918d0), pointer_default(unique), local ] interface IDropTargetHelper : IUnknown { HRESULT DragEnter( [in] HWND hwndTarget, [in] IDataObject *pDataObject, [in] POINT *ppt, [in] DWORD dwEffect); HRESULT DragLeave(); HRESULT DragOver( [in] POINT *ppt, [in] DWORD dwEffect); HRESULT Drop( [in] IDataObject *pDataObject, [in] POINT *ppt, [in] DWORD dwEffect); HRESULT Show( [in] BOOL fShow ); } /***************************************************************************** * IContextMenu interface */ [ object, uuid(000214e4-0000-0000-c000-000000000046), pointer_default(unique), local ] interface IContextMenu : IUnknown { cpp_quote("#define CMF_NORMAL 0x00000000") cpp_quote("#define CMF_DEFAULTONLY 0x00000001") cpp_quote("#define CMF_VERBSONLY 0x00000002") cpp_quote("#define CMF_EXPLORE 0x00000004") cpp_quote("#define CMF_NOVERBS 0x00000008") cpp_quote("#define CMF_CANRENAME 0x00000010") cpp_quote("#define CMF_NODEFAULT 0x00000020") cpp_quote("#define CMF_INCLUDESTATIC 0x00000040") cpp_quote("#define CMF_ITEMMENU 0x00000080") cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100") cpp_quote("#define CMF_DISABLEDVERBS 0x00000200") cpp_quote("#define CMF_ASYNCVERBSTATE 0x00000400") cpp_quote("#define CMF_OPTIMIZEFORINVOKE 0x00000800") cpp_quote("#define CMF_SYNCCASCADEMENU 0x00001000") cpp_quote("#define CMF_DONOTPICKDEFAULT 0x00002000") cpp_quote("#define CMF_RESERVED 0xffff0000") cpp_quote("#define GCS_VERBA 0x00000000") cpp_quote("#define GCS_HELPTEXTA 0x00000001") cpp_quote("#define GCS_VALIDATEA 0x00000002") cpp_quote("#define GCS_VERBW 0x00000004") cpp_quote("#define GCS_HELPTEXTW 0x00000005") cpp_quote("#define GCS_VALIDATEW 0x00000006") cpp_quote("#define GCS_UNICODE 0x00000004") cpp_quote("#define GCS_VERB WINELIB_NAME_AW(GCS_VERB)") cpp_quote("#define GCS_HELPTEXT WINELIB_NAME_AW(GCS_HELPTEXT)") cpp_quote("#define GCS_VALIDATE WINELIB_NAME_AW(GCS_VALIDATE)") cpp_quote("#define CMDSTR_NEWFOLDERA \"NewFolder\"") cpp_quote("#define CMDSTR_VIEWLISTA \"ViewList\"") cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"") cpp_quote("#if defined(__GNUC__)") cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }") cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }") cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }") cpp_quote("#elif defined(_MSC_VER)") cpp_quote("# define CMDSTR_NEWFOLDERW L\"NewFolder\"") cpp_quote("# define CMDSTR_VIEWLISTW L\"ViewList\"") cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"") cpp_quote("#else") cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};") cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};") cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};") cpp_quote("#endif") cpp_quote("#define CMDSTR_NEWFOLDER WINELIB_NAME_AW(CMDSTR_NEWFOLDER)") cpp_quote("#define CMDSTR_VIEWLIST WINELIB_NAME_AW(CMDSTR_VIEWLIST)") cpp_quote("#define CMDSTR_VIEWDETAILS WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)") cpp_quote("#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY") cpp_quote("#define CMIC_MASK_ICON SEE_MASK_ICON") cpp_quote("#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI") cpp_quote("#define CMIC_MASK_UNICODE SEE_MASK_UNICODE") cpp_quote("#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE") cpp_quote("#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME") cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM") cpp_quote("#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE") cpp_quote("#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK") cpp_quote("#define CMIC_MASK_NOASYNC SEE_MASK_NOASYNC") cpp_quote("#define CMIC_MASK_SHIFT_DOWN 0x10000000") cpp_quote("#define CMIC_MASK_PTINVOKE 0x20000000") cpp_quote("#define CMIC_MASK_CONTROL_DOWN 0x40000000") cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE") cpp_quote("#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS") typedef IContextMenu *LPCONTEXTMENU; typedef struct tagCMINVOKECOMMANDINFO { DWORD cbSize; DWORD fMask; HWND hwnd; LPCSTR lpVerb; LPCSTR lpParameters; LPCSTR lpDirectory; INT nShow; DWORD dwHotKey; HANDLE hIcon; } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO; typedef struct tagCMInvokeCommandInfoEx { DWORD cbSize; DWORD fMask; HWND hwnd; LPCSTR lpVerb; LPCSTR lpParameters; LPCSTR lpDirectory; INT nShow; DWORD dwHotKey; HANDLE hIcon; LPCSTR lpTitle; LPCWSTR lpVerbW; LPCWSTR lpParametersW; LPCWSTR lpDirectoryW; LPCWSTR lpTitleW; POINT ptInvoke; } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX; HRESULT QueryContextMenu( [in] HMENU hmenu, [in] UINT indexMenu, [in] UINT idCmdFirst, [in] UINT idCmdLast, [in] UINT uFlags); HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici ); HRESULT GetCommandString( [in] UINT_PTR idCmd, [in] UINT uType, [out] UINT *pwReserved, [out, size_is(cchMax)] LPSTR pszName, [in] UINT cchMax); } /***************************************************************************** * IContextMenu2 interface */ [ object, uuid(000214f4-0000-0000-c000-000000000046), pointer_default(unique), local ] interface IContextMenu2 : IContextMenu { typedef IContextMenu2 *LPCONTEXTMENU2; HRESULT HandleMenuMsg( [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam); } /***************************************************************************** * IContextMenu3 interface */ [ object, uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719), pointer_default(unique), local ] interface IContextMenu3 : IContextMenu2 { typedef IContextMenu3 *LPCONTEXTMENU3; HRESULT HandleMenuMsg2( [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam, [out] LRESULT *plResult); } [ object, uuid(3409e930-5a39-11d1-83fa-00a0c90dc849), pointer_default(unique), local ] interface IContextMenuCB : IUnknown { HRESULT CallBack( [in] IShellFolder *psf, [in] HWND hwndOwner, [in] IDataObject *pdtobj, [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam); } /***************************************************************************** * IShellExecuteHookA interface */ [ object, uuid(000214f5-0000-0000-c000-000000000046), pointer_default(unique), local ] interface IShellExecuteHookA : IUnknown { cpp_quote("struct _SHELLEXECUTEINFOA;") HRESULT Execute( [in, out] struct _SHELLEXECUTEINFOA* pei); } /***************************************************************************** * IShellExecuteHookW interface */ [ object, uuid(000214fb-0000-0000-c000-000000000046), pointer_default(unique), local ] interface IShellExecuteHookW : IUnknown { cpp_quote("struct _SHELLEXECUTEINFOW;") HRESULT Execute( [in, out] struct _SHELLEXECUTEINFOW* pei); } /***************************************************************************** * IShellLinkDataList interface */ [ object, uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1), pointer_default(unique) ] interface IShellLinkDataList : IUnknown { [local] HRESULT AddDataBlock( [in] void *pDataBlock); [local] HRESULT CopyDataBlock( [in] DWORD dwSig, [out] void **ppDataBlock); HRESULT RemoveDataBlock( [in] DWORD dwSig); HRESULT GetFlags( [out] DWORD *pdwFlags); HRESULT SetFlags( [in] DWORD dwFlags); } /***************************************************************************** * IResolveShellLink interface */ [ object, uuid(5cd52983-9449-11d2-963a-00c04f79adf0), pointer_default(unique) ] interface IResolveShellLink : IUnknown { HRESULT ResolveShellLink( [in] IUnknown *punk, [in] HWND hwnd, [in] DWORD fFlags); } /***************************************************************************** * IURLSearchHook interface */ [ object, uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497), pointer_default(unique), local ] interface IURLSearchHook : IUnknown { HRESULT Translate( [in, out] LPWSTR lpwszSearchURL, [in] DWORD cchBufferSize); } /***************************************************************************** * ISearchContext interface */ [ object, uuid(09f656a2-41af-480c-88f7-16cc0d164615), pointer_default(unique), local ] interface ISearchContext : IUnknown { HRESULT GetSearchUrl( [in] BSTR *pbstrSearchUrl); HRESULT GetSearchText( [in] BSTR *pbstrSearchText); HRESULT GetSearchStyle( [in] DWORD *pdwSearchStyle); } /***************************************************************************** * IURLSearchHook2 interface */ [ object, uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0), pointer_default(unique), local ] interface IURLSearchHook2 : IURLSearchHook { HRESULT TranslateWithSearchContext( [in, out] LPWSTR lpwszSearchURL, [in] DWORD cchBufferSize, [in] ISearchContext *pSearchContext); } cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)") /***************************************************************************** * INewShortcutHookA interface */ [ object, uuid(000214e1-0000-0000-c000-000000000046), pointer_default(unique), local ] interface INewShortcutHookA : IUnknown { HRESULT SetReferent( [in] LPCSTR pcszReferent, [in] HWND hwnd); HRESULT GetReferent( [out] LPSTR pcszReferent, [in] int cchReferent); HRESULT SetFolder( [in] LPCSTR pcszReferent); HRESULT GetFolder( [out] LPSTR pcszReferent, [in] int cchFolder); HRESULT GetName( [out] LPSTR pszName, [in] int cchName); HRESULT GetExtension( [out] LPSTR pszExtension, [in] int cchExtension); } /***************************************************************************** * INewShortcutHookW interface */ [ object, uuid(000214f7-0000-0000-c000-000000000046), pointer_default(unique), local ] interface INewShortcutHookW : IUnknown { HRESULT SetReferent( [in] LPCWSTR pcszReferent, [in] HWND hwnd); HRESULT GetReferent( [out] LPWSTR pcszReferent, [in] int cchReferent); HRESULT SetFolder( [in] LPCWSTR pcszReferent); HRESULT GetFolder( [out] LPWSTR pcszReferent, [in] int cchFolder); HRESULT GetName( [out] LPWSTR pszName, [in] int cchName); HRESULT GetExtension( [out] LPWSTR pszExtension, [in] int cchExtension); } /***************************************************************************** * IRunnableTask interface */ [ object, uuid(85788d00-6807-11d0-b810-00c04fd706ec), pointer_default(unique), local ] interface IRunnableTask : IUnknown { HRESULT Run(); HRESULT Kill([in] BOOL fWait); HRESULT Suspend(); HRESULT Resume(); ULONG IsRunning(); } /***************************************************************************** * IShellChangeNotify interface */ [ object, uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2), pointer_default(unique), local ] interface IShellChangeNotify : IUnknown { HRESULT OnChange( [in] LONG lEvent, [in] LPCITEMIDLIST pidl1, [in] LPCITEMIDLIST pidl2); } /***************************************************************************** * IFileSystemBindData interface */ [ object, uuid(01e18d10-4d8b-11d2-855d-006008059367), pointer_default(unique), local ] interface IFileSystemBindData : IUnknown { HRESULT SetFindData( [in] const WIN32_FIND_DATAW *pfd); HRESULT GetFindData( [out] WIN32_FIND_DATAW *pfd); } /***************************************************************************** * ITaskbarList interface */ [ object, uuid(56FDF342-FD6D-11d0-958A-006097C9A090), pointer_default(unique) ] interface ITaskbarList : IUnknown { HRESULT HrInit(); HRESULT AddTab( [in] HWND hwnd); HRESULT DeleteTab( [in] HWND hwnd); HRESULT ActivateTab( [in] HWND hwnd); HRESULT SetActiveAlt( [in] HWND hwnd); } /***************************************************************************** * ITaskbarList2 interface */ [ object, uuid(602D4995-B13A-429B-A66E-1935E44F4317), pointer_default(unique) ] interface ITaskbarList2 : ITaskbarList { HRESULT MarkFullscreenWindow( [in] HWND hwnd, [in] BOOL fullscreen); } cpp_quote("#ifdef MIDL_PASS") typedef IUnknown* HIMAGELIST; cpp_quote("#endif") typedef [v1_enum] enum THUMBBUTTONFLAGS { THBF_ENABLED = 0x0000, THBF_DISABLED = 0x0001, THBF_DISMISSONCLICK = 0x0002, THBF_NOBACKGROUND = 0x0004, THBF_HIDDEN = 0x0008, THBF_NONINTERACTIVE = 0x0010 } THUMBBUTTONFLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)") typedef [v1_enum] enum THUMBBUTTONMASK { THB_BITMAP = 0x0001, THB_ICON = 0x0002, THB_TOOLTIP = 0x0004, THB_FLAGS = 0x0008 } THUMBBUTTONMASK; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)") cpp_quote("#include <pshpack8.h>") typedef struct THUMBBUTTON { THUMBBUTTONMASK dwMask; UINT iId; UINT iBitmap; HICON hIcon; WCHAR szTip[260]; THUMBBUTTONFLAGS dwFlags; } THUMBBUTTON, *LPTHUMBBUTTON; cpp_quote("#include <poppack.h>") [ uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf), object ] interface ITaskbarList3 : ITaskbarList2 { typedef [v1_enum] enum TBPFLAG { TBPF_NOPROGRESS = 0x0000, TBPF_INDETERMINATE = 0x0001, TBPF_NORMAL = 0x0002, TBPF_ERROR = 0x0004, TBPF_PAUSED = 0x0008 } TBPFLAG; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)") HRESULT SetProgressValue( [in] HWND hwnd, [in] ULONGLONG ullCompleted, [in] ULONGLONG ullTotal); HRESULT SetProgressState( [in] HWND hwnd, [in] TBPFLAG tbpFlags); HRESULT RegisterTab( [in] HWND hwndTab, [in] HWND hwndMDI); HRESULT UnregisterTab([in] HWND hwndTab); HRESULT SetTabOrder( [in] HWND hwndTab, [in] HWND hwndInsertBefore); HRESULT SetTabActive( [in] HWND hwndTab, [in] HWND hwndMDI, [in] DWORD dwReserved); HRESULT ThumbBarAddButtons( [in] HWND hwnd, [in] UINT cButtons, [in, size_is(cButtons)] LPTHUMBBUTTON pButton); HRESULT ThumbBarUpdateButtons( [in] HWND hwnd, [in] UINT cButtons, [in, size_is(cButtons)] LPTHUMBBUTTON pButton); HRESULT ThumbBarSetImageList( [in] HWND hwnd, [in] HIMAGELIST himl); HRESULT SetOverlayIcon( [in] HWND hwnd, [in] HICON hIcon, [in, unique, string] LPCWSTR pszDescription); HRESULT SetThumbnailTooltip( [in] HWND hwnd, [in, unique, string] LPCWSTR pszTip); HRESULT SetThumbnailClip( [in] HWND hwnd, [in] RECT *prcClip); } [ uuid(c43dc798-95d1-4bea-9030-bb99e2983a1a), object ] interface ITaskbarList4 : ITaskbarList3 { typedef [v1_enum] enum STPFLAG { STPF_NONE = 0x0000, STPF_USEAPPTHUMBNAILALWAYS = 0x0001, STPF_USEAPPTHUMBNAILWHENACTIVE = 0x0002, STPF_USEAPPPEEKALWAYS = 0x0004, STPF_USEAPPPEEKWHENACTIVE = 0x0008 } STPFLAG; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)") HRESULT SetTabProperties( [in] HWND hwndTab, [in] STPFLAG stpFlags); } /***************************************************************************** * IAutoCompleteDropDown interface */ [ object, uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB), pointer_default(unique) ] interface IAutoCompleteDropDown : IUnknown { cpp_quote("#define ACDD_VISIBLE 0x0001") HRESULT GetDropDownStatus( [out] DWORD *pdwFlags, [out, string] LPWSTR *ppwszString); HRESULT ResetEnumerator(); } [ object, uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0), pointer_default(unique) ] interface IProfferService : IUnknown { HRESULT ProfferService( [in] REFGUID service, [in] IServiceProvider *pService, [out] DWORD *pCookie); HRESULT RevokeService([in] DWORD cookie); } /***************************************************************************** * IExplorerBrowserEvents interface */ [ object, uuid(361BBDC7-E6EE-4E13-BE58-58E2240C810F) ] interface IExplorerBrowserEvents : IUnknown { HRESULT OnNavigationPending( [in] PCIDLIST_ABSOLUTE pidlFolder); HRESULT OnViewCreated( [in] IShellView *psv); HRESULT OnNavigationComplete( [in] PCIDLIST_ABSOLUTE pidlFolder); HRESULT OnNavigationFailed( [in] PCIDLIST_ABSOLUTE pidlFolder); } typedef GUID EXPLORERPANE; typedef EXPLORERPANE *REFEXPLORERPANE; cpp_quote("#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility") /***************************************************************************** * IExplorerPaneVisibility interface */ [ object, uuid(E07010EC-BC17-44C0-97B0-46C7C95B9EDC) ] interface IExplorerPaneVisibility : IUnknown { [v1_enum] enum _EXPLORERPANESTATE { EPS_DONTCARE = 0x0, EPS_DEFAULT_ON = 0x1, EPS_DEFAULT_OFF = 0x2, EPS_STATE_MASK = 0xffff, EPS_INITIALSTATE = 0x10000, EPS_FORCE = 0x20000 }; typedef DWORD EXPLORERPANESTATE; HRESULT GetPaneState( [in] REFEXPLORERPANE ep, [out] EXPLORERPANESTATE *peps); } typedef [v1_enum] enum tagEXPLORER_BROWSER_FILL_FLAGS { EBF_NONE = 0, EBF_SELECTFROMDATAOBJECT = 0x100, EBF_NODROPTARGET = 0x200 } EXPLORER_BROWSER_FILL_FLAGS; typedef [v1_enum] enum tagEXPLORER_BROWSER_OPTIONS { EBO_NONE = 0x00, EBO_NAVIGATEONCE = 0x01, EBO_SHOWFRAMES = 0x02, EBO_ALWAYSNAVIGATE = 0x04, EBO_NOTRAVELLOG = 0x08, EBO_NOWRAPPERWINDOW = 0x10, EBO_HTMLSHAREPOINTVIEW = 0x20, EBO_NOBORDER = 0x40, EBO_NOPERSISTVIEWSTATE = 0x80, } EXPLORER_BROWSER_OPTIONS; cpp_quote("#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser") /***************************************************************************** * IExplorerBrowser interface */ [ object, uuid(DFD3B6B5-C10C-4BE9-85F6-A66969F402F6), pointer_default(unique) ] interface IExplorerBrowser : IUnknown { [local] HRESULT Initialize( [in] HWND hwndParent, [in] const RECT *prc, [in, unique] const FOLDERSETTINGS *pfs); HRESULT Destroy(); [local] HRESULT SetRect( [in,out,unique] HDWP *phdwp, [in] RECT rcBrowser); HRESULT SetPropertyBag( [in, string] LPCWSTR pszPropertyBag); HRESULT SetEmptyText( [in, string] LPCWSTR pszEmptyText); HRESULT SetFolderSettings( [in] const FOLDERSETTINGS *pfs); HRESULT Advise( [in] IExplorerBrowserEvents *psbe, [out] DWORD *pdwCookie); HRESULT Unadvise( [in] DWORD dwCookie); HRESULT SetOptions( [in] EXPLORER_BROWSER_OPTIONS dwFlag); HRESULT GetOptions( [out] EXPLORER_BROWSER_OPTIONS *pdwFlag); HRESULT BrowseToIDList( [in] PCUIDLIST_RELATIVE pidl, [in] UINT uFlags); HRESULT BrowseToObject( [in] IUnknown *punk, [in] UINT uFlags); HRESULT FillFromObject( [in] IUnknown *punk, [in] EXPLORER_BROWSER_FILL_FLAGS dwFlags); HRESULT RemoveAll(); HRESULT GetCurrentView( [in] REFIID riid, [out, iid_is(riid)] void **ppv); } /***************************************************************************** * INameSpaceTreeControl interface */ [ object, uuid(028212A3-B627-47E9-8856-C14265554E4F) ] interface INameSpaceTreeControl : IUnknown { [v1_enum] enum _NSTCSTYLE { NSTCS_HASEXPANDOS = 0x00000001, NSTCS_HASLINES = 0x00000002, NSTCS_SINGLECLICKEXPAND = 0x00000004, NSTCS_FULLROWSELECT = 0x00000008, NSTCS_SPRINGEXPAND = 0x00000010, NSTCS_HORIZONTALSCROLL = 0x00000020, NSTCS_ROOTHASEXPANDO = 0x00000040, NSTCS_SHOWSELECTIONALWAYS = 0x00000080, NSTCS_NOINFOTIP = 0x00000200, NSTCS_EVENHEIGHT = 0x00000400, NSTCS_NOREPLACEOPEN = 0x00000800, NSTCS_DISABLEDRAGDROP = 0x00001000, NSTCS_NOORDERSTREAM = 0x00002000, NSTCS_RICHTOOLTIP = 0x00004000, NSTCS_BORDER = 0x00008000, NSTCS_NOEDITLABELS = 0x00010000, NSTCS_TABSTOP = 0x00020000, NSTCS_FAVORITESMODE = 0x00080000, NSTCS_AUTOHSCROLL = 0x00100000, NSTCS_FADEINOUTEXPANDOS = 0x00200000, NSTCS_EMPTYTEXT = 0x00400000, NSTCS_CHECKBOXES = 0x00800000, NSTCS_PARTIALCHECKBOXES = 0x01000000, NSTCS_EXCLUSIONCHECKBOXES = 0x02000000, NSTCS_DIMMEDCHECKBOXES = 0x04000000, NSTCS_NOINDENTCHECKS = 0x08000000, NSTCS_ALLOWJUNCTIONS = 0x10000000, NSTCS_SHOWTABSBUTTON = 0x20000000, NSTCS_SHOWDELETEBUTTON = 0x40000000, NSTCS_SHOWREFRESHBUTTON = (int)0x80000000 }; typedef DWORD NSTCSTYLE; [v1_enum] enum _NSTCROOTSTYLE { NSTCRS_VISIBLE = 0x0000, NSTCRS_HIDDEN = 0x0001, NSTCRS_EXPANDED = 0x0002 }; typedef DWORD NSTCROOTSTYLE; [v1_enum] enum _NSTCITEMSTATE { NSTCIS_NONE = 0x0000, NSTCIS_SELECTED = 0x0001, NSTCIS_EXPANDED = 0x0002, NSTCIS_BOLD = 0x0004, NSTCIS_DISABLED = 0x0008, NSTCIS_SELECTEDNOEXPAND = 0x0010 }; typedef DWORD NSTCITEMSTATE; typedef [v1_enum] enum NSTCGNI { NSTCGNI_NEXT = 0, NSTCGNI_NEXTVISIBLE = 1, NSTCGNI_PREV = 2, NSTCGNI_PREVVISIBLE = 3, NSTCGNI_PARENT = 4, NSTCGNI_CHILD = 5, NSTCGNI_FIRSTVISIBLE = 6, NSTCGNI_LASTVISIBLE = 7 } NSTCGNI; HRESULT Initialize( [in] HWND hwndParent, [in, unique] RECT *prc, [in] NSTCSTYLE nstcsFlags); HRESULT TreeAdvise( [in] IUnknown *punk, [out] DWORD *pdwCookie); HRESULT TreeUnadvise( [in] DWORD dwCookie); HRESULT AppendRoot( [in] IShellItem *psiRoot, [in] SHCONTF grfEnumFlags, [in] NSTCROOTSTYLE grfRootStyle, [in, unique] IShellItemFilter *pif); HRESULT InsertRoot( [in] int iIndex, [in] IShellItem *psiRoot, [in] SHCONTF grfEnumFlags, [in] NSTCROOTSTYLE grfRootStyle, [in, unique] IShellItemFilter *pif); HRESULT RemoveRoot( [in] IShellItem *psiRoot); HRESULT RemoveAllRoots(); HRESULT GetRootItems( [out] IShellItemArray **ppsiaRootItems); HRESULT SetItemState( [in] IShellItem *psi, [in] NSTCITEMSTATE nstcisMask, [in] NSTCITEMSTATE nstcisFlags); HRESULT GetItemState( [in] IShellItem *psi, [in] NSTCITEMSTATE nstcismask, [out] NSTCITEMSTATE *pnstcisFlags); HRESULT GetSelectedItems( [out] IShellItemArray **psiaItems); HRESULT GetItemCustomState( [in] IShellItem *psi, [out] int *piStateNumber); HRESULT SetItemCustomState( [in] IShellItem *psi, [in] int iStateNumber); HRESULT EnsureItemVisible( [in] IShellItem *psi); HRESULT SetTheme( [in, string] LPCWSTR pszTheme); HRESULT GetNextItem( [in, unique] IShellItem *psi, [in] NSTCGNI nstcgi, [out] IShellItem **ppsiNext); HRESULT HitTest( [in] POINT *ppt, [out] IShellItem **ppsiOut); HRESULT GetItemRect( [in] IShellItem *psi, [out] RECT *prect); HRESULT CollapseAll(); } /***************************************************************************** * INameSpaceTreeControl2 interface */ [ object, uuid(7CC7AED8-290E-49BC-8945-C1401CC9306C) ] interface INameSpaceTreeControl2 : INameSpaceTreeControl { typedef [v1_enum] enum NSTCSTYLE2 { NSTCS2_DEFAULT = 0x00, NSTCS2_INTERRUPTNOTIFICATIONS = 0x01, NSTCS2_SHOWNULLSPACEMENU = 0x02, NSTCS2_DISPLAYPADDING = 0x04, NSTCS2_DISPLAYPINNEDONLY = 0x08, NTSCS2_NOSINGLETONAUTOEXPAND = 0x10, /* The apparent typo here is */ NTSCS2_NEVERINSERTNONENUMERATED = 0x20 /* present also in the Win SDK */ } NSTCSTYLE2; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(NSTCSTYLE2)") HRESULT SetControlStyle( [in] NSTCSTYLE nstcsMask, [in] NSTCSTYLE nstcsStyle); HRESULT GetControlStyle( [in] NSTCSTYLE nstcsMask, [out] NSTCSTYLE *pnstcsStyle); HRESULT SetControlStyle2( [in] NSTCSTYLE2 nstcsMask, [in] NSTCSTYLE2 nstcsStyle); HRESULT GetControlStyle2( [in] NSTCSTYLE2 nstcsMask, [out] NSTCSTYLE2 *pnstcsStyle); } /***************************************************************************** * INameSpaceTreeControlEvents interface */ [ object, uuid(93D77985-B3D8-4484-8318-672CDDA002CE), local ] interface INameSpaceTreeControlEvents : IUnknown { [v1_enum] enum _NSTCEHITTEST { NSTCEHT_NOWHERE = 0x0001, NSTCEHT_ONITEMICON = 0x0002, NSTCEHT_ONITEMLABEL = 0x0004, NSTCEHT_ONITEMIDENT = 0x0008, NSTCEHT_ONITEMBUTTON = 0x0010, NSTCEHT_ONITEMRIGHT = 0x0020, NSTCEHT_ONITEMSTATEICON = 0x0040, NSTCEHT_ONITEM = 0x0046, NSTCEHT_ONITEMTABBUTTON = 0x1000 }; typedef DWORD NSTCEHITTEST; [v1_enum] enum _NSTCECLICKTYPE { NSTCECT_LBUTTON = 0x1, NSTCECT_MBUTTON = 0x2, NSTCECT_RBUTTON = 0x3, NSTCECT_BUTTON = 0x3, NSTCECT_DBLCLICK = 0x4 }; typedef DWORD NSTCECLICKTYPE; HRESULT OnItemClick( [in] IShellItem *psi, [in] NSTCEHITTEST nstceHitTest, [in] NSTCECLICKTYPE nstceClickType); HRESULT OnPropertyItemCommit( [in] IShellItem *psi); HRESULT OnItemStateChanging( [in] IShellItem *psi, [in] NSTCITEMSTATE nstcisMask, [in] NSTCITEMSTATE nstcisState); HRESULT OnItemStateChanged( [in] IShellItem *psi, [in] NSTCITEMSTATE nstcisMask, [in] NSTCITEMSTATE nstcisState); HRESULT OnSelectionChanged( [in] IShellItemArray *psiaSelection); HRESULT OnKeyboardInput( [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam); HRESULT OnBeforeExpand( [in] IShellItem *psi); HRESULT OnAfterExpand( [in] IShellItem *psi); HRESULT OnBeginLabelEdit( [in] IShellItem *psi); HRESULT OnEndLabelEdit( [in] IShellItem *psi); HRESULT OnGetToolTip( [in] IShellItem *psi, [out, string, size_is(cchTip)] LPWSTR pszTip, [in] int cchTip); HRESULT OnBeforeItemDelete( [in] IShellItem *psi); HRESULT OnItemAdded( [in] IShellItem *psi, [in] BOOL fIsRoot); HRESULT OnItemDeleted( [in] IShellItem *psi, [in] BOOL fIsRoot); HRESULT OnBeforeContextMenu( [in, unique] IShellItem *psi, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT OnAfterContextMenu( [in] IShellItem *psi, [in] IContextMenu *pcmIn, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT OnBeforeStateImageChange( [in] IShellItem *psi); HRESULT OnGetDefaultIconIndex( [in] IShellItem *psi, [out] int *piDefaultIcon, [out] int *piOpenIcon); } /***************************************************************************** * INameSpaceTreeControlCustomDraw interface */ [ object, uuid(2D3BA758-33EE-42D5-BB7B-5F3431D86C78), local ] interface INameSpaceTreeControlCustomDraw : IUnknown { typedef struct NSTCCUSTOMDRAW { IShellItem *psi; UINT uItemState; NSTCITEMSTATE nstcis; LPCWSTR pszText; int iImage; HIMAGELIST himl; int iLevel; int iIndent; } NSTCCUSTOMDRAW; HRESULT PrePaint( [in] HDC hdc, [in] RECT *prc, [out] LRESULT *plres); HRESULT PostPaint( [in] HDC hdc, [in] RECT *prc); HRESULT ItemPrePaint( [in] HDC hdc, [in] RECT *prc, [in] NSTCCUSTOMDRAW *pnstccdItem, [in, out] COLORREF *pclrText, [in, out] COLORREF *pclrTextBk, [out] LRESULT *plres); HRESULT ItemPostPaint( [in] HDC hdc, [in] RECT *prc, [in] NSTCCUSTOMDRAW *pnstccdItem); } /***************************************************************************** * INameSpaceTreeControlDropHandler interface */ [ object, uuid(F9C665D6-C2F2-4C19-BF33-8322D7352F51), local ] interface INameSpaceTreeControlDropHandler : IUnknown { HRESULT OnDragEnter( [in, unique] IShellItem *psiOver, [in] IShellItemArray *psiaData, [in] BOOL fOutsideSource, [in] DWORD grfKeyState, [in, out] DWORD *pdwEffect); HRESULT OnDragOver( [in, unique] IShellItem *psiOver, [in] IShellItemArray *psiaData, [in] DWORD grfKeyState, [in, out] DWORD *pdwEffect); HRESULT OnDragPosition( [in, unique] IShellItem *psiOver, [in] IShellItemArray *psiaData, [in] int iNewPosition, [in] int iOldPosition); HRESULT OnDrop( [in, unique] IShellItem *psiOver, [in] IShellItemArray *psiaData, [in] int iPosition, [in] DWORD grfKeyState, [in, out] DWORD *pdwEffect); HRESULT OnDropPosition( [in, unique] IShellItem *psiOver, [in] IShellItemArray *psiaData, [in] int iNewPosition, [in] int iOldPosition); HRESULT OnDragLeave( [in, unique] IShellItem *psiOver); } cpp_quote("#define NSTCDHPOS_ONTOP -1") interface IFileDialog; typedef [v1_enum] enum FDE_OVERWRITE_RESPONSE { FDEOR_DEFAULT = 0, FDEOR_ACCEPT = 1, FDEOR_REFUSE = 2 } FDE_OVERWRITE_RESPONSE; typedef [v1_enum] enum FDE_SHAREVIOLATION_RESPONSE { FDESVR_DEFAULT = 0, FDESVR_ACCEPT = 1, FDESVR_REFUSE = 2 } FDE_SHAREVIOLATION_RESPONSE; /***************************************************************************** * IFileDialogEvents interface */ [ object, uuid(973510DB-7D7F-452B-8975-74A85828D354), pointer_default(unique) ] interface IFileDialogEvents : IUnknown { HRESULT OnFileOk( [in] IFileDialog *pfd); HRESULT OnFolderChanging( [in] IFileDialog *pfd, [in] IShellItem *psiFolder); HRESULT OnFolderChange( [in] IFileDialog *pfd); HRESULT OnSelectionChange( [in] IFileDialog *pfd); HRESULT OnShareViolation( [in] IFileDialog *pfd, [in] IShellItem *psi, [out] FDE_SHAREVIOLATION_RESPONSE *pResponse); HRESULT OnTypeChange( [in] IFileDialog *pfd); HRESULT OnOverwrite( [in] IFileDialog *pfd, [in] IShellItem *psi, [out] FDE_OVERWRITE_RESPONSE *pResponse); } /***************************************************************************** * IModalWindow interface */ [ object, uuid(B4DB1657-70D7-485E-8E3E-6FCB5A5C1802), pointer_default(unique) ] interface IModalWindow : IUnknown { [local] HRESULT Show( [in, unique, annotation("__in_opt")] HWND hwndOwner); [call_as(Show)] HRESULT RemoteShow( [in, unique] HWND hwndOwner); } typedef [v1_enum] enum FDAP { FDAP_BOTTOM = 0, FDAP_TOP = 1 } FDAP; /***************************************************************************** * IFileDialog interface */ [ object, uuid(42F85136-DB7E-439C-85F1-E4075D135FC8), pointer_default(unique) ] interface IFileDialog : IModalWindow { [v1_enum] enum _FILEOPENDIALOGOPTIONS { FOS_OVERWRITEPROMPT = 0x00000002, FOS_STRICTFILETYPES = 0x00000004, FOS_NOCHANGEDIR = 0x00000008, FOS_PICKFOLDERS = 0x00000020, FOS_FORCEFILESYSTEM = 0x00000040, FOS_ALLNONSTORAGEITEMS = 0x00000080, FOS_NOVALIDATE = 0x00000100, FOS_ALLOWMULTISELECT = 0x00000200, FOS_PATHMUSTEXIST = 0x00000800, FOS_FILEMUSTEXIST = 0x00001000, FOS_CREATEPROMPT = 0x00002000, FOS_SHAREAWARE = 0x00004000, FOS_NOREADONLYRETURN = 0x00008000, FOS_NOTESTFILECREATE = 0x00010000, FOS_HIDEMRUPLACES = 0x00020000, FOS_HIDEPINNEDPLACES = 0x00040000, FOS_NODEREFERENCELINKS = 0x00100000, FOS_DONTADDTORECENT = 0x02000000, FOS_FORCESHOWHIDDEN = 0x10000000, FOS_DEFAULTNOMINIMODE = 0x20000000, FOS_FORCEPREVIEWPANEON = 0x40000000, FOS_SUPPORTSTREAMABLEITEMS = 0x80000000 }; typedef DWORD FILEOPENDIALOGOPTIONS; HRESULT SetFileTypes( [in] UINT cFileTypes, [in, size_is(cFileTypes)] const COMDLG_FILTERSPEC *rgFilterSpec); HRESULT SetFileTypeIndex( [in] UINT iFileType); HRESULT GetFileTypeIndex( [out] UINT *piFileType); HRESULT Advise( [in] IFileDialogEvents *pfde, [out] DWORD *pdwCookie); HRESULT Unadvise( [in] DWORD dwCookie); HRESULT SetOptions( [in] FILEOPENDIALOGOPTIONS fos); HRESULT GetOptions( [out] FILEOPENDIALOGOPTIONS *pfos); HRESULT SetDefaultFolder( [in] IShellItem *psi); HRESULT SetFolder( [in] IShellItem *psi); HRESULT GetFolder( [out] IShellItem **ppsi); HRESULT GetCurrentSelection( [out] IShellItem **ppsi); HRESULT SetFileName( [in, string] LPCWSTR pszName); HRESULT GetFileName( [out, string] LPWSTR *pszName); HRESULT SetTitle( [in, string] LPCWSTR pszTitle); HRESULT SetOkButtonLabel( [in, string] LPCWSTR pszText); HRESULT SetFileNameLabel( [in, string] LPCWSTR pszLabel); HRESULT GetResult( [out] IShellItem **ppsi); HRESULT AddPlace( [in] IShellItem *psi, [in] FDAP fdap); HRESULT SetDefaultExtension( [in, string] LPCWSTR pszDefaultExtension); HRESULT Close( [in] HRESULT hr); HRESULT SetClientGuid( [in] REFGUID guid); HRESULT ClearClientData(); HRESULT SetFilter( [in] IShellItemFilter *pFilter); } /***************************************************************************** * IFileDialog2 interface */ [ object, uuid(61744FC7-85B5-4791-A9B0-272276309B13), pointer_default(unique) ] interface IFileDialog2 : IFileDialog { HRESULT SetCancelButtonLabel( [in] LPCWSTR pszLabel); HRESULT SetNavigationRoot( [in] IShellItem *psi); } /***************************************************************************** * IFileOperationProgressSink interface */ [ object, uuid(04B0F1A7-9490-44BC-96E1-4296A31252E2), pointer_default(unique) ] interface IFileOperationProgressSink : IUnknown { HRESULT StartOperations(); HRESULT FinishOperations( [in] HRESULT hrResult); HRESULT PreRenameItem( [in] DWORD dwFlags, [in] IShellItem *psiItem, [in, unique, string] LPCWSTR pszNewName); HRESULT PostRenameItem( [in] DWORD dwFlags, [in] IShellItem *psiItem, [in, string] LPCWSTR pszNewName, [in] HRESULT hrRename, [in] IShellItem *psiNewlyCreated); HRESULT PreMoveItem( [in] DWORD dwFlags, [in] IShellItem *psiItem, [in] IShellItem *psiDestinationFolder, [in, unique, string] LPCWSTR pszNewName); HRESULT PostMoveItem( [in] DWORD dwFlags, [in] IShellItem *psiItem, [in] IShellItem *psiDestinationFolder, [in, unique, string] LPCWSTR pszNewName, [in] HRESULT hrMove, [in] IShellItem *psiNewlyCreated); HRESULT PreCopyItem( [in] DWORD dwFlags, [in] IShellItem *psiItem, [in] IShellItem *psiDestinationFolder, [in, unique, string] LPCWSTR pszNewName); HRESULT PostCopyItem( [in] DWORD dwFlags, [in] IShellItem *psiItem, [in] IShellItem *psiDestinationFolder, [in, unique, string] LPCWSTR pszNewName, [in] HRESULT hrCopy, [in] IShellItem *psiNewlyCreated); HRESULT PreDeleteItem( [in] DWORD dwFlags, [in] IShellItem *psiItem); HRESULT PostDeleteItem( [in] DWORD dwFlags, [in] IShellItem *psiItem, [in] HRESULT hrDelete, [in] IShellItem *psiNewlyCreated); HRESULT PreNewItem( [in] DWORD dwFlags, [in] IShellItem *psiDestinationFolder, [in, unique, string] LPCWSTR pszNewName); HRESULT PostNewItem( [in] DWORD dwFlags, [in] IShellItem *psiDestinationFolder, [in, unique, string] LPCWSTR pszNewName, [in, unique, string] LPCWSTR pszTemplateName, [in] DWORD dwFileAttributes, [in] HRESULT hrNew, [in] IShellItem *psiNewItem); HRESULT UpdateProgress( [in] UINT iWorkTotal, [in] UINT iWorkSoFar); HRESULT ResetTimer(); HRESULT PauseTimer(); HRESULT ResumeTimer(); } /***************************************************************************** * IFileSaveDialog interface */ [ object, uuid(84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB), pointer_default(unique) ] interface IFileSaveDialog : IFileDialog { HRESULT SetSaveAsItem( [in] IShellItem *psi); HRESULT SetProperties( [in] IPropertyStore *pStore); HRESULT SetCollectedProperties( [in] IPropertyDescriptionList *pList, [in] BOOL fAppendDefault); HRESULT GetProperties( [in] IPropertyStore **ppStore); HRESULT ApplyProperties( [in] IShellItem *psi, [in] IPropertyStore *pStore, [in, unique] HWND hwnd, [in, unique] IFileOperationProgressSink *pSink); } /***************************************************************************** * IFileOpenDialog interface */ [ object, uuid(D57C7288-D4AD-4768-BE02-9D969532D960), pointer_default(unique) ] interface IFileOpenDialog : IFileDialog { HRESULT GetResults( [out] IShellItemArray **ppenum); HRESULT GetSelectedItems( [out] IShellItemArray **ppsai); } typedef [v1_enum] enum CDCONTROLSTATEF { CDCS_INACTIVE = 0x0, CDCS_ENABLED = 0x1, CDCS_VISIBLE = 0x2, CDCS_ENABLEDVISIBLE = 0x3 } CDCONTROLSTATEF; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CDCONTROLSTATEF)") /***************************************************************************** * IFileDialogCustomize interface */ [ object, uuid(E6FDD21A-163F-4975-9C8C-A69F1BA37034), pointer_default(unique) ] interface IFileDialogCustomize : IUnknown { HRESULT EnableOpenDropDown( [in] DWORD dwIDCtl); HRESULT AddMenu( [in] DWORD dwIDCtl, [in, string] LPCWSTR pszLabel); HRESULT AddPushButton( [in] DWORD dwIDCtl, [in, string] LPCWSTR pszLabel); HRESULT AddComboBox( [in] DWORD dwIDCtl); HRESULT AddRadioButtonList( [in] DWORD dwIDCtl); HRESULT AddCheckButton( [in] DWORD dwIDCtl, [in, string] LPCWSTR pszLabel, [in] BOOL bChecked); HRESULT AddEditBox( [in] DWORD dwIDCtl, [in, string] LPCWSTR pszText); HRESULT AddSeparator( [in] DWORD dwIDCtl); HRESULT AddText( [in] DWORD dwIDCtl, [in, string] LPCWSTR pszText); HRESULT SetControlLabel( [in] DWORD dwIDCtl, [in, string] LPCWSTR pszLabel); HRESULT GetControlState( [in] DWORD dwIDCtl, [out] CDCONTROLSTATEF *pdwState); HRESULT SetControlState( [in] DWORD dwIDCtl, [in] CDCONTROLSTATEF dwState); HRESULT GetEditBoxText( [in] DWORD dwIDCtl, [out, string] WCHAR **ppszText); HRESULT SetEditBoxText( [in] DWORD dwIDCtl, [in, string] LPCWSTR pszText); HRESULT GetCheckButtonState( [in] DWORD dwIDCtl, [out] BOOL *pbChecked); HRESULT SetCheckButtonState( [in] DWORD dwIDCtl, [in] BOOL bChecked); HRESULT AddControlItem( [in] DWORD dwIDCtl, [in] DWORD dwIDItem, [in] LPCWSTR pszLabel); HRESULT RemoveControlItem( [in] DWORD dwIDCtl, [in] DWORD dwIDItem); HRESULT RemoveAllControlItems( [in] DWORD dwIDCtl); HRESULT GetControlItemState( [in] DWORD dwIDCtl, [in] DWORD dwIDItem, [out] CDCONTROLSTATEF *pdwState); HRESULT SetControlItemState( [in] DWORD dwIDCtl, [in] DWORD dwIDItem, [in] CDCONTROLSTATEF dwState); HRESULT GetSelectedControlItem( [in] DWORD dwIDCtl, [out] DWORD *pdwIDItem); HRESULT SetSelectedControlItem( [in] DWORD dwIDCtl, [in] DWORD dwIDItem); HRESULT StartVisualGroup( [in] DWORD dwIDCtl, [in, string] LPCWSTR pszLabel); HRESULT EndVisualGroup(); HRESULT MakeProminent( [in] DWORD dwIDCtl); HRESULT SetControlItemText( [in] DWORD dwIDCtl, [in] DWORD dwIDItem, [in, string] LPCWSTR pszLabel); } /***************************************************************************** * IFileDialogControlEvents interface */ [ object, uuid(36116642-D713-4B97-9B83-7484A9D00433), pointer_default(unique) ] interface IFileDialogControlEvents : IUnknown { HRESULT OnItemSelected( [in] IFileDialogCustomize *pfdc, [in] DWORD dwIDCtl, [in] DWORD dwIDItem); HRESULT OnButtonClicked( [in] IFileDialogCustomize *pfdc, [in] DWORD dwIDCtl); HRESULT OnCheckButtonToggled( [in] IFileDialogCustomize *pfdc, [in] DWORD dwIDCtl, [in] BOOL bChecked); HRESULT OnControlActivating( [in] IFileDialogCustomize *pfdc, [in] DWORD dwIDCtl); } typedef [v1_enum] enum tagKF_CATEGORY { KF_CATEGORY_VIRTUAL = 0x00000001, KF_CATEGORY_FIXED = 0x00000002, KF_CATEGORY_COMMON = 0x00000003, KF_CATEGORY_PERUSER = 0x00000004 } KF_CATEGORY; typedef [v1_enum] enum tagKF_REDIRECTION_CAPABILITIES { KF_REDIRECTION_CAPABILITIES_ALLOW_ALL = 0x000000ff, KF_REDIRECTION_CAPABILITIES_REDIRECTABLE = 0x00000001, KF_REDIRECTION_CAPABILITIES_DENY_ALL = 0x000fff00, KF_REDIRECTION_CAPABILITIES_DENY_POLICY_REDIRECTED = 0x00000100, KF_REDIRECTION_CAPABILITIES_DENY_POLICY = 0x00000200, KF_REDIRECTION_CAPABILITIES_DENY_PERMISSIONS = 0x00000400 } KF_REDIRECTION_CAPABILITIES; typedef [v1_enum] enum tagKF_DEFINITION_FLAGS { KFDF_LOCAL_REDIRECT_ONLY = 0x00000002, KFDF_ROAMABLE = 0x00000004, KFDF_PRECREATE = 0x00000008, KFDF_STREAM = 0x00000010, KFDF_PUBLISHEXPANDEDPATH = 0x00000020, KFDF_NO_REDIRECT_UI = 0x00000040 } KF_DEFINITION_FLAGS; typedef struct tagKNOWNFOLDER_DEFINITION { KF_CATEGORY category; LPWSTR pszName; LPWSTR pszDescription; KNOWNFOLDERID fidParent; LPWSTR pszRelativePath; LPWSTR pszParsingName; LPWSTR pszTooltip; LPWSTR pszLocalizedName; LPWSTR pszIcon; LPWSTR pszSecurity; DWORD dwAttributes; KF_DEFINITION_FLAGS kfdFlags; FOLDERTYPEID ftidType; } KNOWNFOLDER_DEFINITION; [ object, uuid(3aa7af7e-9b36-420C-a8e3-f77d4674a488), pointer_default(ref) ] interface IKnownFolder : IUnknown { HRESULT GetId( [out] KNOWNFOLDERID *pkfid); HRESULT GetCategory( [out] KF_CATEGORY *pCategory); HRESULT GetShellItem( [in] DWORD dwFlags, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT GetPath( [in] DWORD dwFlags, [out, string] LPWSTR *ppszPath); HRESULT SetPath( [in] DWORD dwFlags, [in, string] LPCWSTR pszPath); HRESULT GetIDList( [in] DWORD dwFlags, [out] PIDLIST_ABSOLUTE *ppidl); HRESULT GetFolderType( [out] FOLDERTYPEID *pftid); HRESULT GetRedirectionCapabilities( [out] KF_REDIRECTION_CAPABILITIES *pCapabilities); HRESULT GetFolderDefinition( [out] KNOWNFOLDER_DEFINITION *pKFD); } typedef [v1_enum] enum tagKF_REDIRECT_FLAGS { KF_REDIRECT_USER_EXCLUSIVE = 0x00000001, KF_REDIRECT_COPY_SOURCE_DACL = 0x00000002, KF_REDIRECT_OWNER_USER = 0x00000004, KF_REDIRECT_SET_OWNER_EXPLICIT = 0x00000008, KF_REDIRECT_CHECK_ONLY = 0x00000010, KF_REDIRECT_WITH_UI = 0x00000020, KF_REDIRECT_UNPIN = 0x00000040, KF_REDIRECT_PIN = 0x00000080, KF_REDIRECT_COPY_CONTENTS = 0x00000200, KF_REDIRECT_DEL_SOURCE_CONTENTS = 0x00000400, KF_REDIRECT_EXCLUDE_ALL_KNOWN_SUBFOLDERS = 0x00000800 } KF_REDIRECT_FLAGS; [ object, uuid(8BE2D872-86AA-4d47-B776-32CCA40C7018), pointer_default(ref) ] interface IKnownFolderManager : IUnknown { typedef [v1_enum] enum tagFFFP_MODE { FFFP_EXACTMATCH, FFFP_NEARESTPARENTMATCH } FFFP_MODE; HRESULT FolderIdFromCsidl( [in] int nCsidl, [out] KNOWNFOLDERID *pfid); HRESULT FolderIdToCsidl( [in] REFKNOWNFOLDERID rfid, [out] int *pnCsidl); HRESULT GetFolderIds( [out, size_is(, *pCount)] KNOWNFOLDERID **ppKFId, [in, out] UINT *pCount); HRESULT GetFolder( [in] REFKNOWNFOLDERID rfid, [out] IKnownFolder **ppkf); HRESULT GetFolderByName( [in, string] LPCWSTR pszCanonicalName, [out] IKnownFolder **ppkf); HRESULT RegisterFolder( [in] REFKNOWNFOLDERID rfid, [in] KNOWNFOLDER_DEFINITION const *pKFD); HRESULT UnregisterFolder( [in] REFKNOWNFOLDERID rfid); HRESULT FindFolderFromPath( [in, string] LPCWSTR pszPath, [in] FFFP_MODE mode, [out] IKnownFolder **ppkf); HRESULT FindFolderFromIDList( [in] PCIDLIST_ABSOLUTE pidl, [out] IKnownFolder **ppkf); HRESULT Redirect( [in] REFKNOWNFOLDERID rfid, [in, unique] HWND hwnd, [in] KF_REDIRECT_FLAGS flags, [in, unique, string] LPCWSTR pszTargetPath, [in] UINT cFolders, [in, size_is(cFolders), unique] KNOWNFOLDERID const *pExclusion, [out, string] LPWSTR *ppszError); } /* function for releasing structure returned from IKnownFolder::GetFolderDefinition */ cpp_quote("static inline void FreeKnownFolderDefinitionFields(KNOWNFOLDER_DEFINITION *pKFD)") cpp_quote("{") cpp_quote(" CoTaskMemFree(pKFD->pszName);") cpp_quote(" CoTaskMemFree(pKFD->pszDescription);") cpp_quote(" CoTaskMemFree(pKFD->pszRelativePath);") cpp_quote(" CoTaskMemFree(pKFD->pszParsingName);") cpp_quote(" CoTaskMemFree(pKFD->pszTooltip);") cpp_quote(" CoTaskMemFree(pKFD->pszLocalizedName);") cpp_quote(" CoTaskMemFree(pKFD->pszIcon);") cpp_quote(" CoTaskMemFree(pKFD->pszSecurity);") cpp_quote("}") typedef [v1_enum] enum ASSOCIATIONLEVEL { AL_MACHINE, AL_EFFECTIVE, AL_USER } ASSOCIATIONLEVEL; typedef [v1_enum] enum ASSOCIATIONTYPE { AT_FILEEXTENSION, AT_URLPROTOCOL, AT_STARTMENUCLIENT, AT_MIMETYPE } ASSOCIATIONTYPE; [ object, uuid(4e530b0a-e611-4c77-a3ac-9031d022281b), pointer_default(unique) ] interface IApplicationAssociationRegistration : IUnknown { HRESULT QueryCurrentDefault( [in, string] LPCWSTR pszQuery, [in] ASSOCIATIONTYPE atQueryType, [in] ASSOCIATIONLEVEL alQueryLevel, [out, string] LPWSTR *ppszAssociation); HRESULT QueryAppIsDefault( [in, string] LPCWSTR pszQuery, [in] ASSOCIATIONTYPE atQueryType, [in] ASSOCIATIONLEVEL alQueryLevel, [in, string] LPCWSTR pszAppRegistryName, [out] BOOL *pfDefault); HRESULT QueryAppIsDefaultAll( [in] ASSOCIATIONLEVEL alQueryLevel, [in, string] LPCWSTR pszAppRegistryName, [out] BOOL* pfDefault); HRESULT SetAppAsDefault( [in, string] LPCWSTR pszAppRegistryName, [in, string] LPCWSTR pszSet, [in] ASSOCIATIONTYPE atSetType); HRESULT SetAppAsDefaultAll( [in, string] LPCWSTR pszAppRegistryName); HRESULT ClearUserAssociations(); } [ object, uuid(12337d35-94c6-48a0-bce7-6a9c69d4d600), pointer_default(unique) ] interface IApplicationDestinations : IUnknown { HRESULT SetAppID( [in] LPCWSTR pszAppID); HRESULT RemoveDestination( [in] IUnknown *punk); HRESULT RemoveAllDestinations(); } [ uuid(6332debf-87b5-4670-90c0-5e57b408a49e), object, pointer_default(unique) ] interface ICustomDestinationList : IUnknown { typedef [v1_enum] enum KNOWNDESTCATEGORY { KDC_FREQUENT = 1, KDC_RECENT } KNOWNDESTCATEGORY; HRESULT SetAppID([in, string] LPCWSTR pszAppID); HRESULT BeginList( [out] UINT *pcMinSlots, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT AppendCategory( [in, string] LPCWSTR pszCategory, [in] IObjectArray *poa); HRESULT AppendKnownCategory([in] KNOWNDESTCATEGORY category); HRESULT AddUserTasks([in] IObjectArray *poa); HRESULT CommitList(); HRESULT GetRemovedDestinations( [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT DeleteList([in, unique, string] LPCWSTR pszAppID); HRESULT AbortList(); } [ uuid(ddefe873-6997-4e68-be26-39b633adbe12), object, pointer_default(unique) ] interface IQueryCancelAutoPlay : IUnknown { HRESULT AllowAutoPlay([in, string] LPCWSTR path, [in] DWORD content_type, [in, string] LPCWSTR label, [in] DWORD serial_number); } [ uuid(d594d0d8-8da7-457b-b3b4-ce5dbaac0b88), pointer_default(unique) ] interface ITransferAdviseSink : IUnknown { [v1_enum] enum _TRANSFER_ADVISE_STATE { TS_NONE = 0, TS_PERFORMING = 1, TS_PREPARING = 2, TS_INDETERMINATE = 4 }; typedef DWORD TRANSFER_ADVISE_STATE; HRESULT UpdateProgress([in] ULONGLONG size_current, [in] ULONGLONG size_total, [in] INT files_current, [in] INT files_total, [in] INT folders_current, [in] INT folders_total); HRESULT UpdateTransferState([in] TRANSFER_ADVISE_STATE state); HRESULT ConfirmOverwrite([in] IShellItem *source, [in] IShellItem *dest_parent, [in, string] LPCWSTR name); HRESULT ConfirmEncryptionLoss([in] IShellItem *source); HRESULT FileFailure([in] IShellItem *item, [in, unique, string] LPCWSTR itemname, [in] HRESULT hr, [in, out, unique, size_is(crename)] LPWSTR rename, [in] ULONG crename); HRESULT SubStreamFailure([in] IShellItem *item, [in, string] LPCWSTR stream, [in] HRESULT hr); HRESULT PropertyFailure([in] IShellItem *item, [in, unique] const PROPERTYKEY *key, [in] HRESULT hr); } [v1_enum] enum _TRANSFER_SOURCE_FLAGS { TSF_NORMAL = 0, TSF_FAIL_EXIST = 0, TSF_RENAME_EXIST = 0x1, TSF_OVERWRITE_EXIST = 0x2, TSF_ALLOW_DECRYPTION = 0x4, TSF_NO_SECURITY = 0x8, TSF_COPY_CREATION_TIME = 0x10, TSF_COPY_WRITE_TIME = 0x20, TSF_USE_FULL_ACCESS = 0x40, TSF_DELETE_RECYCLE_IF_POSSIBLE = 0x80, TSF_COPY_HARD_LINK = 0x100, TSF_COPY_LOCALIZED_NAME = 0x200, TSF_MOVE_AS_COPY_DELETE = 0x400, TSF_SUSPEND_SHELLEVENTS = 0x800 }; typedef DWORD TRANSFER_SOURCE_FLAGS; [ uuid(00adb003-bde9-45c6-8e29-d09f9353e108), object, pointer_default(unique) ] interface ITransferSource : IUnknown { HRESULT Advise([in] ITransferAdviseSink *sink, [out] DWORD *cookie); HRESULT Unadvise([in] DWORD cookie); HRESULT SetProperties([in] IPropertyChangeArray *array); HRESULT OpenItem([in] IShellItem *item, [in] TRANSFER_SOURCE_FLAGS flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv); HRESULT MoveItem([in] IShellItem *item, [in] IShellItem *parent_dest, [in, string] LPCWSTR name_dest, [in] TRANSFER_SOURCE_FLAGS flags, [out] IShellItem **newitem); HRESULT RecycleItem([in] IShellItem *source, [in] IShellItem *parent_dest, [in] TRANSFER_SOURCE_FLAGS flags, [out] IShellItem **new_dest); HRESULT RemoveItem([in] IShellItem *source, [in] TRANSFER_SOURCE_FLAGS flags); HRESULT RenameItem([in] IShellItem *source, [in, string] LPCWSTR newname, [in] TRANSFER_SOURCE_FLAGS flags, [out] IShellItem **new_dest); HRESULT LinkItem([in] IShellItem *source, [in] IShellItem *parent_dest, [in, unique, string] LPCWSTR new_name, [in] TRANSFER_SOURCE_FLAGS flags, [out] IShellItem **new_dest); HRESULT ApplyPropertiesToItem([in] IShellItem *source, [out] IShellItem **newitem); HRESULT GetDefaultDestinationName([in] IShellItem *source, [in] IShellItem *parent_dest, [out, string] LPWSTR *dest_name); HRESULT EnterFolder([in] IShellItem *child_folder); HRESULT LeaveFolder([in] IShellItem *child_folder); } [ uuid(48addd32-3ca5-4124-abe3-b5a72531b207), object, pointer_default(unique) ] interface ITransferDestination : IUnknown { HRESULT Advise([in] ITransferAdviseSink *sink, [out] DWORD *cookie); HRESULT Unadvise([in] DWORD cookie); HRESULT CreateItem([in, string] LPCWSTR name, [in] DWORD attr, [in] ULONGLONG size, [in] TRANSFER_SOURCE_FLAGS flags, [in] REFIID riid, [out, iid_is(riid)] void **ppv, [in] REFIID resources, [out, iid_is(riid)] void **presources); } [ uuid(92218cab-ecaa-4335-8133-807fd234c2ee), object, pointer_default(unique) ] interface IAssocHandlerInvoker : IUnknown { HRESULT SupportsSelection(); HRESULT Invoke(); } [ uuid(f04061ac-1659-4a3f-a954-775aa57fc083), object, pointer_default(unique) ] interface IAssocHandler : IUnknown { HRESULT GetName([out, string] LPWSTR *name); HRESULT GetUIName([out, string] LPWSTR *uiname); HRESULT GetIconLocation([out, string] LPWSTR *path, [out] int *index); HRESULT IsRecommended(); HRESULT MakeDefault([in, string] LPCWSTR description); HRESULT Invoke([in] IDataObject *object); HRESULT CreateInvoker([in] IDataObject *object, [out] IAssocHandlerInvoker **invoker); } [ uuid(973810ae-9599-4b88-9e4d-6ee98c9552da), object, pointer_default(unique) ] interface IEnumAssocHandlers : IUnknown { HRESULT Next([in] ULONG count, [out, size_is(count), length_is(*fetched)] IAssocHandler **handlers, [out] ULONG *fetched); } typedef enum ASSOC_FILTER { ASSOC_FILTER_NONE = 0, ASSOC_FILTER_RECOMMENDED } ASSOC_FILTER; cpp_quote("HRESULT WINAPI SHAssocEnumHandlers(PCWSTR extra, ASSOC_FILTER filter, IEnumAssocHandlers **handlersenum);") [ uuid(1df0d7f1-b267-4d28-8b10-12e23202a5c4), ] interface IItemNameLimits : IUnknown { HRESULT GetValidCharacters( [out, string] LPWSTR *validchars, [out, string] LPWSTR *invalidchars); HRESULT GetMaxLength( [in, string] LPCWSTR name, [out] int *max_length); } typedef [v1_enum] enum ACTIVATEOPTIONS { AO_NONE = 0x00000000, AO_DESIGNMODE = 0x00000001, AO_NOERRORUI = 0x00000002, AO_NOSPLASHSCREEN = 0x00000004, AO_PRELAUNCH = 0x02000000 } ACTIVATEOPTIONS; [ uuid(2e941141-7f97-4756-ba1d-9decde894a3d), object, pointer_default(unique) ] interface IApplicationActivationManager : IUnknown { HRESULT ActivateApplication([in] LPCWSTR appusermodelid, [in, unique] LPCWSTR arguments, [in] ACTIVATEOPTIONS options, [out] DWORD *processid); HRESULT ActivateForFile([in] LPCWSTR appusermodelid, [in] IShellItemArray *itemarray, [in, unique] LPCWSTR verb, [out] DWORD *processid); HRESULT ActivateForProtocol([in] LPCWSTR appusermodelid, [in] IShellItemArray *itemarray, [out] DWORD *processid); } [ object, uuid(fec87aaf-35f9-447a-adb7-20234491401a), pointer_default(unique) ] interface IPreviewHandlerFrame : IUnknown { typedef struct PREVIEWHANDLERFRAMEINFO { HACCEL haccel; UINT cAccelEntries; } PREVIEWHANDLERFRAMEINFO; HRESULT GetWindowContext([out] PREVIEWHANDLERFRAMEINFO *info); HRESULT TranslateAccelerator([in] MSG *msg); } /***************************************************************************** * ShellObjects typelibrary */ [ uuid(50A7E9B1-70EF-11D1-B75A-00A0C90564FE), lcid(0x0000), version(1.0) ] library ShellObjects { [ uuid(71F96385-DDD6-48D3-A0C1-AE06E8B055FB) ] coclass ExplorerBrowser { interface IExplorerBrowser; } [ uuid(DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7) ] coclass FileOpenDialog { interface IFileOpenDialog; } [ uuid(C0B4E2F3-BA21-4773-8DBA-335EC946EB8B) ] coclass FileSaveDialog { interface IFileSaveDialog; } [ uuid(AE054212-3535-4430-83ED-D501AA6680E6) ] coclass NamespaceTreeControl { interface INameSpaceTreeControl2; } [ uuid(4df0c730-df9d-4ae3-9153-aa6b82e9795a) ] coclass KnownFolderManager { interface IKnownFolderManager; } [ uuid(591209c7-767b-42b2-9fba-44ee4615f2c7) ] coclass ApplicationAssociationRegistration { interface IApplicationAssociationRegistration; } [ uuid(86c14003-4d6b-4ef3-a7b4-0506663b2e68) ] coclass ApplicationDestinations { interface IApplicationDestinations; } [ uuid(00021401-0000-0000-c000-000000000046) ] coclass ShellLink { interface IShellLinkW; } [ uuid(56fdf344-fd6d-11d0-958a-006097c9a090) ] coclass TaskbarList { interface ITaskbarList4; } [ uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6) ] coclass DestinationList { interface ICustomDestinationList; } [ uuid(2d3468c1-36a7-43b6-ac24-d3f02fd9607a) ] coclass EnumerableObjectCollection { interface IEnumObjects; } [ uuid(331f1768-05a9-4ddd-b86e-dae34ddc998a) ] coclass QueryCancelAutoPlay { interface IQueryCancelAutoPlay; } [ uuid(45ba127d-10a8-46ea-8ab7-56ea9078943c) ] coclass ApplicationActivationManager { interface IApplicationActivationManager; } [ uuid(3ad05575-8857-4850-9277-11b85bdb8e09) ] coclass FileOperation { interface IFileOperation; } } [v1_enum] enum _OPPROGDLGF { OPPROGDLG_DEFAULT = 0x00000000, OPPROGDLG_ENABLEPAUSE = 0x00000080, OPPROGDLG_ALLOWUNDO = 0x00000100, OPPROGDLG_DONTDISPLAYSOURCEPATH = 0x00000200, OPPROGDLG_DONTDISPLAYDESTPATH = 0x00000400, OPPROGDLG_NOMULTIDAYESTIMATES = 0x00000800, OPPROGDLG_DONTDISPLAYLOCATIONS = 0x00001000, }; typedef DWORD OPPROGDLGF; typedef [v1_enum] enum _SPACTION { SPACTION_NONE, SPACTION_MOVING, SPACTION_COPYING, SPACTION_RECYCLING, SPACTION_APPLYINGATTRIBS, SPACTION_DOWNLOADING, SPACTION_SEARCHING_INTERNET, SPACTION_CALCULATING, SPACTION_UPLOADING, SPACTION_SEARCHING_FILES, SPACTION_DELETING, SPACTION_RENAMING, SPACTION_FORMATTING, SPACTION_COPY_MOVING, } SPACTION; [ object, uuid(0c9fb851-e5c9-43eb-a370-f0677b13874c), pointer_default(unique) ] interface IOperationsProgressDialog : IUnknown { [v1_enum] enum _PDMODE { PDM_DEFAULT = 0x00000000, PDM_RUN = 0x00000001, PDM_PREFLIGHT = 0x00000002, PDM_UNDOING = 0x00000004, PDM_ERRORSBLOCKING = 0x00000008, PDM_INDETERMINATE = 0x00000010, }; typedef DWORD PDMODE; typedef [v1_enum] enum PDOPSTATUS { PDOPS_RUNNING = 1, PDOPS_PAUSED, PDOPS_CANCELLED, PDOPS_STOPPED, PDOPS_ERRORS } PDOPSTATUS; HRESULT StartProgressDialog([in, unique] HWND owner, [in] OPPROGDLGF flags); HRESULT StopProgressDialog(); HRESULT SetOperation([in] SPACTION action); HRESULT SetMode([in] PDMODE mode); HRESULT UpdateProgress([in] ULONGLONG current_points, [in] ULONGLONG total_points, [in] ULONGLONG current_size, [in] ULONGLONG total_size, [in] ULONGLONG current_item, [in] ULONGLONG total_item); HRESULT UpdateLocations([in, unique] IShellItem *source, [in, unique] IShellItem *target, [in, unique] IShellItem *item); HRESULT ResetTimer(); HRESULT PauseTimer(); HRESULT ResumeTimer(); HRESULT GetMilliseconds([out] ULONGLONG *elapsed, [out] ULONGLONG *remaining); HRESULT GetOperationStatus([out] PDOPSTATUS *status); } [ object, uuid(947aab5f-0a5c-4c13-b4d6-4bf7836fc9f8), pointer_default(unique) ] interface IFileOperation : IUnknown { HRESULT Advise([in] IFileOperationProgressSink *sink, [out] DWORD *cookie); HRESULT Unadvise([in] DWORD cookie); HRESULT SetOperationFlags([in] DWORD flags); HRESULT SetProgressMessage([in, string] LPCWSTR message); HRESULT SetProgressDialog([in] IOperationsProgressDialog *dialog); HRESULT SetProperties([in] IPropertyChangeArray *array); HRESULT SetOwnerWindow([in] HWND owner); HRESULT ApplyPropertiesToItem([in] IShellItem *item); HRESULT ApplyPropertiesToItems([in] IUnknown *items); HRESULT RenameItem([in] IShellItem *item, [in, string] LPCWSTR name, [in, unique] IFileOperationProgressSink *sink); HRESULT RenameItems([in] IUnknown *items, [in, string] LPCWSTR name); HRESULT MoveItem([in] IShellItem *item, [in] IShellItem *folder, [in, unique, string] LPCWSTR name, [in, unique] IFileOperationProgressSink *sink); HRESULT MoveItems([in] IUnknown *items, [in] IShellItem *folder); HRESULT CopyItem([in] IShellItem *item, [in] IShellItem *folder, [in, unique, string] LPCWSTR name, [in, unique] IFileOperationProgressSink *sink); HRESULT CopyItems([in] IUnknown *items, [in] IShellItem *folder); HRESULT DeleteItem([in] IShellItem *item, [in, unique] IFileOperationProgressSink *sink); HRESULT DeleteItems([in] IUnknown *items); HRESULT NewItem([in] IShellItem *folder, [in] DWORD attributes, [in, unique, string] LPCWSTR name, [in, unique, string] LPCWSTR template_name, [in, unique] IFileOperationProgressSink *sink); HRESULT PerformOperations(); HRESULT GetAnyOperationsAborted([out] BOOL *aborted); }