diff -r 000000000000 -r 76b1f169d9fe mingw-5.1.4/win32/include/shlobj.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mingw-5.1.4/win32/include/shlobj.h Fri Apr 03 17:16:45 2009 +0100 @@ -0,0 +1,1535 @@ +#ifndef _SHLOBJ_H +#define _SHLOBJ_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#pragma pack(push,1) +#include + +#define BIF_RETURNONLYFSDIRS 1 +#define BIF_DONTGOBELOWDOMAIN 2 +#define BIF_STATUSTEXT 4 +#define BIF_RETURNFSANCESTORS 8 +#define BIF_EDITBOX 16 +#define BIF_VALIDATE 32 +#define BIF_NEWDIALOGSTYLE 64 +#define BIF_BROWSEINCLUDEURLS 128 +#define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE ) +#define BIF_BROWSEFORCOMPUTER 0x1000 +#define BIF_BROWSEFORPRINTER 0x2000 +#define BIF_BROWSEINCLUDEFILES 0x4000 +#define BIF_SHAREABLE 0x8000 +#define BFFM_INITIALIZED 1 +#define BFFM_SELCHANGED 2 +#define BFFM_VALIDATEFAILEDA 3 +#define BFFM_VALIDATEFAILEDW 4 +#define BFFM_SETSTATUSTEXTA (WM_USER + 100) +#define BFFM_SETSTATUSTEXTW (WM_USER + 104) +#define BFFM_ENABLEOK (WM_USER + 101) +#define BFFM_SETSELECTIONA (WM_USER + 102) +#define BFFM_SETSELECTIONW (WM_USER + 103) +#define BFFM_SETOKTEXT (WM_USER + 105) +#define BFFM_SETEXPANDED (WM_USER + 106) +#ifdef UNICODE +#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW +#define BFFM_SETSELECTION BFFM_SETSELECTIONW +#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW +#else +#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTA +#define BFFM_SETSELECTION BFFM_SETSELECTIONA +#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA +#endif +#define DVASPECT_SHORTNAME 2 +#define SHARD_PIDL 1 +#define SHARD_PATH 2 +#define SHCNE_RENAMEITEM 1 +#define SHCNE_CREATE 2 +#define SHCNE_DELETE 4 +#define SHCNE_MKDIR 8 +#define SHCNE_RMDIR 16 +#define SHCNE_MEDIAINSERTED 32 +#define SHCNE_MEDIAREMOVED 64 +#define SHCNE_DRIVEREMOVED 128 +#define SHCNE_DRIVEADD 256 +#define SHCNE_NETSHARE 512 +#define SHCNE_NETUNSHARE 1024 +#define SHCNE_ATTRIBUTES 2048 +#define SHCNE_UPDATEDIR 4096 +#define SHCNE_UPDATEITEM 8192 +#define SHCNE_SERVERDISCONNECT 16384 +#define SHCNE_UPDATEIMAGE 32768 +#define SHCNE_DRIVEADDGUI 65536 +#define SHCNE_RENAMEFOLDER 0x20000 +#define SHCNE_FREESPACE 0x40000 +#define SHCNE_ASSOCCHANGED 0x8000000 +#define SHCNE_DISKEVENTS 0x2381F +#define SHCNE_GLOBALEVENTS 0xC0581E0 +#define SHCNE_ALLEVENTS 0x7FFFFFFF +#define SHCNE_INTERRUPT 0x80000000 +#define SHCNF_IDLIST 0 +#define SHCNF_PATHA 1 +#define SHCNF_PRINTERA 2 +#define SHCNF_DWORD 3 +#define SHCNF_PATHW 5 +#define SHCNF_PRINTERW 6 +#define SHCNF_TYPE 0xFF +#define SHCNF_FLUSH 0x1000 +#define SHCNF_FLUSHNOWAIT 0x2000 +#ifdef UNICODE +#define SHCNF_PATH SHCNF_PATHW +#define SHCNF_PRINTER SHCNF_PRINTERW +#else +#define SHCNF_PATH SHCNF_PATHA +#define SHCNF_PRINTER SHCNF_PRINTERA +#endif +#define SFGAO_CANCOPY DROPEFFECT_COPY +#define SFGAO_CANMOVE DROPEFFECT_MOVE +#define SFGAO_CANLINK DROPEFFECT_LINK +#define SFGAO_CANRENAME 0x00000010L +#define SFGAO_CANDELETE 0x00000020L +#define SFGAO_HASPROPSHEET 0x00000040L +#define SFGAO_DROPTARGET 0x00000100L +#define SFGAO_CAPABILITYMASK 0x00000177L +#define SFGAO_ISSLOW 0x00004000L +#define SFGAO_GHOSTED 0x00008000L +#define SFGAO_LINK 0x00010000L +#define SFGAO_SHARE 0x00020000L +#define SFGAO_READONLY 0x00040000L +#define SFGAO_HIDDEN 0x00080000L +#define SFGAO_DISPLAYATTRMASK (SFGAO_ISSLOW \ + | SFGAO_GHOSTED \ + | SFGAO_LINK \ + | SFGAO_SHARE \ + | SFGAO_READONLY \ + | SFGAO_HIDDEN) +#define SFGAO_FILESYSANCESTOR 0x10000000L +#define SFGAO_FOLDER 0x20000000L +#define SFGAO_FILESYSTEM 0x40000000L +#define SFGAO_HASSUBFOLDER 0x80000000L +#define SFGAO_CONTENTSMASK 0x80000000L +#define SFGAO_VALIDATE 0x01000000L +#define SFGAO_REMOVABLE 0x02000000L +#define SFGAO_COMPRESSED 0x04000000L +#define STRRET_WSTR 0 +#define STRRET_OFFSET 1 +#define STRRET_CSTR 2 +#define SHGDFIL_FINDDATA 1 +#define SHGDFIL_NETRESOURCE 2 +#define SHGDFIL_DESCRIPTIONID 3 +#define SHDID_ROOT_REGITEM 1 +#define SHDID_FS_FILE 2 +#define SHDID_FS_DIRECTORY 3 +#define SHDID_FS_OTHER 4 +#define SHDID_COMPUTER_DRIVE35 5 +#define SHDID_COMPUTER_DRIVE525 6 +#define SHDID_COMPUTER_REMOVABLE 7 +#define SHDID_COMPUTER_FIXED 8 +#define SHDID_COMPUTER_NETDRIVE 9 +#define SHDID_COMPUTER_CDROM 10 +#define SHDID_COMPUTER_RAMDISK 11 +#define SHDID_COMPUTER_OTHER 12 +#define SHDID_NET_DOMAIN 13 +#define SHDID_NET_SERVER 14 +#define SHDID_NET_SHARE 15 +#define SHDID_NET_RESTOFNET 16 +#define SHDID_NET_OTHER 17 +#ifndef REGSTR_PATH_EXPLORER +#define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer") +#endif +#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders") +#define CSIDL_DESKTOP 0 +#define CSIDL_INTERNET 1 +#define CSIDL_PROGRAMS 2 +#define CSIDL_CONTROLS 3 +#define CSIDL_PRINTERS 4 +#define CSIDL_PERSONAL 5 +#define CSIDL_FAVORITES 6 +#define CSIDL_STARTUP 7 +#define CSIDL_RECENT 8 +#define CSIDL_SENDTO 9 +#define CSIDL_BITBUCKET 10 +#define CSIDL_STARTMENU 11 +#define CSIDL_MYMUSIC 13 +#define CSIDL_MYVIDEO 14 +#define CSIDL_DESKTOPDIRECTORY 16 +#define CSIDL_DRIVES 17 +#define CSIDL_NETWORK 18 +#define CSIDL_NETHOOD 19 +#define CSIDL_FONTS 20 +#define CSIDL_TEMPLATES 21 +#define CSIDL_COMMON_STARTMENU 22 +#define CSIDL_COMMON_PROGRAMS 23 +#define CSIDL_COMMON_STARTUP 24 +#define CSIDL_COMMON_DESKTOPDIRECTORY 25 +#define CSIDL_APPDATA 26 +#define CSIDL_PRINTHOOD 27 +#define CSIDL_LOCAL_APPDATA 28 +#define CSIDL_ALTSTARTUP 29 +#define CSIDL_COMMON_ALTSTARTUP 30 +#define CSIDL_COMMON_FAVORITES 31 +#define CSIDL_INTERNET_CACHE 32 +#define CSIDL_COOKIES 33 +#define CSIDL_HISTORY 34 +#define CSIDL_COMMON_APPDATA 35 +#define CSIDL_WINDOWS 36 +#define CSIDL_SYSTEM 37 +#define CSIDL_PROGRAM_FILES 38 +#define CSIDL_MYPICTURES 39 +#define CSIDL_PROFILE 40 +#define CSIDL_SYSTEMX86 41 +#define CSIDL_PROGRAM_FILESX86 42 +#define CSIDL_PROGRAM_FILES_COMMON 43 +#define CSIDL_PROGRAM_FILES_COMMONX86 44 +#define CSIDL_COMMON_TEMPLATES 45 +#define CSIDL_COMMON_DOCUMENTS 46 +#define CSIDL_COMMON_ADMINTOOLS 47 +#define CSIDL_ADMINTOOLS 48 +#define CSIDL_CONNECTIONS 49 +#define CSIDL_COMMON_MUSIC 53 +#define CSIDL_COMMON_PICTURES 54 +#define CSIDL_COMMON_VIDEO 55 +#define CSIDL_RESOURCES 56 +#define CSIDL_RESOURCES_LOCALIZED 57 +#define CSIDL_COMMON_OEM_LINKS 58 +#define CSIDL_CDBURN_AREA 59 +#define CSIDL_COMPUTERSNEARME 61 +#define CSIDL_FLAG_DONT_VERIFY 0x4000 +#define CSIDL_FLAG_CREATE 0x8000 +#define CSIDL_FLAG_MASK 0xFF00 +#define CFSTR_SHELLIDLIST TEXT("Shell IDList Array") +#define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets") +#define CFSTR_NETRESOURCES TEXT("Net Resource") +#define CFSTR_FILECONTENTS TEXT("FileContents") +#define CFSTR_FILENAMEA TEXT("FileName") +#define CFSTR_FILENAMEMAPA TEXT("FileNameMap") +#define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor") +#define CFSTR_INETURLA TEXT("UniformResourceLocator") +#define CFSTR_SHELLURL CFSTR_INETURLA +#define CFSTR_FILENAMEW TEXT("FileNameW") +#define CFSTR_FILENAMEMAPW TEXT("FileNameMapW") +#define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW") +#define CFSTR_INETURLW TEXT("UniformResourceLocatorW") +#ifdef UNICODE +#define CFSTR_FILENAME CFSTR_FILENAMEW +#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPW +#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORW +#define CFSTR_INETURL CFSTR_INETURLW +#else +#define CFSTR_FILENAME CFSTR_FILENAMEA +#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPA +#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORA +#define CFSTR_INETURL CFSTR_INETURLA +#endif +#define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName") +#define CFSTR_INDRAGLOOP TEXT("InShellDragLoop") +#define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded") +#define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect") +#define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect") +#define CMF_NORMAL 0 +#define CMF_DEFAULTONLY 1 +#define CMF_VERBSONLY 2 +#define CMF_EXPLORE 4 +#define CMF_NOVERBS 8 +#define CMF_CANRENAME 16 +#define CMF_NODEFAULT 32 +#define CMF_INCLUDESTATIC 64 +#define CMF_RESERVED 0xffff0000 +#define GCS_VERBA 0 +#define GCS_HELPTEXTA 1 +#define GCS_VALIDATEA 2 +#define GCS_VERBW 4 +#define GCS_HELPTEXTW 5 +#define GCS_VALIDATEW 6 +#define GCS_UNICODE 4 +#ifdef UNICODE +#define GCS_VERB GCS_VERBW +#define GCS_HELPTEXT GCS_HELPTEXTW +#define GCS_VALIDATE GCS_VALIDATEW +#else +#define GCS_VERB GCS_VERBA +#define GCS_HELPTEXT GCS_HELPTEXTA +#define GCS_VALIDATE GCS_VALIDATEA +#endif +#define CMDSTR_NEWFOLDERA "NewFolder" +#define CMDSTR_VIEWLISTA "ViewList" +#define CMDSTR_VIEWDETAILSA "ViewDetails" +#define CMDSTR_NEWFOLDERW L"NewFolder" +#define CMDSTR_VIEWLISTW L"ViewList" +#define CMDSTR_VIEWDETAILSW L"ViewDetails" +#ifdef UNICODE +#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDERW +#define CMDSTR_VIEWLIST CMDSTR_VIEWLISTW +#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSW +#else +#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDER +#define CMDSTR_VIEWLIST CMDSTR_VIEWLIST +#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILS +#endif +#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY +#define CMIC_MASK_ICON SEE_MASK_ICON +#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI +#define CMIC_MASK_MODAL 0x80000000 +#define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS +#define GIL_OPENICON 1 +#define GIL_FORSHELL 2 +#define GIL_SIMULATEDOC 1 +#define GIL_PERINSTANCE 2 +#define GIL_PERCLASS 4 +#define GIL_NOTFILENAME 8 +#define GIL_DONTCACHE 16 +#define FVSIF_RECT 1 +#define FVSIF_PINNED 2 +#define FVSIF_NEWFAILED 0x8000000 +#define FVSIF_NEWFILE 0x80000000 +#define FVSIF_CANVIEWIT 0x40000000 +#define CDBOSC_SETFOCUS 0 +#define CDBOSC_KILLFOCUS 1 +#define CDBOSC_SELCHANGE 2 +#define CDBOSC_RENAME 3 +#define FCIDM_SHVIEWFIRST 0 +#define FCIDM_SHVIEWLAST 0x7fff +#define FCIDM_BROWSERFIRST 0xa000 +#define FCIDM_BROWSERLAST 0xbf00 +#define FCIDM_GLOBALFIRST 0x8000 +#define FCIDM_GLOBALLAST 0x9fff +#define FCIDM_MENU_FILE FCIDM_GLOBALFIRST +#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040) +#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080) +#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081) +#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0) +#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1) +#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100) +#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140) +#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150) +#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170) +#define FCIDM_TOOLBAR FCIDM_BROWSERFIRST +#define FCIDM_STATUS (FCIDM_BROWSERFIRST+1) +#define SBSP_DEFBROWSER 0 +#define SBSP_SAMEBROWSER 1 +#define SBSP_NEWBROWSER 2 +#define SBSP_DEFMODE 0 +#define SBSP_OPENMODE 16 +#define SBSP_EXPLOREMODE 32 +#define SBSP_ABSOLUTE 0 +#define SBSP_RELATIVE 0x1000 +#define SBSP_PARENT 0x2000 +#define SBSP_INITIATEDBYHLINKFRAME 0x80000000 +#define SBSP_REDIRECT 0x40000000 +#define FCW_STATUS 1 +#define FCW_TOOLBAR 2 +#define FCW_TREE 3 +#define FCT_MERGE 1 +#define FCT_CONFIGABLE 2 +#define FCT_ADDTOEND 4 +#define SVSI_DESELECT 0 +#define SVSI_SELECT 1 +#define SVSI_EDIT 3 +#define SVSI_DESELECTOTHERS 4 +#define SVSI_ENSUREVISIBLE 8 +#define SVSI_FOCUSED 16 +#define SVGIO_BACKGROUND 0 +#define SVGIO_SELECTION 1 +#define SVGIO_ALLVIEW 2 +#define SV2GV_CURRENTVIEW ((UINT)-1) +#define SV2GV_DEFAULTVIEW ((UINT)-2) + +typedef ULONG SFGAOF; +typedef DWORD SHGDNF; + +typedef struct _IDA { + UINT cidl; + UINT aoffset[1]; +} CIDA,*LPIDA; +typedef struct _SHITEMID { + USHORT cb; + BYTE abID[1]; +} SHITEMID, * LPSHITEMID; +typedef const SHITEMID *LPCSHITEMID; +typedef struct _ITEMIDLIST { + SHITEMID mkid; +} ITEMIDLIST,*LPITEMIDLIST; +typedef const ITEMIDLIST *LPCITEMIDLIST; +typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM); +typedef struct _browseinfoA { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPSTR pszDisplayName; + LPCSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA; +typedef struct _browseinfoW { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPWSTR pszDisplayName; + LPCWSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW; +typedef struct _CMInvokeCommandInfo { + DWORD cbSize; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + DWORD dwHotKey; + HANDLE hIcon; +} CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO; +typedef struct _DROPFILES { + DWORD pFiles; + POINT pt; + BOOL fNC; + BOOL fWide; +} DROPFILES,*LPDROPFILES; +typedef enum tagSHGDN { + SHGDN_NORMAL=0, + SHGDN_INFOLDER, + SHGDN_FOREDITING=0x1000, + SHGDN_INCLUDE_NONFILESYS=0x2000, + SHGDN_FORADDRESSBAR=0x4000, + SHGDN_FORPARSING=0x8000 +} SHGNO; +typedef enum tagSHCONTF { + SHCONTF_FOLDERS = 32, + SHCONTF_NONFOLDERS = 64, + SHCONTF_INCLUDEHIDDEN = 128, + SHCONTF_INIT_ON_FIRST_NEXT = 256, + SHCONTF_NETPRINTERSRCH = 512, + SHCONTF_SHAREABLE = 1024, + SHCONTF_STORAGE = 2048 +} SHCONTF; +typedef struct _STRRET { + UINT uType; + _ANONYMOUS_UNION union { + LPWSTR pOleStr; + UINT uOffset; + char cStr[MAX_PATH]; + } DUMMYUNIONNAME; +} STRRET,*LPSTRRET; +typedef enum { + FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16, + FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000 +} FD_FLAGS; +typedef struct _FILEDESCRIPTORA { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + CHAR cFileName[MAX_PATH]; +} FILEDESCRIPTORA,*LPFILEDESCRIPTORA; +typedef struct _FILEDESCRIPTORW { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + WCHAR cFileName[MAX_PATH]; +} FILEDESCRIPTORW,*LPFILEDESCRIPTORW; +typedef struct _FILEGROUPDESCRIPTORA { + UINT cItems; + FILEDESCRIPTORA fgd[1]; +} FILEGROUPDESCRIPTORA,*LPFILEGROUPDESCRIPTORA; +typedef struct _FILEGROUPDESCRIPTORW { + UINT cItems; + FILEDESCRIPTORW fgd[1]; +} FILEGROUPDESCRIPTORW,*LPFILEGROUPDESCRIPTORW; +typedef enum { + SLR_NO_UI=1, + SLR_ANY_MATCH=2, + SLR_UPDATE=4, + SLR_NOUPDATE=8, + SLR_NOSEARCH=16, + SLR_NOTRACK=32, + SLR_NOLINKINFO=64, + SLR_INVOKE_MSI=128 +} SLR_FLAGS; +typedef enum { + SLGP_SHORTPATH=1, + SLGP_UNCPRIORITY=2, + SLGP_RAWPATH=4 +} SLGP_FLAGS; +typedef PBYTE LPVIEWSETTINGS; +typedef enum { + FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8, + FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128, + FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800, + FWF_SINGLECLICKACTIVATE=0x8000 +} FOLDERFLAGS; +typedef enum { + FVM_ICON=1, + FVM_SMALLICON, + FVM_LIST, + FVM_DETAILS +} FOLDERVIEWMODE; +typedef struct { + UINT ViewMode; + UINT fFlags; +} FOLDERSETTINGS,*LPFOLDERSETTINGS; +typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS; +typedef struct { + DWORD cbSize; + HWND hwndOwner; + int iShow; + DWORD dwFlags; + RECT rect; + LPUNKNOWN punkRel; + OLECHAR strNewFile[MAX_PATH]; +} FVSHOWINFO,*LPFVSHOWINFO; +typedef struct _NRESARRAY { + UINT cItems; + NETRESOURCE nr[1]; +} NRESARRAY, *LPNRESARRAY; +enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY }; +enum { + SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION, + SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS +}; +typedef enum { + SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS, + SVUIA_INPLACEACTIVATE +} SVUIA_STATUS; +#if (_WIN32_IE >= 0x0500) +typedef struct tagEXTRASEARCH +{ + GUID guidSearch; + WCHAR wszFriendlyName[80]; + WCHAR wszUrl[2084]; +} EXTRASEARCH, *LPEXTRASEARCH; +typedef DWORD SHCOLSTATEF; +typedef struct +{ + GUID fmtid; + DWORD pid; +} SHCOLUMNID, *LPSHCOLUMNID; +typedef const SHCOLUMNID *LPCSHCOLUMNID; +typedef struct _SHELLDETAILS +{ + int fmt; + int cxChar; + STRRET str; +} SHELLDETAILS, *LPSHELLDETAILS; +typedef struct +{ + LPITEMIDLIST pidlTargetFolder; + WCHAR szTargetParsingName[MAX_PATH]; + WCHAR szNetworkProvider[MAX_PATH]; + DWORD dwAttributes; + int csidl; +} PERSIST_FOLDER_TARGET_INFO; + +typedef enum { + SHGFP_TYPE_CURRENT = 0, + SHGFP_TYPE_DEFAULT = 1, +} SHGFP_TYPE; +#endif + + +DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST); +typedef IEnumIDList *LPENUMIDLIST; + +#ifdef COBJMACROS +#define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T) +#define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T) +#define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c) +#define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a) +#define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T) +#define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a) +#endif + +#define INTERFACE IObjMgr +DECLARE_INTERFACE_(IObjMgr, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Append)(THIS_ IUnknown*) PURE; + STDMETHOD(Remove)(THIS_ IUnknown*) PURE; +}; +#undef INTERFACE + +#define INTERFACE IContextMenu +DECLARE_INTERFACE_(IContextMenu,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE; + STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE; + STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE; +}; +#undef INTERFACE +typedef IContextMenu *LPCONTEXTMENU; + +#ifdef COBJMACROS +#define IContextMenu_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IContextMenu_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IContextMenu_Release(T) (T)->lpVtbl->Release(T) +#define IContextMenu_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e) +#define IContextMenu_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a) +#define IContextMenu_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e) +#endif + +#define INTERFACE IContextMenu2 +DECLARE_INTERFACE_(IContextMenu2,IContextMenu) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE; + STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE; + STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE; + STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE; +}; +#undef INTERFACE +typedef IContextMenu2 *LPCONTEXTMENU2; + +#define INTERFACE IContextMenu3 +DECLARE_INTERFACE_(IContextMenu3,IContextMenu2) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE; + STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE; + STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE; + STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE; + STDMETHOD(HandleMenuMsg2)(THIS_ UINT,WPARAM,LPARAM,LRESULT*) PURE; +}; +#undef INTERFACE +typedef IContextMenu3 *LPCONTEXTMENU3; + +#if (_WIN32_IE >= 0x0500) +#pragma pack(push,8) +typedef struct { + ULONG dwFlags; + ULONG dwReserved; + WCHAR wszFolder[MAX_PATH]; +} SHCOLUMNINIT,*LPSHCOLUMNINIT; +typedef const SHCOLUMNINIT* LPCSHCOLUMNINIT; +typedef struct { + ULONG dwFlags; + DWORD dwFileAttributes; + ULONG dwReserved; + WCHAR *pwszExt; + WCHAR wszFile[MAX_PATH]; +} SHCOLUMNDATA,*LPSHCOLUMNDATA; +typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA; +#pragma pack(pop) + +#define MAX_COLUMN_NAME_LEN 80 +#define MAX_COLUMN_DESC_LEN 128 + +#pragma pack(push,1) +typedef struct { + SHCOLUMNID scid; + VARTYPE vt; + DWORD fmt; + UINT cChars; + DWORD csFlags; + WCHAR wszTitle[MAX_COLUMN_NAME_LEN]; + WCHAR wszDescription[MAX_COLUMN_DESC_LEN]; +} SHCOLUMNINFO,*LPSHCOLUMNINFO; +typedef const SHCOLUMNINFO* LPCSHCOLUMNINFO; +#pragma pack(pop) + +typedef enum { + SHCOLSTATE_TYPE_STR = 0x00000001, + SHCOLSTATE_TYPE_INT = 0x00000002, + SHCOLSTATE_TYPE_DATE = 0x00000003, + SHCOLSTATE_TYPEMASK = 0x0000000f, + SHCOLSTATE_ONBYDEFAULT = 0x00000010, + SHCOLSTATE_SLOW = 0x00000020, + SHCOLSTATE_EXTENDED = 0x00000040, + SHCOLSTATE_SECONDARYUI = 0x00000080, + SHCOLSTATE_HIDDEN = 0x00000100, + SHCOLSTATE_PREFER_VARCMP = 0x00000200 +} SHCOLSTATE; + +#ifdef COBJMACROS +#define IContextMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IContextMenu2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IContextMenu2_Release(T) (T)->lpVtbl->Release(T) +#define IContextMenu2_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e) +#define IContextMenu2_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a) +#define IContextMenu2_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e) +#define IContextMenu2_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c) +#endif + +#ifdef COBJMACROS +#define IContextMenu3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IContextMenu3_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IContextMenu3_Release(T) (T)->lpVtbl->Release(T) +#define IContextMenu3_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e) +#define IContextMenu3_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a) +#define IContextMenu3_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e) +#define IContextMenu3_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c) +#define IContextMenu3_HandleMenuMsg2(T,a,b,c,d) (T)->lpVtbl->HandleMenuMsg(T,a,b,c,d) +#endif + +#define INTERFACE IColumnProvider +DECLARE_INTERFACE_(IColumnProvider,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Initialize)(THIS_ LPCSHCOLUMNINIT) PURE; + STDMETHOD(GetColumnInfo)(THIS_ DWORD,SHCOLUMNINFO*) PURE; + STDMETHOD(GetItemData)(THIS_ LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*) PURE; +}; +#undef INTERFACE +#endif /* _WIN32_IE >= 0x0500 */ + +#define INTERFACE IQueryInfo +DECLARE_INTERFACE_(IQueryInfo,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetInfoTip)(THIS_ DWORD,WCHAR**) PURE; + STDMETHOD(GetInfoFlags)(THIS_ DWORD*) PURE; +}; +#undef INTERFACE + +#define INTERFACE IShellExtInit +DECLARE_INTERFACE_(IShellExtInit, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE; +}; +#undef INTERFACE +typedef IShellExtInit *LPSHELLEXTINIT; + +#define INTERFACE IShellPropSheetExt +DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE; + STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE; +}; +#undef INTERFACE +typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT; + +#define INTERFACE IExtractIconA +DECLARE_INTERFACE_(IExtractIconA, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE; + STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE; +}; +#undef INTERFACE +typedef IExtractIconA *LPEXTRACTICONA; + +#ifdef COBJMACROS +#define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IExtractIconA_Release(T) (T)->lpVtbl->Release(T) +#define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e) +#define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e) +#endif + +#define INTERFACE IExtractIconW +DECLARE_INTERFACE_(IExtractIconW, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE; + STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE; +}; +#undef INTERFACE +typedef IExtractIconW *LPEXTRACTICONW; + +#ifdef COBJMACROS +#define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IExtractIconW_Release(T) (T)->lpVtbl->Release(T) +#define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e) +#define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e) +#endif + +#ifdef UNICODE +#define IExtractIcon IExtractIconW +#define LPEXTRACTICON LPEXTRACTICONW +#else +#define IExtractIcon IExtractIconA +#define LPEXTRACTICON LPEXTRACTICONA +#endif + +#define INTERFACE IShellLinkA +DECLARE_INTERFACE_(IShellLinkA, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE; + STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE; + STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE; + STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE; + STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE; + STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE; + STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE; + STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE; + STDMETHOD(GetHotkey)(THIS_ PWORD) PURE; + STDMETHOD(SetHotkey)(THIS_ WORD) PURE; + STDMETHOD(GetShowCmd)(THIS_ int*) PURE; + STDMETHOD(SetShowCmd)(THIS_ int) PURE; + STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE; + STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE; + STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE; + STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE; + STDMETHOD(SetPath)(THIS_ LPCSTR) PURE; +}; +#undef INTERFACE + +#ifdef COBJMACROS +#define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellLinkA_Release(T) (T)->lpVtbl->Release(T) +#define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d) +#define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a) +#define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a) +#define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b) +#define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a) +#define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b) +#define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a) +#define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b) +#define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a) +#define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a) +#define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a) +#define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a) +#define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a) +#define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c) +#define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b) +#define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b) +#define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b) +#define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a) +#endif + +#define INTERFACE IShellLinkW +DECLARE_INTERFACE_(IShellLinkW, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE; + STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE; + STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE; + STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE; + STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE; + STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE; + STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE; + STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE; + STDMETHOD(GetHotkey)(THIS_ PWORD) PURE; + STDMETHOD(SetHotkey)(THIS_ WORD) PURE; + STDMETHOD(GetShowCmd)(THIS_ int*) PURE; + STDMETHOD(SetShowCmd)(THIS_ int) PURE; + STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE; + STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE; + STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE; + STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE; + STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE; +}; +#undef INTERFACE + +#ifdef COBJMACROS +#define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellLinkW_Release(T) (T)->lpVtbl->Release(T) +#define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d) +#define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a) +#define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a) +#define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b) +#define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a) +#define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b) +#define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a) +#define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b) +#define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a) +#define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a) +#define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a) +#define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a) +#define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a) +#define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c) +#define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b) +#define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b) +#define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b) +#define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a) +#endif + +#define INTERFACE IShellFolder +DECLARE_INTERFACE_(IShellFolder, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE; + STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE; + STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE; + STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE; + STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE; + STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE; + STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE; + STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE; +}; +#undef INTERFACE +typedef IShellFolder *LPSHELLFOLDER; + +#ifdef COBJMACROS +#define IShellFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellFolder_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellFolder_Release(T) (T)->lpVtbl->Release(T) +#define IShellFolder_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f) +#define IShellFolder_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c) +#define IShellFolder_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d) +#define IShellFolder_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d) +#define IShellFolder_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c) +#define IShellFolder_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b) +#define IShellFolder_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c) +#define IShellFolder_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f) +#define IShellFolder_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c) +#define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e) +#endif + +#if (_WIN32_IE >= 0x0500) + +DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH); +typedef IEnumExtraSearch *LPENUMEXTRASEARCH; + +#define INTERFACE IShellFolder2 +DECLARE_INTERFACE_(IShellFolder2, IShellFolder) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE; + STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE; + STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE; + STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE; + STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE; + STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE; + STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE; + STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE; + STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE; + STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE; + STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE; + STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE; + STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE; + STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE; + STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE; +}; +#undef INTERFACE +typedef IShellFolder2 *LPSHELLFOLDER2; + +#ifdef COBJMACROS +#define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellFolder2_Release(T) (T)->lpVtbl->Release(T) +#define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f) +#define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c) +#define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d) +#define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d) +#define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c) +#define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b) +#define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c) +#define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f) +#define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c) +#define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e) +#define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a) +#define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a) +#define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c) +#define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b) +#define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c) +#define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c) +#define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b) +#endif + +#endif /* _WIN32_IE >= 0x0500 */ +#define INTERFACE ICopyHook +DECLARE_INTERFACE_(ICopyHook, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE; +}; +#undef INTERFACE +typedef ICopyHook *LPCOPYHOOK; + +#define INTERFACE IFileViewerSite +DECLARE_INTERFACE(IFileViewerSite) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE; + STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE; +}; +#undef INTERFACE +typedef IFileViewerSite *LPFILEVIEWERSITE; + +#define INTERFACE IFileViewer +DECLARE_INTERFACE(IFileViewer) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE; + STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE; + STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE; +}; +#undef INTERFACE +typedef IFileViewer *LPFILEVIEWER; + +#define INTERFACE IFileSystemBindData +DECLARE_INTERFACE_(IFileSystemBindData, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE; + STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE; +}; +#undef INTERFACE + +#define INTERFACE IPersistFolder +DECLARE_INTERFACE_(IPersistFolder,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; +}; +#undef INTERFACE +typedef IPersistFolder *LPPERSISTFOLDER; + +#ifdef COBJMACROS +#define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#endif + +#if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500) + +#define INTERFACE IPersistFolder2 +DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE; +}; +#undef INTERFACE +typedef IPersistFolder2 *LPPERSISTFOLDER2; + +#ifdef COBJMACROS +#define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a) +#endif + +#endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_IE >= 0x0500) + +#define INTERFACE IPersistFolder3 +DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE; + STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE; + STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE; +}; +#undef INTERFACE +typedef IPersistFolder3 *LPPERSISTFOLDER3; + +#ifdef COBJMACROS +#define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a) +#define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c) +#define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a) +#endif + +#endif /* _WIN32_IE >= 0x0500 */ + +typedef _COM_interface IShellBrowser *LPSHELLBROWSER; +typedef _COM_interface IShellView *LPSHELLVIEW; + +#define INTERFACE IShellBrowser +DECLARE_INTERFACE_(IShellBrowser,IOleWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE; + STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE; + STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE; + STDMETHOD(SetStatusTextSB)(THIS_ LPCOLESTR) PURE; + STDMETHOD(EnableModelessSB)(THIS_ BOOL) PURE; + STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE; + STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE; + STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE; + STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE; + STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE; + STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE; + STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE; + STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE; +}; +#undef INTERFACE + +#ifdef COBJMACROS +#define IShellBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellBrowser_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellBrowser_Release(T) (T)->lpVtbl->Release(T) +#define IShellBrowser_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) +#define IShellBrowser_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) +#define IShellBrowser_InsertMenusSB(T,a,b) (T)->lpVtbl->InsertMenusSB(T,a,b) +#define IShellBrowser_SetMenuSB(T,a,b,c) (T)->lpVtbl->SetMenuSB(T,a,b,c) +#define IShellBrowser_RemoveMenusSB(T,a) (T)->lpVtbl->RemoveMenusSB(T,a) +#define IShellBrowser_SetStatusTextSB(T,a) (T)->lpVtbl->SetStatusTextSB(T,a) +#define IShellBrowser_EnableModelessSB(T,a) (T)->lpVtbl->EnableModelessSB(T,a) +#define IShellBrowser_TranslateAcceleratorSB(T,a,b) (T)->lpVtbl->TranslateAcceleratorSB(T,a,b) +#define IShellBrowser_BrowseObject(T,a,b) (T)->lpVtbl->BrowseObject(T,a,b) +#define IShellBrowser_GetViewStateStream(T,a,b) (T)->lpVtbl->GetViewStateStream(T,a,b) +#define IShellBrowser_GetControlWindow(T,a,b) (T)->lpVtbl->GetControlWindow(T,a,b) +#define IShellBrowser_SendControlMsg(T,a,b,c,d,e) (T)->lpVtbl->SendControlMsg(T,a,b,c,d,e) +#define IShellBrowser_QueryActiveShellView(T,a) (T)->lpVtbl->QueryActiveShellView(T,a) +#define IShellBrowser_OnViewWindowActive(T,a) (T)->lpVtbl->OnViewWindowActive(T,a) +#define IShellBrowser_SetToolbarItems(T,a,b,c) (T)->lpVtbl->SetToolbarItems(T,a,b,c) +#endif + +#define INTERFACE IShellView +DECLARE_INTERFACE_(IShellView,IOleWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE; +#ifdef _FIX_ENABLEMODELESS_CONFLICT + STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +#else + STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; +#endif + STDMETHOD(UIActivate)(THIS_ UINT) PURE; + STDMETHOD(Refresh) (THIS) PURE; + STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE; + STDMETHOD(DestroyViewWindow)(THIS) PURE; + STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE; + STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE; + STDMETHOD(SaveViewState)(THIS) PURE; + STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE; + STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE; +}; +#undef INTERFACE + +#ifdef COBJMACROS +#define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellView_Release(T) (T)->lpVtbl->Release(T) +#define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) +#define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) +#define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a) +#ifdef _FIX_ENABLEMODELESS_CONFLICT +#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a) +#else +#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a) +#endif +#define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a) +#define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T) +#define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e) +#define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T) +#define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a) +#define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c) +#define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T) +#define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b) +#define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c) +#endif + +#define INTERFACE ICommDlgBrowser +DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE; + STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE; + STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE; +}; +#undef INTERFACE +typedef ICommDlgBrowser *LPCOMMDLGBROWSER; + +#ifdef COBJMACROS +#define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T) +#define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T) +#define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a) +#define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b) +#define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b) +#endif + +typedef GUID SHELLVIEWID; +typedef struct _SV2CVW2_PARAMS { + DWORD cbSize; + IShellView *psvPrev; + FOLDERSETTINGS const *pfs; + IShellBrowser *psbOwner; + RECT *prcView; + SHELLVIEWID const *pvid; + HWND hwndView; +} SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS; +#define INTERFACE IShellView2 +DECLARE_INTERFACE_(IShellView2,IShellView) +{ + + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE; +#ifdef _FIX_ENABLEMODELESS_CONFLICT + STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +#else + STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; +#endif + STDMETHOD(UIActivate)(THIS_ UINT) PURE; + STDMETHOD(Refresh) (THIS) PURE; + STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE; + STDMETHOD(DestroyViewWindow)(THIS) PURE; + STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE; + STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE; + STDMETHOD(SaveViewState)(THIS) PURE; + STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE; + STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE; + STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE; + STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE; +}; +#undef INTERFACE + +#define INTERFACE IShellExecuteHookA +DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE; +}; +#undef INTERFACE + +#define INTERFACE IShellExecuteHookW +DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE; +}; +#undef INTERFACE + +#define INTERFACE IShellIcon +DECLARE_INTERFACE_(IShellIcon,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE; +}; +#undef INTERFACE +typedef IShellIcon *LPSHELLICON; + +typedef struct { + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + UINT fRestFlags : 3; +} SHELLFLAGSTATE, * LPSHELLFLAGSTATE; + +#define SSF_SHOWALLOBJECTS 0x1 +#define SSF_SHOWEXTENSIONS 0x2 +#define SSF_SHOWCOMPCOLOR 0x8 +#define SSF_SHOWSYSFILES 0x20 +#define SSF_DOUBLECLICKINWEBVIEW 0x80 +#define SSF_SHOWATTRIBCOL 0x100 +#define SSF_DESKTOPHTML 0x200 +#define SSF_WIN95CLASSIC 0x400 +#define SSF_DONTPRETTYPATH 0x800 +#define SSF_MAPNETDRVBUTTON 0x1000 +#define SSF_SHOWINFOTIP 0x2000 +#define SSF_HIDEICONS 0x4000 +#define SSF_NOCONFIRMRECYCLE 0x8000 + +#define INTERFACE IShellIconOverlayIdentifier +DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(IsMemberOf)(THIS_ LPCWSTR,DWORD) PURE; + STDMETHOD(GetOverlayInfo)(THIS_ LPWSTR,int,int*,DWORD*) PURE; + STDMETHOD(GetPriority)(THIS_ int*) PURE; +}; +#undef INTERFACE + +#define ISIOI_ICONFILE 0x00000001 +#define ISIOI_ICONINDEX 0x00000002 + +#if (_WIN32_WINNT >= 0x0500) /* W2K */ +typedef struct { + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + BOOL fWebView : 1; + BOOL fFilter : 1; + BOOL fShowSuperHidden : 1; + BOOL fNoNetCrawling : 1; + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT version; + UINT uNotUsed; + BOOL fSepProcess : 1; + BOOL fStartPanelOn : 1; + BOOL fShowStartPage : 1; + UINT fSpareFlags : 13; +} SHELLSTATE, *LPSHELLSTATE; +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_IE >= 0x0500) +#pragma pack(push,8) +typedef struct +{ + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; +} SHDRAGIMAGE, *LPSHDRAGIMAGE; +#pragma pack(pop) + +#define INTERFACE IDragSourceHelper +DECLARE_INTERFACE_(IDragSourceHelper, IUnknown) +{ + STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE; + STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE; +}; +#undef INTERFACE + +#define INTERFACE IDropTargetHelper +DECLARE_INTERFACE_(IDropTargetHelper, IUnknown) +{ + STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE; + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE; + STDMETHOD (DragLeave)(THIS) PURE; + STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE; + STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE; + STDMETHOD (Show)(THIS_ BOOL fShow) PURE; +}; +#undef INTERFACE +#endif /* _WIN32_IE >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI PathResolve(LPWSTR, LPCWSTR*, UINT); +#define PRF_VERIFYEXISTS 0x0001 +#define PRF_TRYPROGRAMEXTENSIONS (0x0002 | PRF_VERIFYEXISTS) +#define PRF_FIRSTDIRDEF 0x0004 +#define PRF_DONTFINDLNK 0x0008 +#endif + +void WINAPI SHAddToRecentDocs(UINT,PCVOID); +LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA); +LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW); +void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID); +HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); +HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); +HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*); +HRESULT WINAPI SHGetInstanceExplorer(IUnknown **); +HRESULT WINAPI SHGetMalloc(LPMALLOC*); +BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR); +BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR); +HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*); +HRESULT WINAPI SHLoadInProc(REFCLSID); +#if (_WIN32_IE >= 0x0400) +BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); +BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL); +#endif +/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ +HRESULT WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR); +HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR); +#if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */ +HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*); +#endif +#if (_WIN32_WINNT >= 0x0500) +INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES); +INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES); +HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*); +#endif +#if (_WIN32_WINNT >= 0x0501) /* XP */ +HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR); +HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR); +#endif +void WINAPI SHGetSettings(LPSHELLFLAGSTATE,DWORD); +#if (_WIN32_WINNT >= 0x0500) /* W2K */ +void WINAPI SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL); +#endif + +#if (_WIN32_WINNT >= 0x0500) /* W2K */ +BOOL WINAPI ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); +BOOL WINAPI ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); +BOOL WINAPI ILRemoveLastID(LPITEMIDLIST); +HRESULT WINAPI ILLoadFromStream(IStream*, LPITEMIDLIST*); +HRESULT WINAPI ILSaveToStream(IStream*, LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); +LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST); +UINT WINAPI ILGetSize(LPCITEMIDLIST); +void WINAPI ILFree(LPITEMIDLIST); + +HRESULT WINAPI SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**); +#endif + +#ifdef UNICODE +typedef IShellExecuteHookW IShellExecuteHook; +typedef IShellLinkW IShellLink; +typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; +#define SHBrowseForFolder SHBrowseForFolderW +#define SHGetDataFromIDList SHGetDataFromIDListW +#define SHGetPathFromIDList SHGetPathFromIDListW +#if (_WIN32_IE >= 0x0400) +#define SHGetSpecialFolderPath SHGetSpecialFolderPathW +#endif +#define SHGetFolderPath SHGetFolderPathW +#if (_WIN32_WINNT >= 0x0500) +#define SHCreateDirectoryEx SHCreateDirectoryExW +#endif +#if (_WIN32_WINNT >= 0x0501) +#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW +#endif +#define FILEDESCRIPTOR FILEDESCRIPTORW +#define LPFILEDESCRIPTOR LPFILEDESCRIPTORW +#define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORW +#define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORW + +#else +typedef IShellExecuteHookA IShellExecuteHook; +typedef IShellLinkA IShellLink; +typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; +#define SHBrowseForFolder SHBrowseForFolderA +#define SHGetDataFromIDList SHGetDataFromIDListA +#define SHGetPathFromIDList SHGetPathFromIDListA +#if (_WIN32_IE >= 0x0400) +#define SHGetSpecialFolderPath SHGetSpecialFolderPathA +#endif +#define SHGetFolderPath SHGetFolderPathA +#if (_WIN32_WINNT >= 0x0500) +#define SHCreateDirectoryEx SHCreateDirectoryExA +#endif +#if (_WIN32_WINNT >= 0x0501) +#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA +#endif +#define FILEDESCRIPTOR FILEDESCRIPTORA +#define LPFILEDESCRIPTOR LPFILEDESCRIPTORA +#define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORA +#define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORA +#endif /* UNICODE */ + +DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT); + +#define SHFMT_ID_DEFAULT 0xFFFF +#define SHFMT_OPT_FULL 1 +#define SHFMT_OPT_SYSONLY 2 +#define SHFMT_ERROR 0xFFFFFFFF +#define SHFMT_CANCEL 0xFFFFFFFE +#define SHFMT_NOFORMAT 0xFFFFFFFD + +#pragma pack(pop) +#ifdef __cplusplus +} +#endif + + +#endif /* _SHLOBJ_H */