#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) #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_PATH 1 #define SHCNF_PRINTER 2 #define SHCNF_DWORD 3 #define SHCNF_TYPE 0xFF #define SHCNF_FLUSH 0x1000 #define SHCNF_FLUSHNOWAIT 0x2000 #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_LINK 0x00010000L #define SFGAO_SHARE 0x00020000L #define SFGAO_READONLY 0x00040000L #define SFGAO_GHOSTED 0x00080000L #define SFGAO_DISPLAYATTRMASK 0x000F0000L #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_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 CFSTR_SHELLIDLIST TEXT("Shell IDList Array") #define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets") #define CFSTR_NETRESOURCES TEXT("Net Resource") #define CFSTR_FILEDESCRIPTOR TEXT("FileGroupDescriptor") #define CFSTR_FILECONTENTS TEXT("FileContents") #define CFSTR_FILENAME TEXT("FileName") #define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName") #define CFSTR_FILENAMEMAP TEXT("FileNameMap") #define CFSTR_INDRAGLOOP TEXT("InShellDragLoop") #define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded") #define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect") #define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect") #define CFSTR_SHELLURL TEXT("UniformResourceLocator") #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_NEWFOLDER TEXT("NewFolder") #define CMDSTR_VIEWLIST TEXT("ViewList") #define CMDSTR_VIEWDETAILS TEXT("ViewDetails") #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_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 _FILEDESCRIPTOR { DWORD dwFlags; CLSID clsid; SIZEL sizel; POINTL pointl; DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; CHAR cFileName[MAX_PATH]; } FILEDESCRIPTOR,*LPFILEDESCRIPTOR; typedef struct _FILEGROUPDESCRIPTOR { UINT cItems; FILEDESCRIPTOR fgd[1]; } FILEGROUPDESCRIPTOR,*LPFILEGROUPDESCRIPTOR; 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 } 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; DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST); typedef IEnumIDList *LPENUMIDLIST; #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; }; typedef IContextMenu *LPCONTEXTMENU; #undef INTERFACE #define INTERFACE IContextMenu2 DECLARE_INTERFACE_(IContextMenu2,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; STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE; }; typedef IContextMenu2 *LPCONTEXTMENU2; #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; }; typedef IShellExtInit *LPSHELLEXTINIT; #undef INTERFACE #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; }; typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT; #undef INTERFACE #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; }; typedef IExtractIconA *LPEXTRACTICONA; #undef INTERFACE #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; }; typedef IExtractIconW *LPEXTRACTICONW; #ifdef UNICODE #define IExtractIcon IExtractIconW #define LPEXTRACTICON LPEXTRACTICONW #else #define IExtractIcon IExtractIconA #define LPEXTRACTICON LPEXTRACTICONA #endif #undef INTERFACE #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 #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 #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; }; typedef IShellFolder *LPSHELLFOLDER; #undef INTERFACE #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; }; typedef ICopyHook *LPCOPYHOOK; #undef INTERFACE #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; }; typedef IFileViewerSite *LPFILEVIEWERSITE; #undef INTERFACE #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; }; typedef IFileViewer *LPFILEVIEWER; #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; }; typedef IPersistFolder *LPPERSISTFOLDER; typedef interface IShellBrowser *LPSHELLBROWSER; typedef interface IShellView *LPSHELLVIEW; #undef INTERFACE #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 #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 #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; }; typedef ICommDlgBrowser *LPCOMMDLGBROWSER; 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; #undef INTERFACE #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; }; 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; #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) #undef INTERFACE #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; }; #endif /* _WIN32_IE >= 0x0500 */ 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 >= 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 #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 >= 0x0501) #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW #endif #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 >= 0x0501) #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA #endif #endif /* UNICODE */ #pragma pack(pop) #ifdef __cplusplus } #endif #endif /* _SHLOBJ_H */