libc/winsup/w32api/include/shlobj.h

952 lines
30 KiB
C

#ifndef _SHLOBJ_H
#define _SHLOBJ_H
#if __GNUC__ >= 3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include <ole2.h>
#include <shlguid.h>
#include <shellapi.h>
#pragma pack(push,1)
#include <commctrl.h>
#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_GHOSTED 0x00008000L
#define SFGAO_LINK 0x00010000L
#define SFGAO_SHARE 0x00020000L
#define SFGAO_READONLY 0x00040000L
#define SFGAO_HIDDEN 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_FILECONTENTS TEXT("FileContents")
#ifdef UNICODE
#define CFSTR_FILENAME L"FileNameW"
#define CFSTR_FILENAMEMAP L"FileNameMapW"
#define CFSTR_FILEDESCRIPTOR L"FileGroupDescriptorW"
#define CFSTR_SHELLURL L"UniformResourceLocatorW"
#else
#define CFSTR_FILENAME "FileName"
#define CFSTR_FILENAMEMAP "FileNameMap"
#define CFSTR_FILEDESCRIPTOR "FileGroupDescriptor"
#define CFSTR_SHELLURL "UniformResourceLocator"
#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_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 */