Mercurial > games > semicongine
diff fuhtark_test/include/winapi/shlobj.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/shlobj.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,2795 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef _SHLOBJ_H_ +#define _SHLOBJ_H_ + +#ifndef _WINRESRC_ +#ifndef _WIN32_IE +#define _WIN32_IE 0x0501 +#else +#if (_WIN32_IE < 0x0501) +#error _WIN32_IE setting conflicts +#endif +#endif +#endif + +#ifndef SNDMSG +#ifdef __cplusplus +#define SNDMSG ::SendMessage +#else +#define SNDMSG SendMessage +#endif +#endif + +#ifndef WINSHELLAPI +#if defined(_SHELL32_) +#define WINSHELLAPI +#else +#define WINSHELLAPI DECLSPEC_IMPORT +#endif +#endif + +#ifndef SHSTDAPI +#if defined(_SHELL32_) +#define SHSTDAPI STDAPI +#define SHSTDAPI_(type) STDAPI_(type) +#else +#define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI +#define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI +#endif +#endif + +#ifndef SHDOCAPI +#if defined(_SHDOCVW_) +#define SHDOCAPI STDAPI +#define SHDOCAPI_(type) STDAPI_(type) +#else +#define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI +#define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI +#endif +#endif + +#ifndef SHSTDDOCAPI +#if defined(_SHDOCVW_) || defined(_SHELL32_) +#define SHSTDDOCAPI STDAPI +#define SHSTDDOCAPI_(type) STDAPI_(type) +#else +#define SHSTDDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI +#define SHSTDDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI +#endif +#endif + +#ifndef BROWSEUIAPI +#if defined(_BROWSEUI_) +#define BROWSEUIAPI STDAPI +#define BROWSEUIAPI_(type) STDAPI_(type) +#else +#define BROWSEUIAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI +#define BROWSEUIAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI +#endif +#endif + +#ifndef SHFOLDERAPI +#if defined(_SHFOLDER_) || defined(_SHELL32_) +#define SHFOLDERAPI STDAPI +#else +#define SHFOLDERAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI +#endif +#endif + +#include <ole2.h> +#include <prsht.h> +#include <commctrl.h> + +#ifndef INITGUID +#include <shlguid.h> +#endif + +#include <pshpack1.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#include <shtypes.h> +#include <shobjidl.h> + + SHSTDAPI SHGetMalloc(LPMALLOC *ppMalloc); + SHSTDAPI_(void *) SHAlloc(SIZE_T cb); + SHSTDAPI_(void) SHFree(void *pv); + +#define CMF_NORMAL 0x00000000 +#define CMF_DEFAULTONLY 0x00000001 +#define CMF_VERBSONLY 0x00000002 +#define CMF_EXPLORE 0x00000004 +#define CMF_NOVERBS 0x00000008 +#define CMF_CANRENAME 0x00000010 +#define CMF_NODEFAULT 0x00000020 +#define CMF_INCLUDESTATIC 0x00000040 +#define CMF_EXTENDEDVERBS 0x00000100 +#define CMF_RESERVED 0xffff0000 + +#define GCS_VERBA 0x00000000 +#define GCS_HELPTEXTA 0x00000001 +#define GCS_VALIDATEA 0x00000002 +#define GCS_VERBW 0x00000004 +#define GCS_HELPTEXTW 0x00000005 +#define GCS_VALIDATEW 0x00000006 +#define GCS_UNICODE 0x00000004 + +#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_NEWFOLDERA +#define CMDSTR_VIEWLIST CMDSTR_VIEWLISTA +#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSA +#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_UNICODE SEE_MASK_UNICODE +#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE +#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME +#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM +#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE +#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK +#if (_WIN32_IE >= 0x0603) +#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS +#endif + +#define CMIC_MASK_SHIFT_DOWN 0x10000000 +#define CMIC_MASK_CONTROL_DOWN 0x40000000 +#if (_WIN32_IE >= 0x0560) +#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE +#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS +#endif +#define CMIC_MASK_PTINVOKE 0x20000000 + +#include <pshpack8.h> + + 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 _CMInvokeCommandInfoEx { + DWORD cbSize; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + DWORD dwHotKey; + HANDLE hIcon; + LPCSTR lpTitle; + LPCWSTR lpVerbW; + LPCWSTR lpParametersW; + LPCWSTR lpDirectoryW; + LPCWSTR lpTitleW; + POINT ptInvoke; + } CMINVOKECOMMANDINFOEX,*LPCMINVOKECOMMANDINFOEX; + +#include <poppack.h> + +#undef INTERFACE +#define INTERFACE IContextMenu + + DECLARE_INTERFACE_(IContextMenu,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(QueryContextMenu)(THIS_ HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) PURE; + STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE; + STDMETHOD(GetCommandString)(THIS_ UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) PURE; + }; + + typedef IContextMenu *LPCONTEXTMENU; + +#undef INTERFACE +#define INTERFACE IContextMenu2 + DECLARE_INTERFACE_(IContextMenu2,IContextMenu) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(QueryContextMenu)(THIS_ HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) PURE; + STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE; + STDMETHOD(GetCommandString)(THIS_ UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) PURE; + STDMETHOD(HandleMenuMsg)(THIS_ UINT uMsg,WPARAM wParam,LPARAM lParam) PURE; + }; + + typedef IContextMenu2 *LPCONTEXTMENU2; + +#undef INTERFACE +#define INTERFACE IContextMenu3 + DECLARE_INTERFACE_(IContextMenu3,IContextMenu2) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(QueryContextMenu)(THIS_ HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) PURE; + STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE; + STDMETHOD(GetCommandString)(THIS_ UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) PURE; + STDMETHOD(HandleMenuMsg)(THIS_ UINT uMsg,WPARAM wParam,LPARAM lParam) PURE; + STDMETHOD(HandleMenuMsg2)(THIS_ UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *plResult) PURE; + }; + + typedef IContextMenu3 *LPCONTEXTMENU3; + +#undef INTERFACE +#define INTERFACE IPersistFolder3 +#define CSIDL_FLAG_PFTI_TRACKTARGET CSIDL_FLAG_DONT_VERIFY + +#include <pshpack8.h> + + typedef struct { + LPITEMIDLIST pidlTargetFolder; + WCHAR szTargetParsingName[MAX_PATH]; + WCHAR szNetworkProvider[MAX_PATH]; + DWORD dwAttributes; + int csidl; + } PERSIST_FOLDER_TARGET_INFO; + +#include <poppack.h> + + DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2) { + STDMETHOD(QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ LPCLSID lpClassID) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST pidl) PURE; + STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST *ppidl) PURE; + STDMETHOD(InitializeEx)(THIS_ IBindCtx *pbc,LPCITEMIDLIST pidlRoot,const PERSIST_FOLDER_TARGET_INFO *ppfti) PURE; + STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO *ppfti) PURE; + }; + +#define GIL_OPENICON 0x0001 +#define GIL_FORSHELL 0x0002 +#define GIL_ASYNC 0x0020 +#define GIL_DEFAULTICON 0x0040 +#define GIL_FORSHORTCUT 0x0080 + +#define GIL_SIMULATEDOC 0x0001 +#define GIL_PERINSTANCE 0x0002 +#define GIL_PERCLASS 0x0004 +#define GIL_NOTFILENAME 0x0008 +#define GIL_DONTCACHE 0x0010 + +#undef INTERFACE +#define INTERFACE IExtractIconA + DECLARE_INTERFACE_(IExtractIconA,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetIconLocation)(THIS_ UINT uFlags,LPSTR szIconFile,UINT cchMax,int *piIndex,UINT *pwFlags) PURE; + STDMETHOD(Extract)(THIS_ LPCSTR pszFile,UINT nIconIndex,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize) PURE; + }; + + typedef IExtractIconA *LPEXTRACTICONA; + +#undef INTERFACE +#define INTERFACE IExtractIconW + DECLARE_INTERFACE_(IExtractIconW,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetIconLocation)(THIS_ UINT uFlags,LPWSTR szIconFile,UINT cchMax,int *piIndex,UINT *pwFlags) PURE; + STDMETHOD(Extract)(THIS_ LPCWSTR pszFile,UINT nIconIndex,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize) PURE; + }; + + typedef IExtractIconW *LPEXTRACTICONW; + +#ifdef UNICODE +#define IExtractIcon IExtractIconW +#define IExtractIconVtbl IExtractIconWVtbl +#define LPEXTRACTICON LPEXTRACTICONW +#else +#define IExtractIcon IExtractIconA +#define IExtractIconVtbl IExtractIconAVtbl +#define LPEXTRACTICON LPEXTRACTICONA +#endif + +#undef INTERFACE +#define INTERFACE IShellIcon + DECLARE_INTERFACE_(IShellIcon,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl,UINT flags,LPINT lpIconIndex) PURE; + }; + + typedef IShellIcon *LPSHELLICON; + +#undef INTERFACE +#define INTERFACE IShellIconOverlayIdentifier + DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD (IsMemberOf)(THIS_ LPCWSTR pwszPath,DWORD dwAttrib) PURE; + STDMETHOD (GetOverlayInfo)(THIS_ LPWSTR pwszIconFile,int cchMax,int *pIndex,DWORD *pdwFlags) PURE; + STDMETHOD (GetPriority)(THIS_ int *pIPriority) PURE; + }; + +#define ISIOI_ICONFILE 0x00000001 +#define ISIOI_ICONINDEX 0x00000002 +#if (_WIN32_IE >= 0x0601) +#undef INTERFACE +#define INTERFACE IShellIconOverlayManager + DECLARE_INTERFACE_(IShellIconOverlayManager,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetFileOverlayInfo)(THIS_ LPCWSTR pwszPath,DWORD dwAttrib,int *pIndex,DWORD dwflags) PURE; + STDMETHOD(GetReservedOverlayInfo)(THIS_ LPCWSTR pwszPath,DWORD dwAttrib,int *pIndex,DWORD dwflags,int iReservedID) PURE; + STDMETHOD(RefreshOverlayImages)(THIS_ DWORD dwFlags) PURE; + STDMETHOD(LoadNonloadedOverlayIdentifiers)(THIS) PURE; + STDMETHOD(OverlayIndexFromImageIndex)(THIS_ int iImage,int *piIndex,WINBOOL fAdd) PURE; + }; +#define SIOM_OVERLAYINDEX 1 +#define SIOM_ICONINDEX 2 + +#define SIOM_RESERVED_SHARED 0 +#define SIOM_RESERVED_LINK 1 +#define SIOM_RESERVED_SLOWFILE 2 +#endif + +#undef INTERFACE +#define INTERFACE IShellIconOverlay + DECLARE_INTERFACE_(IShellIconOverlay,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetOverlayIndex)(THIS_ LPCITEMIDLIST pidl,int *pIndex) PURE; + STDMETHOD(GetOverlayIconIndex)(THIS_ LPCITEMIDLIST pidl,int *pIconIndex) PURE; + }; + +#define OI_ASYNC 0xFFFFEEEE + +#define IDO_SHGIOI_SHARE 0x0FFFFFFF +#define IDO_SHGIOI_LINK 0x0FFFFFFE +#define IDO_SHGIOI_SLOWFILE 0x0FFFFFFFD +#define IDO_SHGIOI_DEFAULT 0x0FFFFFFC + SHSTDAPI_(int) SHGetIconOverlayIndexA(LPCSTR pszIconPath,int iIconIndex); + SHSTDAPI_(int) SHGetIconOverlayIndexW(LPCWSTR pszIconPath,int iIconIndex); +#ifdef UNICODE +#define SHGetIconOverlayIndex SHGetIconOverlayIndexW +#else +#define SHGetIconOverlayIndex SHGetIconOverlayIndexA +#endif + + typedef enum { + SLDF_HAS_ID_LIST = 0x00000001,SLDF_HAS_LINK_INFO = 0x00000002,SLDF_HAS_NAME = 0x00000004,SLDF_HAS_RELPATH = 0x00000008, + SLDF_HAS_WORKINGDIR = 0x00000010,SLDF_HAS_ARGS = 0x00000020,SLDF_HAS_ICONLOCATION = 0x00000040,SLDF_UNICODE = 0x00000080, + SLDF_FORCE_NO_LINKINFO = 0x00000100,SLDF_HAS_EXP_SZ = 0x00000200,SLDF_RUN_IN_SEPARATE = 0x00000400,SLDF_HAS_LOGO3ID = 0x00000800, + SLDF_HAS_DARWINID = 0x00001000,SLDF_RUNAS_USER = 0x00002000,SLDF_HAS_EXP_ICON_SZ = 0x00004000,SLDF_NO_PIDL_ALIAS = 0x00008000, + SLDF_FORCE_UNCNAME = 0x00010000,SLDF_RUN_WITH_SHIMLAYER = 0x00020000,SLDF_RESERVED = 0x80000000 + } SHELL_LINK_DATA_FLAGS; + + typedef struct tagDATABLOCKHEADER { + DWORD cbSize; + DWORD dwSignature; + } DATABLOCK_HEADER,*LPDATABLOCK_HEADER,*LPDBLIST; + + typedef struct { +#ifdef __cplusplus + DATABLOCK_HEADER dbh; +#else +/* DATABLOCK_HEADER; */ + __MINGW_EXTENSION struct { + DWORD cbSize; + DWORD dwSignature; + }; +#endif + WORD wFillAttribute; + WORD wPopupFillAttribute; + COORD dwScreenBufferSize; + COORD dwWindowSize; + COORD dwWindowOrigin; + DWORD nFont; + DWORD nInputBufferSize; + COORD dwFontSize; + UINT uFontFamily; + UINT uFontWeight; + WCHAR FaceName[LF_FACESIZE]; + UINT uCursorSize; + WINBOOL bFullScreen; + WINBOOL bQuickEdit; + WINBOOL bInsertMode; + WINBOOL bAutoPosition; + UINT uHistoryBufferSize; + UINT uNumberOfHistoryBuffers; + WINBOOL bHistoryNoDup; + COLORREF ColorTable[16 ]; + } NT_CONSOLE_PROPS,*LPNT_CONSOLE_PROPS; +#define NT_CONSOLE_PROPS_SIG 0xA0000002 + + typedef struct { +#ifdef __cplusplus + DATABLOCK_HEADER dbh; +#else +/* DATABLOCK_HEADER; */ + __MINGW_EXTENSION struct { + DWORD cbSize; + DWORD dwSignature; + }; +#endif + UINT uCodePage; + } NT_FE_CONSOLE_PROPS,*LPNT_FE_CONSOLE_PROPS; +#define NT_FE_CONSOLE_PROPS_SIG 0xA0000004 + + typedef struct { +#ifdef __cplusplus + DATABLOCK_HEADER dbh; +#else +/* DATABLOCK_HEADER; */ + __MINGW_EXTENSION struct { + DWORD cbSize; + DWORD dwSignature; + }; +#endif + CHAR szDarwinID[MAX_PATH]; + WCHAR szwDarwinID[MAX_PATH]; + } EXP_DARWIN_LINK,*LPEXP_DARWIN_LINK; +#define EXP_DARWIN_ID_SIG 0xA0000006 +#define EXP_LOGO3_ID_SIG 0xA0000007 + +#define EXP_SPECIAL_FOLDER_SIG 0xA0000005 + + typedef struct { + DWORD cbSize; + DWORD dwSignature; + DWORD idSpecialFolder; + DWORD cbOffset; + } EXP_SPECIAL_FOLDER,*LPEXP_SPECIAL_FOLDER; + + typedef struct { + DWORD cbSize; + DWORD dwSignature; + CHAR szTarget[MAX_PATH ]; + WCHAR swzTarget[MAX_PATH ]; + } EXP_SZ_LINK,*LPEXP_SZ_LINK; +#define EXP_SZ_LINK_SIG 0xA0000001 +#define EXP_SZ_ICON_SIG 0xA0000007 + +#undef INTERFACE +#define INTERFACE IShellLinkDataList + DECLARE_INTERFACE_(IShellLinkDataList,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(AddDataBlock)(THIS_ void *pDataBlock) PURE; + STDMETHOD(CopyDataBlock)(THIS_ DWORD dwSig,void **ppDataBlock) PURE; + STDMETHOD(RemoveDataBlock)(THIS_ DWORD dwSig) PURE; + STDMETHOD(GetFlags)(THIS_ DWORD *pdwFlags) PURE; + STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) PURE; + }; + +#undef INTERFACE +#define INTERFACE IResolveShellLink + DECLARE_INTERFACE_(IResolveShellLink,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(ResolveShellLink)(THIS_ IUnknown *punk,HWND hwnd,DWORD fFlags) PURE; + }; + +#ifdef _INC_SHELLAPI + +#undef INTERFACE +#define INTERFACE IShellExecuteHookA + DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA pei) PURE; + }; + +#undef INTERFACE +#define INTERFACE IShellExecuteHookW + DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW pei) PURE; + }; + +#ifdef UNICODE +#define IShellExecuteHook IShellExecuteHookW +#define IShellExecuteHookVtbl IShellExecuteHookWVtbl +#else +#define IShellExecuteHook IShellExecuteHookA +#define IShellExecuteHookVtbl IShellExecuteHookAVtbl +#endif +#endif + +#undef INTERFACE +#define INTERFACE IURLSearchHook + DECLARE_INTERFACE_(IURLSearchHook,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(Translate)(THIS_ LPWSTR lpwszSearchURL,DWORD cchBufferSize) PURE; + }; + +#undef INTERFACE +#define INTERFACE ISearchContext + DECLARE_INTERFACE_(ISearchContext,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetSearchUrl)(THIS_ BSTR *pbstrSearchUrl) PURE; + STDMETHOD(GetSearchText)(THIS_ BSTR *pbstrSearchText) PURE; + STDMETHOD(GetSearchStyle)(THIS_ DWORD *pdwSearchStyle) PURE; + }; + +#undef INTERFACE +#define INTERFACE IURLSearchHook2 + DECLARE_INTERFACE_(IURLSearchHook2,IURLSearchHook) { + STDMETHOD(TranslateWithSearchContext)(THIS_ LPWSTR lpwszSearchURL,DWORD cchBufferSize,ISearchContext *pSearchContext) PURE; + }; + +#undef INTERFACE +#define INTERFACE INewShortcutHookA + + DECLARE_INTERFACE_(INewShortcutHookA,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(SetReferent)(THIS_ LPCSTR pcszReferent,HWND hwnd) PURE; + STDMETHOD(GetReferent)(THIS_ LPSTR pszReferent,int cchReferent) PURE; + STDMETHOD(SetFolder)(THIS_ LPCSTR pcszFolder) PURE; + STDMETHOD(GetFolder)(THIS_ LPSTR pszFolder,int cchFolder) PURE; + STDMETHOD(GetName)(THIS_ LPSTR pszName,int cchName) PURE; + STDMETHOD(GetExtension)(THIS_ LPSTR pszExtension,int cchExtension) PURE; + }; + +#undef INTERFACE +#define INTERFACE INewShortcutHookW + DECLARE_INTERFACE_(INewShortcutHookW,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(SetReferent)(THIS_ LPCWSTR pcszReferent,HWND hwnd) PURE; + STDMETHOD(GetReferent)(THIS_ LPWSTR pszReferent,int cchReferent) PURE; + STDMETHOD(SetFolder)(THIS_ LPCWSTR pcszFolder) PURE; + STDMETHOD(GetFolder)(THIS_ LPWSTR pszFolder,int cchFolder) PURE; + STDMETHOD(GetName)(THIS_ LPWSTR pszName,int cchName) PURE; + STDMETHOD(GetExtension)(THIS_ LPWSTR pszExtension,int cchExtension) PURE; + }; + +#ifdef UNICODE +#define INewShortcutHook INewShortcutHookW +#define INewShortcutHookVtbl INewShortcutHookWVtbl +#else +#define INewShortcutHook INewShortcutHookA +#define INewShortcutHookVtbl INewShortcutHookAVtbl +#endif + +#ifndef FO_MOVE + +#define FO_MOVE 0x0001 +#define FO_COPY 0x0002 +#define FO_DELETE 0x0003 +#define FO_RENAME 0x0004 + +#define FOF_MULTIDESTFILES 0x0001 +#define FOF_CONFIRMMOUSE 0x0002 +#define FOF_SILENT 0x0004 +#define FOF_RENAMEONCOLLISION 0x0008 +#define FOF_NOCONFIRMATION 0x0010 +#define FOF_WANTMAPPINGHANDLE 0x0020 + +#define FOF_ALLOWUNDO 0x0040 +#define FOF_FILESONLY 0x0080 +#define FOF_SIMPLEPROGRESS 0x0100 +#define FOF_NOCONFIRMMKDIR 0x0200 +#define FOF_NOERRORUI 0x0400 +#define FOF_NOCOPYSECURITYATTRIBS 0x0800 +#define FOF_NORECURSION 0x1000 +#define FOF_NO_CONNECTED_ELEMENTS 0x2000 +#define FOF_WANTNUKEWARNING 0x4000 +#define FOF_NORECURSEREPARSE 0x8000 + + typedef WORD FILEOP_FLAGS; + +#define PO_DELETE 0x0013 +#define PO_RENAME 0x0014 +#define PO_PORTCHANGE 0x0020 + +#define PO_REN_PORT 0x0034 + + typedef UINT PRINTEROP_FLAGS; +#endif + +#undef INTERFACE +#define INTERFACE ICopyHookA + DECLARE_INTERFACE_(ICopyHookA,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd,UINT wFunc,UINT wFlags,LPCSTR pszSrcFile,DWORD dwSrcAttribs,LPCSTR pszDestFile,DWORD dwDestAttribs) PURE; + }; + + typedef ICopyHookA *LPCOPYHOOKA; + +#undef INTERFACE +#define INTERFACE ICopyHookW + DECLARE_INTERFACE_(ICopyHookW,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd,UINT wFunc,UINT wFlags,LPCWSTR pszSrcFile,DWORD dwSrcAttribs,LPCWSTR pszDestFile,DWORD dwDestAttribs) PURE; + }; + + typedef ICopyHookW *LPCOPYHOOKW; + +#ifdef UNICODE +#define ICopyHook ICopyHookW +#define ICopyHookVtbl ICopyHookWVtbl +#define LPCOPYHOOK LPCOPYHOOKW +#else +#define ICopyHook ICopyHookA +#define ICopyHookVtbl ICopyHookAVtbl +#define LPCOPYHOOK LPCOPYHOOKA +#endif + +#undef INTERFACE +#define INTERFACE IFileViewerSite + DECLARE_INTERFACE_(IFileViewerSite,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(SetPinnedWindow) (THIS_ HWND hwnd) PURE; + STDMETHOD(GetPinnedWindow) (THIS_ HWND *phwnd) PURE; + }; + + typedef IFileViewerSite *LPFILEVIEWERSITE; + +#include <pshpack8.h> + + typedef struct { + DWORD cbSize; + HWND hwndOwner; + int iShow; + DWORD dwFlags; + RECT rect; + IUnknown *punkRel; + OLECHAR strNewFile[MAX_PATH]; + } FVSHOWINFO,*LPFVSHOWINFO; + +#include <poppack.h> + +#define FVSIF_RECT 0x00000001 +#define FVSIF_PINNED 0x00000002 + +#define FVSIF_NEWFAILED 0x08000000 + +#define FVSIF_NEWFILE 0x80000000 +#define FVSIF_CANVIEWIT 0x40000000 + +#undef INTERFACE +#define INTERFACE IFileViewerA + DECLARE_INTERFACE(IFileViewerA) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE; + STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE; + STDMETHOD(PrintTo) (THIS_ LPSTR pszDriver,WINBOOL fSuppressUI) PURE; + }; + + typedef IFileViewerA *LPFILEVIEWERA; + +#undef INTERFACE +#define INTERFACE IFileViewerW + DECLARE_INTERFACE(IFileViewerW) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE; + STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE; + STDMETHOD(PrintTo) (THIS_ LPWSTR pszDriver,WINBOOL fSuppressUI) PURE; + }; + + typedef IFileViewerW *LPFILEVIEWERW; + +#ifdef UNICODE +#define IFileViewer IFileViewerW +#define LPFILEVIEWER LPFILEVIEWERW +#else +#define IFileViewer IFileViewerA +#define LPFILEVIEWER LPFILEVIEWERA +#endif + +#define FCIDM_SHVIEWFIRST 0x0000 +#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+0x0000) +#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 + 0) +#define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1) + +#define IDC_OFFLINE_HAND 103 + +#define PANE_NONE -1 +#define PANE_ZONE 1 +#define PANE_OFFLINE 2 +#define PANE_PRINTER 3 +#define PANE_SSL 4 +#define PANE_NAVIGATION 5 +#define PANE_PROGRESS 6 +#define PANE_PRIVACY 7 + +#define CDBOSC_SETFOCUS 0x00000000 +#define CDBOSC_KILLFOCUS 0x00000001 +#define CDBOSC_SELCHANGE 0x00000002 +#define CDBOSC_RENAME 0x00000003 +#define CDBOSC_STATECHANGE 0x00000004 + +#undef INTERFACE +#define INTERFACE ICommDlgBrowser + DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(OnDefaultCommand) (THIS_ struct IShellView *ppshv) PURE; + STDMETHOD(OnStateChange) (THIS_ struct IShellView *ppshv,ULONG uChange) PURE; + STDMETHOD(IncludeObject) (THIS_ struct IShellView *ppshv,LPCITEMIDLIST pidl) PURE; + }; + + typedef ICommDlgBrowser *LPCOMMDLGBROWSER; + +#define CDB2N_CONTEXTMENU_DONE 0x00000001 +#define CDB2N_CONTEXTMENU_START 0x00000002 + +#define CDB2GVF_SHOWALLFILES 0x00000001 + +#undef INTERFACE +#define INTERFACE ICommDlgBrowser2 + DECLARE_INTERFACE_(ICommDlgBrowser2,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(OnDefaultCommand) (THIS_ struct IShellView *ppshv) PURE; + STDMETHOD(OnStateChange) (THIS_ struct IShellView *ppshv,ULONG uChange) PURE; + STDMETHOD(IncludeObject) (THIS_ struct IShellView *ppshv,LPCITEMIDLIST pidl) PURE; + STDMETHOD(Notify) (THIS_ struct IShellView *ppshv,DWORD dwNotifyType) PURE; + STDMETHOD(GetDefaultMenuText) (THIS_ struct IShellView *ppshv,WCHAR *pszText,INT cchMax) PURE; + STDMETHOD(GetViewFlags)(THIS_ DWORD *pdwFlags) PURE; + }; + + typedef ICommDlgBrowser2 *LPCOMMDLGBROWSER2; + +#ifdef UNICODE +#define SHGetPathFromIDList SHGetPathFromIDListW +#define SHCreateDirectoryEx SHCreateDirectoryExW +#else +#define SHGetPathFromIDList SHGetPathFromIDListA +#define SHCreateDirectoryEx SHCreateDirectoryExA +#endif + + SHSTDAPI_(WINBOOL) SHGetPathFromIDListA(LPCITEMIDLIST pidl,LPSTR pszPath); + SHSTDAPI_(WINBOOL) SHGetPathFromIDListW(LPCITEMIDLIST pidl,LPWSTR pszPath); + SHSTDAPI_(int) SHCreateDirectory(HWND hwnd,LPCWSTR pszPath); + SHSTDAPI_(int) SHCreateDirectoryExA(HWND hwnd,LPCSTR pszPath,SECURITY_ATTRIBUTES *psa); + SHSTDAPI_(int) SHCreateDirectoryExW(HWND hwnd,LPCWSTR pszPath,SECURITY_ATTRIBUTES *psa); + SHSTDAPI SHOpenFolderAndSelectItems(LPCITEMIDLIST pidlFolder,UINT cidl,LPCITEMIDLIST *apidl,DWORD dwFlags); + SHSTDAPI SHCreateShellItem(LPCITEMIDLIST pidlParent,IShellFolder *psfParent,LPCITEMIDLIST pidl,IShellItem **ppsi); + +#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders") + +#define CSIDL_DESKTOP 0x0000 +#define CSIDL_INTERNET 0x0001 +#define CSIDL_PROGRAMS 0x0002 +#define CSIDL_CONTROLS 0x0003 +#define CSIDL_PRINTERS 0x0004 +#define CSIDL_PERSONAL 0x0005 +#define CSIDL_FAVORITES 0x0006 +#define CSIDL_STARTUP 0x0007 +#define CSIDL_RECENT 0x0008 +#define CSIDL_SENDTO 0x0009 +#define CSIDL_BITBUCKET 0x000a +#define CSIDL_STARTMENU 0x000b +#define CSIDL_MYDOCUMENTS 0x000c +#define CSIDL_MYMUSIC 0x000d +#define CSIDL_MYVIDEO 0x000e +#define CSIDL_DESKTOPDIRECTORY 0x0010 +#define CSIDL_DRIVES 0x0011 +#define CSIDL_NETWORK 0x0012 +#define CSIDL_NETHOOD 0x0013 +#define CSIDL_FONTS 0x0014 +#define CSIDL_TEMPLATES 0x0015 +#define CSIDL_COMMON_STARTMENU 0x0016 +#define CSIDL_COMMON_PROGRAMS 0X0017 +#define CSIDL_COMMON_STARTUP 0x0018 +#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019 +#define CSIDL_APPDATA 0x001a +#define CSIDL_PRINTHOOD 0x001b + +#ifndef CSIDL_LOCAL_APPDATA +#define CSIDL_LOCAL_APPDATA 0x001c +#endif + +#define CSIDL_ALTSTARTUP 0x001d +#define CSIDL_COMMON_ALTSTARTUP 0x001e +#define CSIDL_COMMON_FAVORITES 0x001f + +#ifndef _SHFOLDER_H_ +#define CSIDL_INTERNET_CACHE 0x0020 +#define CSIDL_COOKIES 0x0021 +#define CSIDL_HISTORY 0x0022 +#define CSIDL_COMMON_APPDATA 0x0023 +#define CSIDL_WINDOWS 0x0024 +#define CSIDL_SYSTEM 0x0025 +#define CSIDL_PROGRAM_FILES 0x0026 +#define CSIDL_MYPICTURES 0x0027 +#endif + +#define CSIDL_PROFILE 0x0028 +#define CSIDL_SYSTEMX86 0x0029 +#define CSIDL_PROGRAM_FILESX86 0x002a + +#ifndef _SHFOLDER_H_ +#define CSIDL_PROGRAM_FILES_COMMON 0x002b +#endif + +#define CSIDL_PROGRAM_FILES_COMMONX86 0x002c +#define CSIDL_COMMON_TEMPLATES 0x002d + +#ifndef _SHFOLDER_H_ +#define CSIDL_COMMON_DOCUMENTS 0x002e +#define CSIDL_COMMON_ADMINTOOLS 0x002f +#define CSIDL_ADMINTOOLS 0x0030 +#endif + +#define CSIDL_CONNECTIONS 0x0031 +#define CSIDL_COMMON_MUSIC 0x0035 +#define CSIDL_COMMON_PICTURES 0x0036 +#define CSIDL_COMMON_VIDEO 0x0037 +#define CSIDL_RESOURCES 0x0038 + +#ifndef _SHFOLDER_H_ +#define CSIDL_RESOURCES_LOCALIZED 0x0039 +#endif + +#define CSIDL_COMMON_OEM_LINKS 0x003a +#define CSIDL_CDBURN_AREA 0x003b + +#define CSIDL_COMPUTERSNEARME 0x003d + +#ifndef _SHFOLDER_H_ +#define CSIDL_FLAG_CREATE 0x8000 +#endif + +#define CSIDL_FLAG_DONT_VERIFY 0x4000 +#define CSIDL_FLAG_NO_ALIAS 0x1000 +#define CSIDL_FLAG_PER_USER_INIT 0x0800 +#define CSIDL_FLAG_MASK 0xFF00 + +#ifdef UNICODE +#define SHGetSpecialFolderPath SHGetSpecialFolderPathW +#define SHGetFolderPath SHGetFolderPathW +#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW +#else +#define SHGetSpecialFolderPath SHGetSpecialFolderPathA +#define SHGetFolderPath SHGetFolderPathA +#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA +#endif + + SHSTDAPI SHGetSpecialFolderLocation(HWND hwnd,int csidl,LPITEMIDLIST *ppidl); + SHSTDAPI_(void) SHFlushSFCache(void); + SHSTDAPI_(LPITEMIDLIST) SHCloneSpecialIDList(HWND hwnd,int csidl,WINBOOL fCreate); + SHSTDAPI_(WINBOOL) SHGetSpecialFolderPathA(HWND hwnd,LPSTR pszPath,int csidl,WINBOOL fCreate); + SHSTDAPI_(WINBOOL) SHGetSpecialFolderPathW(HWND hwnd,LPWSTR pszPath,int csidl,WINBOOL fCreate); + + typedef enum { + SHGFP_TYPE_CURRENT = 0,SHGFP_TYPE_DEFAULT = 1 + } SHGFP_TYPE; + + SHFOLDERAPI SHGetFolderPathA(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPSTR pszPath); + SHFOLDERAPI SHGetFolderPathW(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPWSTR pszPath); + SHSTDAPI SHGetFolderLocation(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPITEMIDLIST *ppidl); + SHFOLDERAPI SHGetFolderPathAndSubDirA(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPCSTR pszSubDir,LPSTR pszPath); + SHFOLDERAPI SHGetFolderPathAndSubDirW(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPCWSTR pszSubDir,LPWSTR pszPath); + +#define FCS_READ 0x00000001 +#define FCS_FORCEWRITE 0x00000002 +#define FCS_WRITE (FCS_READ | FCS_FORCEWRITE) +#define FCS_FLAG_DRAGDROP 2 + +#define FCSM_VIEWID 0x00000001 +#define FCSM_WEBVIEWTEMPLATE 0x00000002 +#define FCSM_INFOTIP 0x00000004 +#define FCSM_CLSID 0x00000008 +#define FCSM_ICONFILE 0x00000010 +#define FCSM_LOGO 0x00000020 +#define FCSM_FLAGS 0x00000040 + +#include <pshpack8.h> + + typedef struct { + DWORD dwSize; + DWORD dwMask; + SHELLVIEWID *pvid; + LPSTR pszWebViewTemplate; + DWORD cchWebViewTemplate; + LPSTR pszWebViewTemplateVersion; + LPSTR pszInfoTip; + DWORD cchInfoTip; + CLSID *pclsid; + DWORD dwFlags; + LPSTR pszIconFile; + DWORD cchIconFile; + int iIconIndex; + LPSTR pszLogo; + DWORD cchLogo; + } SHFOLDERCUSTOMSETTINGSA,*LPSHFOLDERCUSTOMSETTINGSA; + + typedef struct { + DWORD dwSize; + DWORD dwMask; + SHELLVIEWID *pvid; + LPWSTR pszWebViewTemplate; + DWORD cchWebViewTemplate; + LPWSTR pszWebViewTemplateVersion; + LPWSTR pszInfoTip; + DWORD cchInfoTip; + CLSID *pclsid; + DWORD dwFlags; + LPWSTR pszIconFile; + DWORD cchIconFile; + int iIconIndex; + LPWSTR pszLogo; + DWORD cchLogo; + } SHFOLDERCUSTOMSETTINGSW,*LPSHFOLDERCUSTOMSETTINGSW; + +#include <poppack.h> + +#ifdef UNICODE +#define SHFOLDERCUSTOMSETTINGS SHFOLDERCUSTOMSETTINGSW +#define SHGetSetFolderCustomSettings SHGetSetFolderCustomSettingsW +#define LPSHFOLDERCUSTOMSETTINGS LPSHFOLDERCUSTOMSETTINGSW +#else +#define SHFOLDERCUSTOMSETTINGS SHFOLDERCUSTOMSETTINGSA +#define SHGetSetFolderCustomSettings SHGetSetFolderCustomSettingsA +#define LPSHFOLDERCUSTOMSETTINGS LPSHFOLDERCUSTOMSETTINGSA +#endif + + SHSTDAPI SHGetSetFolderCustomSettingsA(LPSHFOLDERCUSTOMSETTINGSA pfcs,LPCSTR pszPath,DWORD dwReadWrite); + SHSTDAPI SHGetSetFolderCustomSettingsW(LPSHFOLDERCUSTOMSETTINGSW pfcs,LPCWSTR pszPath,DWORD dwReadWrite); + + typedef int (CALLBACK *BFFCALLBACK)(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData); + +#include <pshpack8.h> + + 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; + +#include <poppack.h> + +#ifdef UNICODE +#define BROWSEINFO BROWSEINFOW +#define PBROWSEINFO PBROWSEINFOW +#define LPBROWSEINFO LPBROWSEINFOW +#else +#define BROWSEINFO BROWSEINFOA +#define PBROWSEINFO PBROWSEINFOA +#define LPBROWSEINFO LPBROWSEINFOA +#endif + +#define BIF_RETURNONLYFSDIRS 0x0001 +#define BIF_DONTGOBELOWDOMAIN 0x0002 +#define BIF_STATUSTEXT 0x0004 + +#define BIF_RETURNFSANCESTORS 0x0008 +#define BIF_EDITBOX 0x0010 +#define BIF_VALIDATE 0x0020 + +#define BIF_NEWDIALOGSTYLE 0x0040 + +#define BIF_USENEWUI (BIF_NEWDIALOGSTYLE | BIF_EDITBOX) + +#define BIF_BROWSEINCLUDEURLS 0x0080 +#define BIF_UAHINT 0x0100 +#define BIF_NONEWFOLDERBUTTON 0x0200 +#define BIF_NOTRANSLATETARGETS 0x0400 + +#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_IUNKNOWN 5 + +#define BFFM_SETSTATUSTEXTA (WM_USER + 100) +#define BFFM_ENABLEOK (WM_USER + 101) +#define BFFM_SETSELECTIONA (WM_USER + 102) +#define BFFM_SETSELECTIONW (WM_USER + 103) +#define BFFM_SETSTATUSTEXTW (WM_USER + 104) +#define BFFM_SETOKTEXT (WM_USER + 105) +#define BFFM_SETEXPANDED (WM_USER + 106) + + SHSTDAPI_(LPITEMIDLIST) SHBrowseForFolderA(LPBROWSEINFOA lpbi); + SHSTDAPI_(LPITEMIDLIST) SHBrowseForFolderW(LPBROWSEINFOW lpbi); + +#ifdef UNICODE +#define SHBrowseForFolder SHBrowseForFolderW +#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW +#define BFFM_SETSELECTION BFFM_SETSELECTIONW + +#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW +#else +#define SHBrowseForFolder SHBrowseForFolderA +#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTA +#define BFFM_SETSELECTION BFFM_SETSELECTIONA + +#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA +#endif + + SHSTDAPI SHLoadInProc(REFCLSID rclsid); + + SHSTDAPI SHEnableServiceObject(REFCLSID rclsid,WINBOOL fEnable); + + enum { + ISHCUTCMDID_DOWNLOADICON = 0,ISHCUTCMDID_INTSHORTCUTCREATE = 1 + }; +#define CMDID_INTSHORTCUTCREATE ISHCUTCMDID_INTSHORTCUTCREATE + + SHSTDAPI SHGetDesktopFolder(IShellFolder **ppshf); + +#define STR_FILE_SYS_BIND_DATA L"File System Bind Data" + +#undef INTERFACE +#define INTERFACE IFileSystemBindData + DECLARE_INTERFACE_(IFileSystemBindData,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW *pfd) PURE; + STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW *pfd) PURE; + }; + +#undef INTERFACE +#define INTERFACE IShellDetails + DECLARE_INTERFACE_(IShellDetails,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *pDetails) PURE; + STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE; + }; + +#undef INTERFACE +#define INTERFACE IObjMgr + + DECLARE_INTERFACE_(IObjMgr,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(Append) (THIS_ IUnknown *punk) PURE; + STDMETHOD(Remove) (THIS_ IUnknown *punk) PURE; + }; + +#undef INTERFACE +#define INTERFACE ICurrentWorkingDirectory + DECLARE_INTERFACE_(ICurrentWorkingDirectory,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetDirectory) (THIS_ LPWSTR pwzPath,DWORD cchSize) PURE; + STDMETHOD(SetDirectory) (THIS_ LPCWSTR pwzPath) PURE; + }; + +#undef INTERFACE +#define INTERFACE IACList + DECLARE_INTERFACE_(IACList,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(Expand) (THIS_ LPCOLESTR pszExpand) PURE; + }; + +#undef INTERFACE +#define INTERFACE IACList2 + typedef enum _tagAUTOCOMPLETELISTOPTIONS { + ACLO_NONE = 0,ACLO_CURRENTDIR = 1,ACLO_MYCOMPUTER = 2,ACLO_DESKTOP = 4,ACLO_FAVORITES = 8,ACLO_FILESYSONLY = 16,ACLO_FILESYSDIRS = 32 + } AUTOCOMPLETELISTOPTIONS; + + DECLARE_INTERFACE_(IACList2,IACList) { + STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE; + STDMETHOD(GetOptions)(THIS_ DWORD *pdwFlag) PURE; + }; + +#define PROGDLG_NORMAL 0x00000000 +#define PROGDLG_MODAL 0x00000001 +#define PROGDLG_AUTOTIME 0x00000002 +#define PROGDLG_NOTIME 0x00000004 +#define PROGDLG_NOMINIMIZE 0x00000008 +#define PROGDLG_NOPROGRESSBAR 0x00000010 + +#define PDTIMER_RESET 0x00000001 + +#undef INTERFACE +#define INTERFACE IProgressDialog + DECLARE_INTERFACE_(IProgressDialog,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(StartProgressDialog)(THIS_ HWND hwndParent,IUnknown *punkEnableModless,DWORD dwFlags,LPCVOID pvResevered) PURE; + STDMETHOD(StopProgressDialog)(THIS) PURE; + STDMETHOD(SetTitle)(THIS_ LPCWSTR pwzTitle) PURE; + STDMETHOD(SetAnimation)(THIS_ HINSTANCE hInstAnimation,UINT idAnimation) PURE; + STDMETHOD_(WINBOOL,HasUserCancelled) (THIS) PURE; + STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted,DWORD dwTotal) PURE; + STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted,ULONGLONG ullTotal) PURE; + STDMETHOD(SetLine)(THIS_ DWORD dwLineNum,LPCWSTR pwzString,WINBOOL fCompactPath,LPCVOID pvResevered) PURE; + STDMETHOD(SetCancelMsg)(THIS_ LPCWSTR pwzCancelMsg,LPCVOID pvResevered) PURE; + STDMETHOD(Timer)(THIS_ DWORD dwTimerAction,LPCVOID pvResevered) PURE; + }; + +#undef INTERFACE +#define INTERFACE IInputObjectSite + DECLARE_INTERFACE_(IInputObjectSite,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(OnFocusChangeIS)(THIS_ IUnknown *punkObj,WINBOOL fSetFocus) PURE; + }; + +#undef INTERFACE +#define INTERFACE IInputObject + DECLARE_INTERFACE_(IInputObject,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(UIActivateIO)(THIS_ WINBOOL fActivate,LPMSG lpMsg) PURE; + STDMETHOD(HasFocusIO)(THIS) PURE; + STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE; + }; + +#undef INTERFACE +#define INTERFACE IDockingWindowSite + DECLARE_INTERFACE_(IDockingWindowSite,IOleWindow) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetWindow) (THIS_ HWND *lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ WINBOOL fEnterMode) PURE; + STDMETHOD(GetBorderDW) (THIS_ IUnknown *punkObj,LPRECT prcBorder) PURE; + STDMETHOD(RequestBorderSpaceDW) (THIS_ IUnknown *punkObj,LPCBORDERWIDTHS pbw) PURE; + STDMETHOD(SetBorderSpaceDW) (THIS_ IUnknown *punkObj,LPCBORDERWIDTHS pbw) PURE; + }; + +#define DWFRF_NORMAL 0x0000 +#define DWFRF_DELETECONFIGDATA 0x0001 + +#define DWFAF_HIDDEN 0x0001 + +#undef INTERFACE +#define INTERFACE IDockingWindowFrame + DECLARE_INTERFACE_(IDockingWindowFrame,IOleWindow) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetWindow) (THIS_ HWND *lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ WINBOOL fEnterMode) PURE; + STDMETHOD(AddToolbar) (THIS_ IUnknown *punkSrc,LPCWSTR pwszItem,DWORD dwAddFlags) PURE; + STDMETHOD(RemoveToolbar) (THIS_ IUnknown *punkSrc,DWORD dwRemoveFlags) PURE; + STDMETHOD(FindToolbar) (THIS_ LPCWSTR pwszItem,REFIID riid,void **ppv) PURE; + }; + +#define IRTIR_TASK_NOT_RUNNING 0 +#define IRTIR_TASK_RUNNING 1 +#define IRTIR_TASK_SUSPENDED 2 +#define IRTIR_TASK_PENDING 3 +#define IRTIR_TASK_FINISHED 4 + +#undef INTERFACE +#define INTERFACE IRunnableTask + + DECLARE_INTERFACE_(IRunnableTask,IUnknown) { + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD (Run)(THIS) PURE; + STDMETHOD (Kill)(THIS_ WINBOOL fWait) PURE; + STDMETHOD (Suspend)(THIS) PURE; + STDMETHOD (Resume)(THIS) PURE; + STDMETHOD_(ULONG,IsRunning)(THIS) PURE; + }; + + typedef IRunnableTask *LPRUNNABLETASK; + +#define TASKOWNERID GUID +#define REFTASKOWNERID REFGUID + +#define ITSSFLAG_COMPLETE_ON_DESTROY 0x0000 +#define ITSSFLAG_KILL_ON_DESTROY 0x0001 +#define ITSSFLAG_SUPPORTS_TERMINATE 0x0002 +#define ITSSFLAG_FLAGS_MASK 0x0003 +#define ITSSFLAG_THREAD_TERMINATE_TIMEOUT 0x0010 +#define ITSSFLAG_THREAD_POOL_TIMEOUT 0x0020 +#define ITSS_THREAD_DESTROY_DEFAULT_TIMEOUT (60*1000) +#define ITSS_THREAD_TERMINATE_TIMEOUT (INFINITE) +#define ITSS_THREAD_TIMEOUT_NO_CHANGE (INFINITE - 1) + +#define ITSAT_DEFAULT_LPARAM 0xffffffff +#define ITSAT_DEFAULT_PRIORITY 0x10000000 +#define ITSAT_MAX_PRIORITY 0x7fffffff +#define ITSAT_MIN_PRIORITY 0x00000000 + +#define TOID_NULL CLSID_NULL + +#undef INTERFACE +#define INTERFACE IShellTaskScheduler + DECLARE_INTERFACE_(IShellTaskScheduler,IUnknown) { + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD (AddTask)(THIS_ IRunnableTask *pTask,REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority) PURE; + STDMETHOD (RemoveTasks)(THIS_ REFTASKOWNERID rtoid,DWORD_PTR lParam,WINBOOL fWaitIfRunning) PURE; + STDMETHOD_(UINT,CountTasks)(THIS_ REFTASKOWNERID rtoid) PURE; + STDMETHOD (Status)(THIS_ DWORD dwReleaseStatus,DWORD dwThreadTimeout) PURE; + }; + + typedef IShellTaskScheduler *LPSHELLTASKSCHEDULER; + +#define ITSSFLAG_TASK_PLACEINFRONT 0x00000001 +#define ITSSFLAG_TASK_PLACEINBACK 0x00000002 + +#undef INTERFACE +#define INTERFACE IShellTaskScheduler2 + DECLARE_INTERFACE_(IShellTaskScheduler2,IShellTaskScheduler) { + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD (AddTask)(THIS_ IRunnableTask *pTask,REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority) PURE; + STDMETHOD (RemoveTasks)(THIS_ REFTASKOWNERID rtoid,DWORD_PTR lParam,WINBOOL fWaitIfRunning) PURE; + STDMETHOD_(UINT,CountTasks)(THIS_ REFTASKOWNERID rtoid) PURE; + STDMETHOD (Status)(THIS_ DWORD dwReleaseStatus,DWORD dwThreadTimeout) PURE; + STDMETHOD (AddTask2)(THIS_ IRunnableTask *pTask,REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority,DWORD grfFlags) PURE; + STDMETHOD (MoveTask)(THIS_ REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority,DWORD grfFlags) PURE; + }; + +#undef INTERFACE +#define INTERFACE IThumbnailCapture + DECLARE_INTERFACE_ (IThumbnailCapture,IUnknown) { + STDMETHOD (CaptureThumbnail) (THIS_ const SIZE *pMaxSize,IUnknown *pHTMLDoc2,HBITMAP *phbmThumbnail) PURE; + }; + typedef IThumbnailCapture *LPTHUMBNAILCAPTURE; + +#include <pshpack8.h> + typedef struct _EnumImageStoreDATAtag { + WCHAR szPath[MAX_PATH]; + FILETIME ftTimeStamp; + } ENUMSHELLIMAGESTOREDATA,*PENUMSHELLIMAGESTOREDATA; + +#include <poppack.h> + +#undef INTERFACE +#define INTERFACE IEnumShellImageStore + DECLARE_INTERFACE_(IEnumShellImageStore,IUnknown) { + STDMETHOD (QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD (Reset) (THIS) PURE; + STDMETHOD (Next) (THIS_ ULONG celt,PENUMSHELLIMAGESTOREDATA *prgElt,ULONG *pceltFetched) PURE; + STDMETHOD (Skip) (THIS_ ULONG celt) PURE; + STDMETHOD (Clone) (THIS_ IEnumShellImageStore **ppEnum) PURE; + }; + + typedef IEnumShellImageStore *LPENUMSHELLIMAGESTORE; + +#define SHIMSTCAPFLAG_LOCKABLE 0x0001 +#define SHIMSTCAPFLAG_PURGEABLE 0x0002 + +#undef INTERFACE +#define INTERFACE IShellImageStore + DECLARE_INTERFACE_(IShellImageStore,IUnknown) { + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD (Open) (THIS_ DWORD dwMode,DWORD *pdwLock) PURE; + STDMETHOD (Create) (THIS_ DWORD dwMode,DWORD *pdwLock) PURE; + STDMETHOD (ReleaseLock) (THIS_ DWORD const *pdwLock) PURE; + STDMETHOD (Close) (THIS_ DWORD const *pdwLock) PURE; + STDMETHOD (Commit) (THIS_ DWORD const *pdwLock) PURE; + STDMETHOD (IsLocked) (THIS) PURE; + STDMETHOD (GetMode) (THIS_ DWORD *pdwMode) PURE; + STDMETHOD (GetCapabilities) (THIS_ DWORD *pdwCapMask) PURE; + STDMETHOD (AddEntry) (THIS_ LPCWSTR pszName,const FILETIME *pftTimeStamp,DWORD dwMode,HBITMAP hImage) PURE; + STDMETHOD (GetEntry) (THIS_ LPCWSTR pszName,DWORD dwMode,HBITMAP *phImage) PURE; + STDMETHOD (DeleteEntry) (THIS_ LPCWSTR pszName) PURE; + STDMETHOD (IsEntryInStore) (THIS_ LPCWSTR pszName,FILETIME *pftTimeStamp) PURE; + STDMETHOD (Enum) (THIS_ LPENUMSHELLIMAGESTORE *ppEnum) PURE; + }; + + typedef IShellImageStore *LPSHELLIMAGESTORE; + +#define ISFB_MASK_STATE 0x00000001 +#define ISFB_MASK_BKCOLOR 0x00000002 +#define ISFB_MASK_VIEWMODE 0x00000004 +#define ISFB_MASK_SHELLFOLDER 0x00000008 +#define ISFB_MASK_IDLIST 0x00000010 +#define ISFB_MASK_COLORS 0x00000020 + +#define ISFB_STATE_DEFAULT 0x00000000 +#define ISFB_STATE_DEBOSSED 0x00000001 +#define ISFB_STATE_ALLOWRENAME 0x00000002 +#define ISFB_STATE_NOSHOWTEXT 0x00000004 +#define ISFB_STATE_CHANNELBAR 0x00000010 +#define ISFB_STATE_QLINKSMODE 0x00000020 +#define ISFB_STATE_FULLOPEN 0x00000040 +#define ISFB_STATE_NONAMESORT 0x00000080 +#define ISFB_STATE_BTNMINSIZE 0x00000100 + +#define ISFBVIEWMODE_SMALLICONS 0x0001 +#define ISFBVIEWMODE_LARGEICONS 0x0002 +#define ISFBVIEWMODE_LOGOS 0x0003 + +#include <pshpack8.h> + + typedef struct { + DWORD dwMask; + DWORD dwStateMask; + DWORD dwState; + COLORREF crBkgnd; + COLORREF crBtnLt; + COLORREF crBtnDk; + WORD wViewMode; + WORD wAlign; + IShellFolder *psf; + LPITEMIDLIST pidl; + } BANDINFOSFB,*PBANDINFOSFB; + +#include <poppack.h> + +#undef INTERFACE +#define INTERFACE IShellFolderBand + DECLARE_INTERFACE_(IShellFolderBand,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(InitializeSFB)(THIS_ IShellFolder *psf,LPCITEMIDLIST pidl) PURE; + STDMETHOD(SetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE; + STDMETHOD(GetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE; + }; + + enum { + SFBID_PIDLCHANGED, + }; + +#undef INTERFACE +#define INTERFACE IDeskBarClient + DECLARE_INTERFACE_(IDeskBarClient,IOleWindow) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetWindow) (THIS_ HWND *lphwnd) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ WINBOOL fEnterMode) PURE; + STDMETHOD(SetDeskBarSite) (THIS_ IUnknown *punkSite) PURE; + STDMETHOD(SetModeDBC) (THIS_ DWORD dwMode) PURE; + STDMETHOD(UIActivateDBC) (THIS_ DWORD dwState) PURE; + STDMETHOD(GetSize) (THIS_ DWORD dwWhich,LPRECT prc) PURE; + }; + +#define DBC_GS_IDEAL 0 +#define DBC_GS_SIZEDOWN 1 + +#define DBC_HIDE 0 +#define DBC_SHOW 1 +#define DBC_SHOWOBSCURE 2 + + enum { + DBCID_EMPTY = 0,DBCID_ONDRAG = 1,DBCID_CLSIDOFBAR = 2,DBCID_RESIZE = 3,DBCID_GETBAR = 4 + }; + +#ifdef _WININET_ + typedef struct _tagWALLPAPEROPT { + DWORD dwSize; + DWORD dwStyle; + } WALLPAPEROPT; + + typedef WALLPAPEROPT *LPWALLPAPEROPT; + typedef const WALLPAPEROPT *LPCWALLPAPEROPT; + + typedef struct _tagCOMPONENTSOPT { + DWORD dwSize; + WINBOOL fEnableComponents; + WINBOOL fActiveDesktop; + } COMPONENTSOPT; + + typedef COMPONENTSOPT *LPCOMPONENTSOPT; + typedef const COMPONENTSOPT *LPCCOMPONENTSOPT; + + typedef struct _tagCOMPPOS { + DWORD dwSize; + int iLeft; + int iTop; + DWORD dwWidth; + DWORD dwHeight; + int izIndex; + WINBOOL fCanResize; + WINBOOL fCanResizeX; + WINBOOL fCanResizeY; + int iPreferredLeftPercent; + int iPreferredTopPercent; + } COMPPOS; + + typedef COMPPOS *LPCOMPPOS; + typedef const COMPPOS *LPCCOMPPOS; + + typedef struct _tagCOMPSTATEINFO { + DWORD dwSize; + int iLeft; + int iTop; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwItemState; + } COMPSTATEINFO; + + typedef COMPSTATEINFO *LPCOMPSTATEINFO; + typedef const COMPSTATEINFO *LPCCOMPSTATEINFO; + +#define COMPONENT_TOP (0x3fffffff) + +#define COMP_TYPE_HTMLDOC 0 +#define COMP_TYPE_PICTURE 1 +#define COMP_TYPE_WEBSITE 2 +#define COMP_TYPE_CONTROL 3 +#define COMP_TYPE_CFHTML 4 +#define COMP_TYPE_MAX 4 + + typedef struct _tagIE4COMPONENT { + DWORD dwSize; + DWORD dwID; + int iComponentType; + WINBOOL fChecked; + WINBOOL fDirty; + WINBOOL fNoScroll; + COMPPOS cpPos; + WCHAR wszFriendlyName[MAX_PATH]; + WCHAR wszSource[INTERNET_MAX_URL_LENGTH]; + WCHAR wszSubscribedURL[INTERNET_MAX_URL_LENGTH]; + } IE4COMPONENT; + + typedef IE4COMPONENT *LPIE4COMPONENT; + typedef const IE4COMPONENT *LPCIE4COMPONENT; + + typedef struct _tagCOMPONENT { + DWORD dwSize; + DWORD dwID; + int iComponentType; + WINBOOL fChecked; + WINBOOL fDirty; + WINBOOL fNoScroll; + COMPPOS cpPos; + WCHAR wszFriendlyName[MAX_PATH]; + WCHAR wszSource[INTERNET_MAX_URL_LENGTH]; + WCHAR wszSubscribedURL[INTERNET_MAX_URL_LENGTH]; + DWORD dwCurItemState; + COMPSTATEINFO csiOriginal; + COMPSTATEINFO csiRestored; + } COMPONENT; + + typedef COMPONENT *LPCOMPONENT; + typedef const COMPONENT *LPCCOMPONENT; + +#define IS_NORMAL 0x00000001 +#define IS_FULLSCREEN 0x00000002 +#define IS_SPLIT 0x00000004 +#define IS_VALIDSIZESTATEBITS (IS_NORMAL | IS_SPLIT | IS_FULLSCREEN) +#define IS_VALIDSTATEBITS (IS_NORMAL | IS_SPLIT | IS_FULLSCREEN | 0x80000000 | 0x40000000) + +#define AD_APPLY_SAVE 0x00000001 +#define AD_APPLY_HTMLGEN 0x00000002 +#define AD_APPLY_REFRESH 0x00000004 +#define AD_APPLY_ALL (AD_APPLY_SAVE | AD_APPLY_HTMLGEN | AD_APPLY_REFRESH) +#define AD_APPLY_FORCE 0x00000008 +#define AD_APPLY_BUFFERED_REFRESH 0x00000010 +#define AD_APPLY_DYNAMICREFRESH 0x00000020 + +#define WPSTYLE_CENTER 0 +#define WPSTYLE_TILE 1 +#define WPSTYLE_STRETCH 2 +#define WPSTYLE_MAX 3 + +#define COMP_ELEM_TYPE 0x00000001 +#define COMP_ELEM_CHECKED 0x00000002 +#define COMP_ELEM_DIRTY 0x00000004 +#define COMP_ELEM_NOSCROLL 0x00000008 +#define COMP_ELEM_POS_LEFT 0x00000010 +#define COMP_ELEM_POS_TOP 0x00000020 +#define COMP_ELEM_SIZE_WIDTH 0x00000040 +#define COMP_ELEM_SIZE_HEIGHT 0x00000080 +#define COMP_ELEM_POS_ZINDEX 0x00000100 +#define COMP_ELEM_SOURCE 0x00000200 +#define COMP_ELEM_FRIENDLYNAME 0x00000400 +#define COMP_ELEM_SUBSCRIBEDURL 0x00000800 +#define COMP_ELEM_ORIGINAL_CSI 0x00001000 +#define COMP_ELEM_RESTORED_CSI 0x00002000 +#define COMP_ELEM_CURITEMSTATE 0x00004000 + +#define COMP_ELEM_ALL (COMP_ELEM_TYPE | COMP_ELEM_CHECKED | COMP_ELEM_DIRTY | COMP_ELEM_NOSCROLL | COMP_ELEM_POS_LEFT | COMP_ELEM_SIZE_WIDTH | COMP_ELEM_SIZE_HEIGHT | COMP_ELEM_POS_ZINDEX | COMP_ELEM_SOURCE | COMP_ELEM_FRIENDLYNAME | COMP_ELEM_POS_TOP | COMP_ELEM_SUBSCRIBEDURL | COMP_ELEM_ORIGINAL_CSI | COMP_ELEM_RESTORED_CSI | COMP_ELEM_CURITEMSTATE) + + typedef enum tagDTI_ADTIWUI { + DTI_ADDUI_DEFAULT = 0x00000000,DTI_ADDUI_DISPSUBWIZARD = 0x00000001,DTI_ADDUI_POSITIONITEM = 0x00000002 + }; + +#define ADDURL_SILENT 0X0001 + +#define COMPONENT_DEFAULT_LEFT (0xFFFF) +#define COMPONENT_DEFAULT_TOP (0xFFFF) + +#undef INTERFACE +#define INTERFACE IActiveDesktop + DECLARE_INTERFACE_(IActiveDesktop,IUnknown) { + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD (ApplyChanges)(THIS_ DWORD dwFlags) PURE; + STDMETHOD (GetWallpaper)(THIS_ LPWSTR pwszWallpaper,UINT cchWallpaper,DWORD dwReserved) PURE; + STDMETHOD (SetWallpaper)(THIS_ LPCWSTR pwszWallpaper,DWORD dwReserved) PURE; + STDMETHOD (GetWallpaperOptions)(THIS_ LPWALLPAPEROPT pwpo,DWORD dwReserved) PURE; + STDMETHOD (SetWallpaperOptions)(THIS_ LPCWALLPAPEROPT pwpo,DWORD dwReserved) PURE; + STDMETHOD (GetPattern)(THIS_ LPWSTR pwszPattern,UINT cchPattern,DWORD dwReserved) PURE; + STDMETHOD (SetPattern)(THIS_ LPCWSTR pwszPattern,DWORD dwReserved) PURE; + STDMETHOD (GetDesktopItemOptions)(THIS_ LPCOMPONENTSOPT pco,DWORD dwReserved) PURE; + STDMETHOD (SetDesktopItemOptions)(THIS_ LPCCOMPONENTSOPT pco,DWORD dwReserved) PURE; + STDMETHOD (AddDesktopItem)(THIS_ LPCCOMPONENT pcomp,DWORD dwReserved) PURE; + STDMETHOD (AddDesktopItemWithUI)(THIS_ HWND hwnd,LPCOMPONENT pcomp,DWORD dwReserved) PURE; + STDMETHOD (ModifyDesktopItem)(THIS_ LPCCOMPONENT pcomp,DWORD dwFlags) PURE; + STDMETHOD (RemoveDesktopItem)(THIS_ LPCCOMPONENT pcomp,DWORD dwReserved) PURE; + STDMETHOD (GetDesktopItemCount)(THIS_ LPINT lpiCount,DWORD dwReserved) PURE; + STDMETHOD (GetDesktopItem)(THIS_ int nComponent,LPCOMPONENT pcomp,DWORD dwReserved) PURE; + STDMETHOD (GetDesktopItemByID)(THIS_ ULONG_PTR dwID,LPCOMPONENT pcomp,DWORD dwReserved) PURE; + STDMETHOD (GenerateDesktopItemHtml)(THIS_ LPCWSTR pwszFileName,LPCOMPONENT pcomp,DWORD dwReserved) PURE; + STDMETHOD (AddUrl)(THIS_ HWND hwnd,LPCWSTR pszSource,LPCOMPONENT pcomp,DWORD dwFlags) PURE; + STDMETHOD (GetDesktopItemBySource)(THIS_ LPCWSTR pwszSource,LPCOMPONENT pcomp,DWORD dwReserved) PURE; + }; + + typedef IActiveDesktop *LPACTIVEDESKTOP; + +#define SSM_CLEAR 0x0000 +#define SSM_SET 0x0001 +#define SSM_REFRESH 0x0002 +#define SSM_UPDATE 0x0004 + +#define SCHEME_DISPLAY 0x0001 +#define SCHEME_EDIT 0x0002 +#define SCHEME_LOCAL 0x0004 +#define SCHEME_GLOBAL 0x0008 +#define SCHEME_REFRESH 0x0010 +#define SCHEME_UPDATE 0x0020 +#define SCHEME_DONOTUSE 0x0040 +#define SCHEME_CREATE 0x0080 + +#undef INTERFACE +#define INTERFACE IActiveDesktopP + + DECLARE_INTERFACE_(IActiveDesktopP,IUnknown) { + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD (SetSafeMode)(THIS_ DWORD dwFlags) PURE; + STDMETHOD (EnsureUpdateHTML)(THIS) PURE; + STDMETHOD (SetScheme)(THIS_ LPCWSTR pwszSchemeName,DWORD dwFlags) PURE; + STDMETHOD (GetScheme)(THIS_ LPWSTR pwszSchemeName,DWORD *lpdwcchBuffer,DWORD dwFlags) PURE; + }; + + typedef IActiveDesktopP *LPACTIVEDESKTOPP; + +#define GADOF_DIRTY 0x00000001 + +#undef INTERFACE +#define INTERFACE IADesktopP2 + + DECLARE_INTERFACE_(IADesktopP2,IUnknown) { + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD (ReReadWallpaper)(THIS) PURE; + STDMETHOD (GetADObjectFlags)(THIS_ DWORD *lpdwFlags,DWORD dwMask) PURE; + STDMETHOD (UpdateAllDesktopSubscriptions)(THIS) PURE; + STDMETHOD (MakeDynamicChanges)(THIS_ IOleObject *pOleObj) PURE; + }; + + typedef IADesktopP2 *LPADESKTOPP2; +#endif + +#define MAX_COLUMN_NAME_LEN 80 +#define MAX_COLUMN_DESC_LEN 128 + +#include <pshpack1.h> + + 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; + +#include <poppack.h> + +#include <pshpack8.h> + + typedef struct { + ULONG dwFlags; + ULONG dwReserved; + WCHAR wszFolder[MAX_PATH]; + } SHCOLUMNINIT,*LPSHCOLUMNINIT; + typedef const SHCOLUMNINIT *LPCSHCOLUMNINIT; + +#define SHCDF_UPDATEITEM 0x00000001 + + typedef struct { + ULONG dwFlags; + DWORD dwFileAttributes; + ULONG dwReserved; + WCHAR *pwszExt; + WCHAR wszFile[MAX_PATH]; + } SHCOLUMNDATA,*LPSHCOLUMNDATA; + typedef const SHCOLUMNDATA *LPCSHCOLUMNDATA; + +#include <poppack.h> + +#undef INTERFACE +#define INTERFACE IColumnProvider + + DECLARE_INTERFACE_(IColumnProvider,IUnknown) { + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD (Initialize)(THIS_ LPCSHCOLUMNINIT psci) PURE; + STDMETHOD (GetColumnInfo)(THIS_ DWORD dwIndex,SHCOLUMNINFO *psci) PURE; + STDMETHOD (GetItemData)(THIS_ LPCSHCOLUMNID pscid,LPCSHCOLUMNDATA pscd,VARIANT *pvarData) PURE; + }; + +#include <pshpack8.h> + + typedef struct { + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; + } SHDRAGIMAGE,*LPSHDRAGIMAGE; + +#include <poppack.h> + +#define DI_GETDRAGIMAGE TEXT("ShellGetDragImage") + +#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_ WINBOOL fShow) PURE; + }; + +#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; + }; + +#define CFSTR_SHELLIDLIST TEXT("Shell IDList Array") +#define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets") +#define CFSTR_NETRESOURCES TEXT("Net Resource") +#define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor") +#define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW") +#define CFSTR_FILECONTENTS TEXT("FileContents") +#define CFSTR_FILENAMEA TEXT("FileName") +#define CFSTR_FILENAMEW TEXT("FileNameW") +#define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName") +#define CFSTR_FILENAMEMAPA TEXT("FileNameMap") +#define CFSTR_FILENAMEMAPW TEXT("FileNameMapW") +#define CFSTR_SHELLURL TEXT("UniformResourceLocator") +#define CFSTR_INETURLA CFSTR_SHELLURL +#define CFSTR_INETURLW TEXT("UniformResourceLocatorW") +#define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect") +#define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect") +#define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded") +#define CFSTR_INDRAGLOOP TEXT("InShellDragLoop") +#define CFSTR_DRAGCONTEXT TEXT("DragContext") +#define CFSTR_MOUNTEDVOLUME TEXT("MountedVolume") +#define CFSTR_PERSISTEDDATAOBJECT TEXT("PersistedDataObject") +#define CFSTR_TARGETCLSID TEXT("TargetCLSID") +#define CFSTR_LOGICALPERFORMEDDROPEFFECT TEXT("Logical Performed DropEffect") +#define CFSTR_AUTOPLAY_SHELLIDLISTS TEXT("Autoplay Enumerated IDList Array") +#define CFSTR_UNTRUSTEDDRAGDROP TEXT("UntrustedDragDrop") + +#ifdef UNICODE +#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORW +#define CFSTR_FILENAME CFSTR_FILENAMEW +#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPW +#define CFSTR_INETURL CFSTR_INETURLW +#else +#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORA +#define CFSTR_FILENAME CFSTR_FILENAMEA +#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPA +#define CFSTR_INETURL CFSTR_INETURLA +#endif + +#define DVASPECT_SHORTNAME 2 +#define DVASPECT_COPY 3 +#define DVASPECT_LINK 4 + +#include <pshpack8.h> + + typedef struct _NRESARRAY { + UINT cItems; + NETRESOURCE nr[1]; + } NRESARRAY,*LPNRESARRAY; +#include <poppack.h> + + typedef struct _IDA { + UINT cidl; + UINT aoffset[1]; + } CIDA,*LPIDA; + + typedef enum { + FD_CLSID = 0x0001,FD_SIZEPOINT = 0x0002,FD_ATTRIBUTES = 0x0004,FD_CREATETIME = 0x0008,FD_ACCESSTIME = 0x0010,FD_WRITESTIME = 0x0020, + FD_FILESIZE = 0x0040,FD_PROGRESSUI = 0x4000,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; + +#ifdef UNICODE +#define FILEDESCRIPTOR FILEDESCRIPTORW +#define LPFILEDESCRIPTOR LPFILEDESCRIPTORW +#else +#define FILEDESCRIPTOR FILEDESCRIPTORA +#define LPFILEDESCRIPTOR LPFILEDESCRIPTORA +#endif + + typedef struct _FILEGROUPDESCRIPTORA { + UINT cItems; + FILEDESCRIPTORA fgd[1]; + } FILEGROUPDESCRIPTORA,*LPFILEGROUPDESCRIPTORA; + + typedef struct _FILEGROUPDESCRIPTORW { + UINT cItems; + FILEDESCRIPTORW fgd[1]; + } FILEGROUPDESCRIPTORW,*LPFILEGROUPDESCRIPTORW; + +#ifdef UNICODE +#define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORW +#define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORW +#else +#define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORA +#define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORA +#endif + + typedef struct _DROPFILES { + DWORD pFiles; + POINT pt; + WINBOOL fNC; + WINBOOL fWide; + } DROPFILES,*LPDROPFILES; + + typedef struct _SHChangeNotifyEntry { + LPCITEMIDLIST pidl; + WINBOOL fRecursive; + } SHChangeNotifyEntry; + +#define SHCNE_RENAMEITEM 0x00000001L +#define SHCNE_CREATE 0x00000002L +#define SHCNE_DELETE 0x00000004L +#define SHCNE_MKDIR 0x00000008L +#define SHCNE_RMDIR 0x00000010L +#define SHCNE_MEDIAINSERTED 0x00000020L +#define SHCNE_MEDIAREMOVED 0x00000040L +#define SHCNE_DRIVEREMOVED 0x00000080L +#define SHCNE_DRIVEADD 0x00000100L +#define SHCNE_NETSHARE 0x00000200L +#define SHCNE_NETUNSHARE 0x00000400L +#define SHCNE_ATTRIBUTES 0x00000800L +#define SHCNE_UPDATEDIR 0x00001000L +#define SHCNE_UPDATEITEM 0x00002000L +#define SHCNE_SERVERDISCONNECT 0x00004000L +#define SHCNE_UPDATEIMAGE 0x00008000L +#define SHCNE_DRIVEADDGUI 0x00010000L +#define SHCNE_RENAMEFOLDER 0x00020000L +#define SHCNE_FREESPACE 0x00040000L +#define SHCNE_EXTENDED_EVENT 0x04000000L + +#define SHCNE_ASSOCCHANGED 0x08000000L + +#define SHCNE_DISKEVENTS 0x0002381FL +#define SHCNE_GLOBALEVENTS 0x0C0581E0L +#define SHCNE_ALLEVENTS 0x7FFFFFFFL +#define SHCNE_INTERRUPT 0x80000000L + +#define SHCNEE_ORDERCHANGED 2L +#define SHCNEE_MSI_CHANGE 4L +#define SHCNEE_MSI_UNINSTALL 5L + +#define SHCNF_IDLIST 0x0000 +#define SHCNF_PATHA 0x0001 +#define SHCNF_PRINTERA 0x0002 +#define SHCNF_DWORD 0x0003 +#define SHCNF_PATHW 0x0005 +#define SHCNF_PRINTERW 0x0006 +#define SHCNF_TYPE 0x00FF +#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 + + SHSTDAPI_(void) SHChangeNotify(LONG wEventId,UINT uFlags,LPCVOID dwItem1,LPCVOID dwItem2); + +#undef INTERFACE +#define INTERFACE IShellChangeNotify + DECLARE_INTERFACE_(IShellChangeNotify,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(OnChange) (THIS_ LONG lEvent,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2) PURE; + }; + +#undef INTERFACE +#define INTERFACE IQueryInfo + DECLARE_INTERFACE_(IQueryInfo,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags,WCHAR **ppwszTip) PURE; + STDMETHOD(GetInfoFlags)(THIS_ DWORD *pdwFlags) PURE; + }; + +#define QITIPF_DEFAULT 0x00000000 +#define QITIPF_USENAME 0x00000001 +#define QITIPF_LINKNOTARGET 0x00000002 +#define QITIPF_LINKUSETARGET 0x00000004 +#define QITIPF_USESLOWTIP 0x00000008 + +#define QIF_CACHED 0x00000001 +#define QIF_DONTEXPANDFOLDER 0x00000002 + + typedef enum enum_SHARD{ + SHARD_PIDL = 0x00000001, + SHARD_PATHA = 0x00000002, + SHARD_PATHW = 0x00000003, + SHARD_APPIDINFO = 0x00000004, + SHARD_APPIDINFOIDLIST = 0x00000005, + SHARD_LINK = 0x00000006, + SHARD_APPIDINFOLINK = 0x00000007, + SHARD_SHELLITEM = 0x00000008 + } SHARD; + +#ifdef UNICODE +#define SHARD_PATH SHARD_PATHW +#else +#define SHARD_PATH SHARD_PATHA +#endif + + SHSTDAPI_(void) SHAddToRecentDocs(UINT uFlags,LPCVOID pv); + + typedef struct _SHChangeDWORDAsIDList { + USHORT cb; + DWORD dwItem1; + DWORD dwItem2; + USHORT cbZero; + } SHChangeDWORDAsIDList,*LPSHChangeDWORDAsIDList; + + typedef struct _SHChangeUpdateImageIDList { + USHORT cb; + int iIconIndex; + int iCurIndex; + UINT uFlags; + DWORD dwProcessID; + WCHAR szName[MAX_PATH]; + USHORT cbZero; + } SHChangeUpdateImageIDList,*LPSHChangeUpdateImageIDList; + + SHSTDAPI_(int) SHHandleUpdateImage(LPCITEMIDLIST pidlExtra); + + typedef struct _SHChangeProductKeyAsIDList { + USHORT cb; + WCHAR wszProductKey[39]; + USHORT cbZero; + } SHChangeProductKeyAsIDList,*LPSHChangeProductKeyAsIDList; + +#ifdef UNICODE +#define SHUpdateImage SHUpdateImageW +#else +#define SHUpdateImage SHUpdateImageA +#endif + + SHSTDAPI_(void) SHUpdateImageA(LPCSTR pszHashItem,int iIndex,UINT uFlags,int iImageIndex); + SHSTDAPI_(void) SHUpdateImageW(LPCWSTR pszHashItem,int iIndex,UINT uFlags,int iImageIndex); + SHSTDAPI_(ULONG) SHChangeNotifyRegister(HWND hwnd,int fSources,LONG fEvents,UINT wMsg,int cEntries,SHChangeNotifyEntry *pshcne); + SHSTDAPI_(WINBOOL) SHChangeNotifyDeregister(unsigned long ulID); + SHSTDAPI_(HANDLE) SHChangeNotification_Lock(HANDLE hChangeNotification,DWORD dwProcessId,LPITEMIDLIST **pppidl,LONG *plEvent); + SHSTDAPI_(WINBOOL) SHChangeNotification_Unlock(HANDLE hLock); + SHSTDAPI SHGetRealIDL(IShellFolder *psf,LPCITEMIDLIST pidlSimple,LPITEMIDLIST *ppidlReal); + SHSTDAPI SHGetInstanceExplorer(IUnknown **ppunk); + +#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 +#define SHDID_COMPUTER_IMAGING 18 +#define SHDID_COMPUTER_AUDIO 19 +#define SHDID_COMPUTER_SHAREDDOCS 20 + +#include <pshpack8.h> + + typedef struct _SHDESCRIPTIONID { + DWORD dwDescriptionId; + CLSID clsid; + } SHDESCRIPTIONID,*LPSHDESCRIPTIONID; + +#include <poppack.h> + +#ifdef UNICODE +#define SHGetDataFromIDList SHGetDataFromIDListW +#else +#define SHGetDataFromIDList SHGetDataFromIDListA +#endif + + SHSTDAPI SHGetDataFromIDListA(IShellFolder *psf,LPCITEMIDLIST pidl,int nFormat,void *pv,int cb); + SHSTDAPI SHGetDataFromIDListW(IShellFolder *psf,LPCITEMIDLIST pidl,int nFormat,void *pv,int cb); + +#define PRF_VERIFYEXISTS 0x0001 +#define PRF_TRYPROGRAMEXTENSIONS (0x0002 | PRF_VERIFYEXISTS) +#define PRF_FIRSTDIRDEF 0x0004 +#define PRF_DONTFINDLNK 0x0008 + SHSTDAPI_(int) RestartDialog(HWND hwnd,LPCWSTR lpPrompt,DWORD dwReturn); + SHSTDAPI_(int) RestartDialogEx(HWND hwnd,LPCWSTR lpPrompt,DWORD dwReturn,DWORD dwReasonCode); + SHSTDAPI SHCoCreateInstance(LPCWSTR pszCLSID,const CLSID *pclsid,IUnknown *pUnkOuter,REFIID riid,void **ppv); + DECLARE_HANDLE(FARPROC16); + SHSTDAPI_(LRESULT) CallCPLEntry16(HINSTANCE hinst,FARPROC16 lpfnEntry,HWND hwndCPL,UINT msg,LPARAM lParam1,LPARAM lParam2); + SHSTDAPI SHCreateStdEnumFmtEtc(UINT cfmt,const FORMATETC afmt[],IEnumFORMATETC **ppenumFormatEtc); + SHSTDAPI SHDoDragDrop(HWND hwnd,IDataObject *pdata,IDropSource *pdsrc,DWORD dwEffect,DWORD *pdwEffect); + +#define NUM_POINTS 3 + typedef struct { + int iNextSample; + DWORD dwLastScroll; + WINBOOL bFull; + POINT pts[NUM_POINTS]; + DWORD dwTimes[NUM_POINTS]; + } AUTO_SCROLL_DATA; + + SHSTDAPI_(WINBOOL) DAD_SetDragImage(HIMAGELIST him,POINT *pptOffset); + SHSTDAPI_(WINBOOL) DAD_DragEnterEx(HWND hwndTarget,const POINT ptStart); + SHSTDAPI_(WINBOOL) DAD_DragEnterEx2(HWND hwndTarget,const POINT ptStart,IDataObject *pdtObject); + SHSTDAPI_(WINBOOL) DAD_ShowDragImage(WINBOOL fShow); + SHSTDAPI_(WINBOOL) DAD_DragMove(POINT pt); + SHSTDAPI_(WINBOOL) DAD_DragLeave(void); + SHSTDAPI_(WINBOOL) DAD_AutoScroll(HWND hwnd,AUTO_SCROLL_DATA *pad,const POINT *pptNow); + + typedef struct { + WORD cLength; + WORD nVersion; + WINBOOL fFullPathTitle : 1; + WINBOOL fSaveLocalView : 1; + WINBOOL fNotShell : 1; + WINBOOL fSimpleDefault : 1; + WINBOOL fDontShowDescBar : 1; + WINBOOL fNewWindowMode : 1; + WINBOOL fShowCompColor : 1; + WINBOOL fDontPrettyNames : 1; + WINBOOL fAdminsCreateCommonGroups : 1; + UINT fUnusedFlags : 7; + UINT fMenuEnumFilter; + } CABINETSTATE,*LPCABINETSTATE; + +#define CABINETSTATE_VERSION 2 + +#ifdef UNICODE +#define PathIsSlow PathIsSlowW +#else +#define PathIsSlow PathIsSlowA +#endif + + SHSTDAPI_(WINBOOL) ReadCabinetState(LPCABINETSTATE lpState,int iSize); + SHSTDAPI_(WINBOOL) WriteCabinetState(LPCABINETSTATE lpState); + SHSTDAPI_(WINBOOL) PathMakeUniqueName(LPWSTR pszUniqueName,UINT cchMax,LPCWSTR pszTemplate,LPCWSTR pszLongPlate,LPCWSTR pszDir); + SHSTDAPI_(void) PathQualify(LPWSTR psz); + SHSTDAPI_(WINBOOL) PathIsExe(LPCWSTR pszPath); + SHSTDAPI_(WINBOOL) PathIsSlowA(LPCSTR pszFile,DWORD dwAttr); + SHSTDAPI_(WINBOOL) PathIsSlowW(LPCWSTR pszFile,DWORD dwAttr); + +#define PCS_FATAL 0x80000000 +#define PCS_REPLACEDCHAR 0x00000001 +#define PCS_REMOVEDCHAR 0x00000002 +#define PCS_TRUNCATED 0x00000004 +#define PCS_PATHTOOLONG 0x00000008 + + SHSTDAPI_(int) PathCleanupSpec(LPCWSTR pszDir,LPWSTR pszSpec); + SHSTDAPI_(int) PathResolve(LPWSTR pszPath,LPCWSTR dirs[],UINT fFlags); + SHSTDAPI_(WINBOOL) GetFileNameFromBrowse(HWND hwnd,LPWSTR pszFilePath,UINT cbFilePath,LPCWSTR pszWorkingDir,LPCWSTR pszDefExt,LPCWSTR pszFilters,LPCWSTR pszTitle); + SHSTDAPI_(int) DriveType(int iDrive); + SHSTDAPI_(int) RealDriveType(int iDrive,WINBOOL fOKToHitNet); + SHSTDAPI_(int) IsNetDrive(int iDrive); + +#define MM_ADDSEPARATOR 0x00000001L +#define MM_SUBMENUSHAVEIDS 0x00000002L +#define MM_DONTREMOVESEPS 0x00000004L + + SHSTDAPI_(UINT) Shell_MergeMenus(HMENU hmDst,HMENU hmSrc,UINT uInsert,UINT uIDAdjust,UINT uIDAdjustMax,ULONG uFlags); + SHSTDAPI_(WINBOOL) SHObjectProperties(HWND hwnd,DWORD dwType,LPCWSTR lpObject,LPCWSTR lpPage); + +#define SHOP_PRINTERNAME 0x00000001 +#define SHOP_FILEPATH 0x00000002 +#define SHOP_VOLUMEGUID 0x00000004 + + SHSTDAPI_(DWORD) SHFormatDrive(HWND hwnd,UINT drive,UINT fmtID,UINT options); + +#define SHFMT_ID_DEFAULT 0xFFFF + +#define SHFMT_OPT_FULL 0x0001 +#define SHFMT_OPT_SYSONLY 0x0002 + +#define SHFMT_ERROR 0xFFFFFFFFL +#define SHFMT_CANCEL 0xFFFFFFFEL +#define SHFMT_NOFORMAT 0xFFFFFFFDL + +#ifndef HPSXA_DEFINED +#define HPSXA_DEFINED + DECLARE_HANDLE(HPSXA); +#endif + WINSHELLAPI HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey,LPCWSTR pszSubKey,UINT max_iface); + WINSHELLAPI void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa); + WINSHELLAPI UINT WINAPI SHAddFromPropSheetExtArray(HPSXA hpsxa,LPFNADDPROPSHEETPAGE lpfnAddPage,LPARAM lParam); + WINSHELLAPI UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA hpsxa,UINT uPageID,LPFNADDPROPSHEETPAGE lpfnReplaceWith,LPARAM lParam); + SHSTDAPI_(LPITEMIDLIST) ILClone(LPCITEMIDLIST pidl); + SHSTDAPI_(LPITEMIDLIST) ILGetNext(LPCITEMIDLIST pidl); + SHSTDAPI_(UINT) ILGetSize(LPCITEMIDLIST pidl); + SHSTDAPI_(LPITEMIDLIST) ILFindLastID(LPCITEMIDLIST pidl); + SHSTDAPI_(WINBOOL) ILRemoveLastID(LPITEMIDLIST pidl); + SHSTDAPI_(LPITEMIDLIST) ILAppendID(LPITEMIDLIST pidl,LPCSHITEMID pmkid,WINBOOL fAppend); + SHSTDAPI_(void) ILFree(LPITEMIDLIST pidl); + SHSTDAPI_(LPITEMIDLIST) ILCloneFirst(LPCITEMIDLIST pidl); + SHSTDAPI_(WINBOOL) ILIsEqual(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2); + SHSTDAPI_(WINBOOL) ILIsParent(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2,WINBOOL fImmediate); + SHSTDAPI_(LPITEMIDLIST) ILFindChild(LPCITEMIDLIST pidlParent,LPCITEMIDLIST pidlChild); + SHSTDAPI_(LPITEMIDLIST) ILCombine(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2); + SHSTDAPI ILLoadFromStream(IStream *pstm,LPITEMIDLIST *pidl); + SHSTDAPI ILSaveToStream(IStream *pstm,LPCITEMIDLIST pidl); + SHSTDAPI_(LPITEMIDLIST) ILCreateFromPathA(LPCSTR pszPath); + SHSTDAPI_(LPITEMIDLIST) ILCreateFromPathW(LPCWSTR pszPath); + +#ifdef NO_WRAPPERS_FOR_ILCREATEFROMPATH + SHSTDAPI_(LPITEMIDLIST) ILCreateFromPath(LPCTSTR pszPath); +#else +#ifdef UNICODE +#define ILCreateFromPath ILCreateFromPathW +#else +#define ILCreateFromPath ILCreateFromPathA +#endif +#endif + SHSTDAPI SHILCreateFromPath(LPCWSTR szPath,LPITEMIDLIST *ppidl,DWORD *rgfInOut); + +#undef INTERFACE +#define INTERFACE IDefViewFrame + DECLARE_INTERFACE_(IDefViewFrame,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(GetWindowLV) (THIS_ HWND *phwnd) PURE; + STDMETHOD(ReleaseWindowLV) (THIS) PURE; + STDMETHOD(GetShellFolder)(THIS_ IShellFolder **ppsf) PURE; + }; + + typedef enum RESTRICTIONS { + REST_NONE = 0x00000000,REST_NORUN = 0x00000001,REST_NOCLOSE = 0x00000002,REST_NOSAVESET = 0x00000004,REST_NOFILEMENU = 0x00000008, + REST_NOSETFOLDERS = 0x00000010,REST_NOSETTASKBAR = 0x00000020,REST_NODESKTOP = 0x00000040,REST_NOFIND = 0x00000080, + REST_NODRIVES = 0x00000100,REST_NODRIVEAUTORUN = 0x00000200,REST_NODRIVETYPEAUTORUN = 0x00000400,REST_NONETHOOD = 0x00000800, + REST_STARTBANNER = 0x00001000,REST_RESTRICTRUN = 0x00002000,REST_NOPRINTERTABS = 0x00004000,REST_NOPRINTERDELETE = 0x00008000, + REST_NOPRINTERADD = 0x00010000,REST_NOSTARTMENUSUBFOLDERS = 0x00020000,REST_MYDOCSONNET = 0x00040000,REST_NOEXITTODOS = 0x00080000, + REST_ENFORCESHELLEXTSECURITY = 0x00100000,REST_LINKRESOLVEIGNORELINKINFO = 0x00200000,REST_NOCOMMONGROUPS = 0x00400000, + REST_SEPARATEDESKTOPPROCESS = 0x00800000,REST_NOWEB = 0x01000000,REST_NOTRAYCONTEXTMENU = 0x02000000,REST_NOVIEWCONTEXTMENU = 0x04000000, + REST_NONETCONNECTDISCONNECT = 0x08000000,REST_STARTMENULOGOFF = 0x10000000,REST_NOSETTINGSASSIST = 0x20000000,REST_NOINTERNETICON = 0x40000001, + REST_NORECENTDOCSHISTORY = 0x40000002,REST_NORECENTDOCSMENU = 0x40000003,REST_NOACTIVEDESKTOP = 0x40000004,REST_NOACTIVEDESKTOPCHANGES = 0x40000005, + REST_NOFAVORITESMENU = 0x40000006,REST_CLEARRECENTDOCSONEXIT = 0x40000007,REST_CLASSICSHELL = 0x40000008,REST_NOCUSTOMIZEWEBVIEW = 0x40000009, + REST_NOHTMLWALLPAPER = 0x40000010,REST_NOCHANGINGWALLPAPER = 0x40000011,REST_NODESKCOMP = 0x40000012,REST_NOADDDESKCOMP = 0x40000013, + REST_NODELDESKCOMP = 0x40000014,REST_NOCLOSEDESKCOMP = 0x40000015,REST_NOCLOSE_DRAGDROPBAND = 0x40000016,REST_NOMOVINGBAND = 0x40000017, + REST_NOEDITDESKCOMP = 0x40000018,REST_NORESOLVESEARCH = 0x40000019,REST_NORESOLVETRACK = 0x4000001A,REST_FORCECOPYACLWITHFILE = 0X4000001B, + REST_NOLOGO3CHANNELNOTIFY = 0x4000001C,REST_NOFORGETSOFTWAREUPDATE = 0x4000001D,REST_NOSETACTIVEDESKTOP = 0x4000001E, + REST_NOUPDATEWINDOWS = 0x4000001F,REST_NOCHANGESTARMENU = 0x40000020,REST_NOFOLDEROPTIONS = 0x40000021,REST_HASFINDCOMPUTERS = 0x40000022, + REST_INTELLIMENUS = 0x40000023,REST_RUNDLGMEMCHECKBOX = 0x40000024,REST_ARP_ShowPostSetup = 0x40000025,REST_NOCSC = 0x40000026, + REST_NOCONTROLPANEL = 0x40000027,REST_ENUMWORKGROUP = 0x40000028,REST_ARP_NOARP = 0x40000029,REST_ARP_NOREMOVEPAGE = 0x4000002A, + REST_ARP_NOADDPAGE = 0x4000002B,REST_ARP_NOWINSETUPPAGE = 0x4000002C,REST_GREYMSIADS = 0x4000002D,REST_NOCHANGEMAPPEDDRIVELABEL = 0x4000002E, + REST_NOCHANGEMAPPEDDRIVECOMMENT = 0x4000002F,REST_MaxRecentDocs = 0x40000030,REST_NONETWORKCONNECTIONS = 0x40000031, + REST_FORCESTARTMENULOGOFF = 0x40000032,REST_NOWEBVIEW = 0x40000033,REST_NOCUSTOMIZETHISFOLDER = 0x40000034,REST_NOENCRYPTION = 0x40000035, + REST_DONTSHOWSUPERHIDDEN = 0x40000037,REST_NOSHELLSEARCHBUTTON = 0x40000038,REST_NOHARDWARETAB = 0x40000039,REST_NORUNASINSTALLPROMPT = 0x4000003A, + REST_PROMPTRUNASINSTALLNETPATH = 0x4000003B,REST_NOMANAGEMYCOMPUTERVERB = 0x4000003C,REST_NORECENTDOCSNETHOOD = 0x4000003D, + REST_DISALLOWRUN = 0x4000003E,REST_NOWELCOMESCREEN = 0x4000003F,REST_RESTRICTCPL = 0x40000040,REST_DISALLOWCPL = 0x40000041, + REST_NOSMBALLOONTIP = 0x40000042,REST_NOSMHELP = 0x40000043,REST_NOWINKEYS = 0x40000044,REST_NOENCRYPTONMOVE = 0x40000045, + REST_NOLOCALMACHINERUN = 0x40000046,REST_NOCURRENTUSERRUN = 0x40000047,REST_NOLOCALMACHINERUNONCE = 0x40000048, + REST_NOCURRENTUSERRUNONCE = 0x40000049,REST_FORCEACTIVEDESKTOPON = 0x4000004A,REST_NOCOMPUTERSNEARME = 0x4000004B,REST_NOVIEWONDRIVE = 0x4000004C, + REST_NONETCRAWL = 0x4000004D,REST_NOSHAREDDOCUMENTS = 0x4000004E,REST_NOSMMYDOCS = 0x4000004F,REST_NOSMMYPICS = 0x40000050, + REST_ALLOWBITBUCKDRIVES = 0x40000051,REST_NONLEGACYSHELLMODE = 0x40000052,REST_NOCONTROLPANELBARRICADE = 0x40000053,REST_NOSTARTPAGE = 0x40000054, + REST_NOAUTOTRAYNOTIFY = 0x40000055,REST_NOTASKGROUPING = 0x40000056,REST_NOCDBURNING = 0x40000057,REST_MYCOMPNOPROP = 0x40000058, + REST_MYDOCSNOPROP = 0x40000059,REST_NOSTARTPANEL = 0x4000005A,REST_NODISPLAYAPPEARANCEPAGE = 0x4000005B,REST_NOTHEMESTAB = 0x4000005C, + REST_NOVISUALSTYLECHOICE = 0x4000005D,REST_NOSIZECHOICE = 0x4000005E,REST_NOCOLORCHOICE = 0x4000005F,REST_SETVISUALSTYLE = 0x40000060, + REST_STARTRUNNOHOMEPATH = 0x40000061,REST_NOUSERNAMEINSTARTPANEL = 0x40000062,REST_NOMYCOMPUTERICON = 0x40000063,REST_NOSMNETWORKPLACES = 0x40000064, + REST_NOSMPINNEDLIST = 0x40000065,REST_NOSMMYMUSIC = 0x40000066,REST_NOSMEJECTPC = 0x40000067,REST_NOSMMOREPROGRAMS = 0x40000068, + REST_NOSMMFUPROGRAMS = 0x40000069,REST_NOTRAYITEMSDISPLAY = 0x4000006A,REST_NOTOOLBARSONTASKBAR = 0x4000006B,REST_NOSMCONFIGUREPROGRAMS = 0x4000006F, + REST_HIDECLOCK = 0x40000070,REST_NOLOWDISKSPACECHECKS = 0x40000071,REST_NOENTIRENETWORK = 0x40000072,REST_NODESKTOPCLEANUP = 0x40000073, + REST_BITBUCKNUKEONDELETE = 0x40000074,REST_BITBUCKCONFIRMDELETE = 0x40000075,REST_BITBUCKNOPROP = 0x40000076,REST_NODISPBACKGROUND = 0x40000077, + REST_NODISPSCREENSAVEPG = 0x40000078,REST_NODISPSETTINGSPG = 0x40000079,REST_NODISPSCREENSAVEPREVIEW = 0x4000007A,REST_NODISPLAYCPL = 0x4000007B, + REST_HIDERUNASVERB = 0x4000007C,REST_NOTHUMBNAILCACHE = 0x4000007D,REST_NOSTRCMPLOGICAL = 0x4000007E,REST_NOPUBLISHWIZARD = 0x4000007F, + REST_NOONLINEPRINTSWIZARD = 0x40000080,REST_NOWEBSERVICES = 0x40000081,REST_ALLOWUNHASHEDWEBVIEW = 0x40000082,REST_ALLOWLEGACYWEBVIEW = 0x40000083, + REST_REVERTWEBVIEWSECURITY = 0x40000084,REST_INHERITCONSOLEHANDLES = 0x40000086,REST_SORTMAXITEMCOUNT = 0x40000087, + REST_NOREMOTERECURSIVEEVENTS = 0x40000089,REST_NOREMOTECHANGENOTIFY = 0x40000091,REST_NOSIMPLENETIDLIST = 0x40000092, + REST_NOENUMENTIRENETWORK = 0x40000093,REST_NODETAILSTHUMBNAILONNETWORK= 0x40000094,REST_NOINTERNETOPENWITH = 0x40000095, + REST_ALLOWLEGACYLMZBEHAVIOR = 0x4000009A,REST_DONTRETRYBADNETNAME = 0x4000009B,REST_ALLOWFILECLSIDJUNCTIONS = 0x4000009C, + REST_NOUPNPINSTALL = 0x4000009D,REST_NODISCONNECT = 0x41000001,REST_NOSECURITY = 0x41000002,REST_NOFILEASSOCIATE = 0x41000003, + REST_ALLOWCOMMENTTOGGLE = 0x41000004,REST_USEDESKTOPINICACHE = 0x41000005 + } RESTRICTIONS; + + SHSTDAPI_(IStream *) OpenRegStream(HKEY hkey,LPCWSTR pszSubkey,LPCWSTR pszValue,DWORD grfMode); + SHSTDAPI_(WINBOOL) SHFindFiles(LPCITEMIDLIST pidlFolder,LPCITEMIDLIST pidlSaveFile); + SHSTDAPI_(void) PathGetShortPath(LPWSTR pszLongPath); + SHSTDAPI_(WINBOOL) PathYetAnotherMakeUniqueName(LPWSTR pszUniqueName,LPCWSTR pszPath,LPCWSTR pszShort,LPCWSTR pszFileSpec); + SHSTDAPI_(WINBOOL) Win32DeleteFile(LPCWSTR pszPath); + +#define PPCF_ADDQUOTES 0x00000001 +#define PPCF_ADDARGUMENTS 0x00000003 +#define PPCF_NODIRECTORIES 0x00000010 +#define PPCF_FORCEQUALIFY 0x00000040 +#define PPCF_LONGESTPOSSIBLE 0x00000080 + +#ifdef UNICODE +#define SHStartNetConnectionDialog SHStartNetConnectionDialogW +#define SHDefExtractIcon SHDefExtractIconW +#else +#define SHStartNetConnectionDialog SHStartNetConnectionDialogA +#define SHDefExtractIcon SHDefExtractIconA +#endif + + SHSTDAPI_(LONG) PathProcessCommand(LPCWSTR lpSrc,LPWSTR lpDest,int iMax,DWORD dwFlags); + SHSTDAPI_(DWORD) SHRestricted(RESTRICTIONS rest); + SHSTDAPI_(WINBOOL) SignalFileOpen(LPCITEMIDLIST pidl); + SHSTDAPI_(LPITEMIDLIST) SHSimpleIDListFromPath(LPCWSTR pszPath); + SHSTDAPI SHLoadOLE(LPARAM lParam); + SHSTDAPI SHStartNetConnectionDialogA(HWND hwnd,LPCSTR pszRemoteName,DWORD dwType); + SHSTDAPI SHStartNetConnectionDialogW(HWND hwnd,LPCWSTR pszRemoteName,DWORD dwType); + SHSTDAPI SHDefExtractIconA(LPCSTR pszIconFile,int iIndex,UINT uFlags,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize); + SHSTDAPI SHDefExtractIconW(LPCWSTR pszIconFile,int iIndex,UINT uFlags,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize); + SHSTDAPI_(WINBOOL) Shell_GetImageLists(HIMAGELIST *phiml,HIMAGELIST *phimlSmall); + SHSTDAPI_(int) Shell_GetCachedImageIndex(LPCWSTR pszIconPath,int iIconIndex,UINT uIconFlags); + +#undef INTERFACE +#define INTERFACE IDocViewSite + DECLARE_INTERFACE_(IDocViewSite,IUnknown) { + STDMETHOD(QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(OnSetTitle) (THIS_ VARIANTARG *pvTitle) PURE; + }; +#define VALIDATEUNC_NOUI 0x0002 +#define VALIDATEUNC_CONNECT 0x0001 +#define VALIDATEUNC_PRINT 0x0004 +#define VALIDATEUNC_VALID 0x0007 + + SHSTDAPI_(WINBOOL) SHValidateUNC(HWND hwndOwner,LPWSTR pszFile,UINT fConnect); +#define OPENPROPS_NONE 0x0000 +#define OPENPROPS_INHIBITPIF 0x8000 +#define GETPROPS_NONE 0x0000 +#define SETPROPS_NONE 0x0000 +#define CLOSEPROPS_NONE 0x0000 +#define CLOSEPROPS_DISCARD 0x0001 + +#define PIFNAMESIZE 30 +#define PIFSTARTLOCSIZE 63 +#define PIFDEFPATHSIZE 64 +#define PIFPARAMSSIZE 64 +#define PIFSHPROGSIZE 64 +#define PIFSHDATASIZE 64 +#define PIFDEFFILESIZE 80 +#define PIFMAXFILEPATH 260 + + typedef struct PROPPRG { + WORD flPrg; + WORD flPrgInit; + CHAR achTitle[PIFNAMESIZE]; + CHAR achCmdLine[PIFSTARTLOCSIZE+PIFPARAMSSIZE+1]; + CHAR achWorkDir[PIFDEFPATHSIZE]; + WORD wHotKey; + CHAR achIconFile[PIFDEFFILESIZE]; + WORD wIconIndex; + DWORD dwEnhModeFlags; + DWORD dwRealModeFlags; + CHAR achOtherFile[PIFDEFFILESIZE]; + CHAR achPIFFile[PIFMAXFILEPATH]; + } PROPPRG; + typedef UNALIGNED PROPPRG *PPROPPRG; + typedef UNALIGNED PROPPRG *LPPROPPRG; + typedef const UNALIGNED PROPPRG *LPCPROPPRG; + + SHSTDAPI_(HANDLE) PifMgr_OpenProperties(LPCWSTR pszApp,LPCWSTR pszPIF,UINT hInf,UINT flOpt); + SHSTDAPI_(int) PifMgr_GetProperties(HANDLE hProps,LPCSTR pszGroup,void *lpProps,int cbProps,UINT flOpt); + SHSTDAPI_(int) PifMgr_SetProperties(HANDLE hProps,LPCSTR pszGroup,const VOID *lpProps,int cbProps,UINT flOpt); + SHSTDAPI_(HANDLE) PifMgr_CloseProperties(HANDLE hProps,UINT flOpt); + SHSTDAPI_(void) SHSetInstanceExplorer(IUnknown *punk); + SHSTDAPI_(WINBOOL) IsUserAnAdmin(void); + +#undef INTERFACE +#define INTERFACE IInitializeObject + DECLARE_INTERFACE_(IInitializeObject,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(Initialize)(THIS) PURE; + }; + + enum { + BMICON_LARGE = 0,BMICON_SMALL + }; + +#undef INTERFACE +#define INTERFACE IBanneredBar + DECLARE_INTERFACE_(IBanneredBar,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(SetIconSize)(THIS_ DWORD iIcon) PURE; + STDMETHOD(GetIconSize)(THIS_ DWORD *piIcon) PURE; + STDMETHOD(SetBitmap)(THIS_ HBITMAP hBitmap) PURE; + STDMETHOD(GetBitmap)(THIS_ HBITMAP *phBitmap) PURE; + }; + + SHSTDAPI_(LRESULT) SHShellFolderView_Message(HWND hwndMain,UINT uMsg,LPARAM lParam); + +#undef INTERFACE +#define INTERFACE IShellFolderViewCB + DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg,WPARAM wParam,LPARAM lParam) PURE; + }; + +#include <pshpack8.h> + +#undef UNSIZED_ARRAY2 +#undef EMPTY_SIZE2 +#define UNSIZED_ARRAY2 +#define EMPTY_SIZE2 UNSIZED_ARRAY2 + +#define QCMINFO_PLACE_BEFORE 0 +#define QCMINFO_PLACE_AFTER 1 + typedef struct _QCMINFO_IDMAP_PLACEMENT { + UINT id; + UINT fFlags; + } QCMINFO_IDMAP_PLACEMENT; + + typedef struct _QCMINFO_IDMAP { + UINT nMaxIds; + QCMINFO_IDMAP_PLACEMENT pIdList[1]; + } QCMINFO_IDMAP; + + typedef struct _QCMINFO { + HMENU hmenu; + UINT indexMenu; + UINT idCmdFirst; + UINT idCmdLast; + QCMINFO_IDMAP const *pIdMap; + } QCMINFO; + + typedef QCMINFO *LPQCMINFO; + +#define TBIF_APPEND 0 +#define TBIF_PREPEND 1 +#define TBIF_REPLACE 2 +#define TBIF_DEFAULT 0x00000000 +#define TBIF_INTERNETBAR 0x00010000 +#define TBIF_STANDARDTOOLBAR 0x00020000 +#define TBIF_NOTOOLBAR 0x00030000 + + typedef struct _TBINFO { + UINT cbuttons; + UINT uFlags; + } TBINFO; + + typedef struct _DETAILSINFO { + LPCITEMIDLIST pidl; + int fmt; + int cxChar; + STRRET str; + int iImage; + } DETAILSINFO; + + typedef struct _SFVM_PROPPAGE_DATA { + DWORD dwReserved; + LPFNADDPROPSHEETPAGE pfn; + LPARAM lParam; + } SFVM_PROPPAGE_DATA; + + typedef struct _SFVM_HELPTOPIC_DATA { + WCHAR wszHelpFile[MAX_PATH]; + WCHAR wszHelpTopic[MAX_PATH]; + } SFVM_HELPTOPIC_DATA; + +#define SFVM_MERGEMENU 1 +#define SFVM_INVOKECOMMAND 2 +#define SFVM_GETHELPTEXT 3 +#define SFVM_GETTOOLTIPTEXT 4 +#define SFVM_GETBUTTONINFO 5 +#define SFVM_GETBUTTONS 6 +#define SFVM_INITMENUPOPUP 7 +#define SFVM_FSNOTIFY 14 +#define SFVM_WINDOWCREATED 15 +#define SFVM_GETDETAILSOF 23 +#define SFVM_COLUMNCLICK 24 +#define SFVM_QUERYFSNOTIFY 25 +#define SFVM_DEFITEMCOUNT 26 +#define SFVM_DEFVIEWMODE 27 +#define SFVM_UNMERGEMENU 28 +#define SFVM_UPDATESTATUSBAR 31 +#define SFVM_BACKGROUNDENUM 32 +#define SFVM_DIDDRAGDROP 36 +#define SFVM_SETISFV 39 +#define SFVM_THISIDLIST 41 +#define SFVM_ADDPROPERTYPAGES 47 +#define SFVM_BACKGROUNDENUMDONE 48 +#define SFVM_GETNOTIFY 49 +#define SFVM_GETSORTDEFAULTS 53 +#define SFVM_SIZE 57 +#define SFVM_GETZONE 58 +#define SFVM_GETPANE 59 +#define SFVM_GETHELPTOPIC 63 +#define SFVM_GETANIMATION 68 + + typedef struct _SFV_CREATE { + UINT cbSize; + IShellFolder *pshf; + IShellView *psvOuter; + IShellFolderViewCB *psfvcb; + } SFV_CREATE; + + SHSTDAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv,IShellView **ppsv); + + typedef HRESULT (CALLBACK *LPFNDFMCALLBACK)(IShellFolder *psf,HWND hwnd,IDataObject *pdtobj,UINT uMsg,WPARAM wParam,LPARAM lParam); + +#ifdef UNICODE +#define SHOpenPropSheet SHOpenPropSheetW +#else +#define SHOpenPropSheet SHOpenPropSheetA +#endif + + SHSTDAPI CDefFolderMenu_Create2(LPCITEMIDLIST pidlFolder,HWND hwnd,UINT cidl,LPCITEMIDLIST *apidl,IShellFolder *psf,LPFNDFMCALLBACK lpfn,UINT nKeys,const HKEY *ahkeyClsKeys,IContextMenu **ppcm); + SHSTDAPI_(WINBOOL) SHOpenPropSheetA(LPCSTR pszCaption,HKEY ahkeys[],UINT cikeys,const CLSID *pclsidDefault,IDataObject *pdtobj,IShellBrowser *psb,LPCSTR pStartPage); + SHSTDAPI_(WINBOOL) SHOpenPropSheetW(LPCWSTR pszCaption,HKEY ahkeys[],UINT cikeys,const CLSID *pclsidDefault,IDataObject *pdtobj,IShellBrowser *psb,LPCWSTR pStartPage); + +#define DFM_MERGECONTEXTMENU 1 +#define DFM_INVOKECOMMAND 2 +#define DFM_GETDEFSTATICID 14 + +#define DFM_CMD_PROPERTIES ((UINT)-5) + typedef TBINFO *LPTBINFO; + typedef DETAILSINFO *PDETAILSINFO; + typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)(IShellView *psvOuter,IShellFolder *psf,HWND hwndMain,UINT uMsg,WPARAM wParam,LPARAM lParam); + + typedef struct _CSFV { + UINT cbSize; + IShellFolder *pshf; + IShellView *psvOuter; + LPCITEMIDLIST pidl; + LONG lEvents; + LPFNVIEWCALLBACK pfnCallback; + FOLDERVIEWMODE fvm; + } CSFV,*LPCSFV; + +#define SFVM_REARRANGE 0x00000001 +#define ShellFolderView_ReArrange(_hwnd,_lparam) (WINBOOL)SHShellFolderView_Message(_hwnd,SFVM_REARRANGE,_lparam) + +#define SFVM_ADDOBJECT 0x00000003 +#define ShellFolderView_AddObject(_hwnd,_pidl) (LPARAM)SHShellFolderView_Message(_hwnd,SFVM_ADDOBJECT,(LPARAM)_pidl) + +#define SFVM_REMOVEOBJECT 0x00000006 +#define ShellFolderView_RemoveObject(_hwnd,_pidl) (LPARAM)SHShellFolderView_Message(_hwnd,SFVM_REMOVEOBJECT,(LPARAM)_pidl) + +#define SFVM_UPDATEOBJECT 0x00000007 +#define ShellFolderView_UpdateObject(_hwnd,_ppidl) (LPARAM)SHShellFolderView_Message(_hwnd,SFVM_UPDATEOBJECT,(LPARAM)_ppidl) + +#define SFVM_GETSELECTEDOBJECTS 0x00000009 +#define ShellFolderView_GetSelectedObjects(_hwnd,ppidl) (LPARAM)SHShellFolderView_Message(_hwnd,SFVM_GETSELECTEDOBJECTS,(LPARAM)ppidl) + typedef struct _SFV_SETITEMPOS { + LPCITEMIDLIST pidl; + POINT pt; + } SFV_SETITEMPOS,*LPSFV_SETITEMPOS; + +#define SFVM_SETITEMPOS 0x0000000e +#define ShellFolderView_SetItemPos(_hwnd,_pidl,_x,_y) { SFV_SETITEMPOS _sip = {_pidl,{_x,_y}}; SHShellFolderView_Message(_hwnd,SFVM_SETITEMPOS,(LPARAM)(LPSFV_SETITEMPOS)&_sip);} + +#define SFVM_SETCLIPBOARD 0x00000010 +#define ShellFolderView_SetClipboard(_hwnd,_dwEffect) (void)SHShellFolderView_Message(_hwnd,SFVM_SETCLIPBOARD,(LPARAM)(DWORD)(_dwEffect)) +#define SFVM_SETPOINTS 0x00000017 +#define ShellFolderView_SetPoints(_hwnd,_pdtobj) (void)SHShellFolderView_Message(_hwnd,SFVM_SETPOINTS,(LPARAM)_pdtobj) +#include <poppack.h> + SHSTDAPI_(IContextMenu *) SHFind_InitMenuPopup(HMENU hmenu,HWND hwndOwner,UINT idCmdFirst,UINT idCmdLast); + SHSTDAPI SHCreateShellFolderViewEx(LPCSFV pcsfv,IShellView **ppsv); + +#define PID_IS_URL 2 +#define PID_IS_NAME 4 +#define PID_IS_WORKINGDIR 5 +#define PID_IS_HOTKEY 6 +#define PID_IS_SHOWCMD 7 +#define PID_IS_ICONINDEX 8 +#define PID_IS_ICONFILE 9 +#define PID_IS_WHATSNEW 10 +#define PID_IS_AUTHOR 11 +#define PID_IS_DESCRIPTION 12 +#define PID_IS_COMMENT 13 + +#define PID_INTSITE_WHATSNEW 2 +#define PID_INTSITE_AUTHOR 3 +#define PID_INTSITE_LASTVISIT 4 +#define PID_INTSITE_LASTMOD 5 +#define PID_INTSITE_VISITCOUNT 6 +#define PID_INTSITE_DESCRIPTION 7 +#define PID_INTSITE_COMMENT 8 +#define PID_INTSITE_FLAGS 9 +#define PID_INTSITE_CONTENTLEN 10 +#define PID_INTSITE_CONTENTCODE 11 +#define PID_INTSITE_RECURSE 12 +#define PID_INTSITE_WATCH 13 +#define PID_INTSITE_SUBSCRIPTION 14 +#define PID_INTSITE_URL 15 +#define PID_INTSITE_TITLE 16 +#define PID_INTSITE_CODEPAGE 18 +#define PID_INTSITE_TRACKING 19 +#define PID_INTSITE_ICONINDEX 20 +#define PID_INTSITE_ICONFILE 21 + +#define PIDISF_RECENTLYCHANGED 0x00000001 +#define PIDISF_CACHEDSTICKY 0x00000002 +#define PIDISF_CACHEIMAGES 0x00000010 +#define PIDISF_FOLLOWALLLINKS 0x00000020 + +#define PIDISM_GLOBAL 0 +#define PIDISM_WATCH 1 +#define PIDISM_DONTWATCH 2 + + typedef struct { + WINBOOL fShowAllObjects : 1; + WINBOOL fShowExtensions : 1; + WINBOOL fNoConfirmRecycle : 1; + WINBOOL fShowSysFiles : 1; + WINBOOL fShowCompColor : 1; + WINBOOL fDoubleClickInWebView : 1; + WINBOOL fDesktopHTML : 1; + WINBOOL fWin95Classic : 1; + WINBOOL fDontPrettyPath : 1; + WINBOOL fShowAttribCol : 1; + WINBOOL fMapNetDrvBtn : 1; + WINBOOL fShowInfoTip : 1; + WINBOOL fHideIcons : 1; + WINBOOL fWebView : 1; + WINBOOL fFilter : 1; + WINBOOL fShowSuperHidden : 1; + WINBOOL fNoNetCrawling : 1; + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT version; + UINT uNotUsed; + WINBOOL fSepProcess: 1; + WINBOOL fStartPanelOn: 1; + WINBOOL fShowStartPage: 1; + UINT fSpareFlags : 13; + } SHELLSTATEA,*LPSHELLSTATEA; + + typedef struct { + WINBOOL fShowAllObjects : 1; + WINBOOL fShowExtensions : 1; + WINBOOL fNoConfirmRecycle : 1; + WINBOOL fShowSysFiles : 1; + WINBOOL fShowCompColor : 1; + WINBOOL fDoubleClickInWebView : 1; + WINBOOL fDesktopHTML : 1; + WINBOOL fWin95Classic : 1; + WINBOOL fDontPrettyPath : 1; + WINBOOL fShowAttribCol : 1; + WINBOOL fMapNetDrvBtn : 1; + WINBOOL fShowInfoTip : 1; + WINBOOL fHideIcons : 1; + WINBOOL fWebView : 1; + WINBOOL fFilter : 1; + WINBOOL fShowSuperHidden : 1; + WINBOOL fNoNetCrawling : 1; + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT version; + UINT uNotUsed; + WINBOOL fSepProcess: 1; + WINBOOL fStartPanelOn: 1; + WINBOOL fShowStartPage: 1; + UINT fSpareFlags : 13; + } SHELLSTATEW,*LPSHELLSTATEW; + +#define SHELLSTATEVERSION_IE4 9 +#define SHELLSTATEVERSION_WIN2K 10 + +#ifdef UNICODE +#define SHELLSTATE SHELLSTATEW +#define LPSHELLSTATE LPSHELLSTATEW +#else +#define SHELLSTATE SHELLSTATEA +#define LPSHELLSTATE LPSHELLSTATEA +#endif + +#define SHELLSTATE_SIZE_WIN95 FIELD_OFFSET(SHELLSTATE,lParamSort) +#define SHELLSTATE_SIZE_NT4 FIELD_OFFSET(SHELLSTATE,version) +#define SHELLSTATE_SIZE_IE4 FIELD_OFFSET(SHELLSTATE,uNotUsed) +#define SHELLSTATE_SIZE_WIN2K sizeof(SHELLSTATE) + + SHSTDAPI_(void) SHGetSetSettings(LPSHELLSTATE lpss,DWORD dwMask,WINBOOL bSet); + + typedef struct { + WINBOOL fShowAllObjects : 1; + WINBOOL fShowExtensions : 1; + WINBOOL fNoConfirmRecycle : 1; + WINBOOL fShowSysFiles : 1; + WINBOOL fShowCompColor : 1; + WINBOOL fDoubleClickInWebView : 1; + WINBOOL fDesktopHTML : 1; + WINBOOL fWin95Classic : 1; + WINBOOL fDontPrettyPath : 1; + WINBOOL fShowAttribCol : 1; + WINBOOL fMapNetDrvBtn : 1; + WINBOOL fShowInfoTip : 1; + WINBOOL fHideIcons : 1; + UINT fRestFlags : 3; + } SHELLFLAGSTATE,*LPSHELLFLAGSTATE; + +#define SSF_SHOWALLOBJECTS 0x00000001 +#define SSF_SHOWEXTENSIONS 0x00000002 +#define SSF_HIDDENFILEEXTS 0x00000004 +#define SSF_SERVERADMINUI 0x00000004 +#define SSF_SHOWCOMPCOLOR 0x00000008 +#define SSF_SORTCOLUMNS 0x00000010 +#define SSF_SHOWSYSFILES 0x00000020 +#define SSF_DOUBLECLICKINWEBVIEW 0x00000080 +#define SSF_SHOWATTRIBCOL 0x00000100 +#define SSF_DESKTOPHTML 0x00000200 +#define SSF_WIN95CLASSIC 0x00000400 +#define SSF_DONTPRETTYPATH 0x00000800 +#define SSF_SHOWINFOTIP 0x00002000 +#define SSF_MAPNETDRVBUTTON 0x00001000 +#define SSF_NOCONFIRMRECYCLE 0x00008000 +#define SSF_HIDEICONS 0x00004000 +#define SSF_FILTER 0x00010000 +#define SSF_WEBVIEW 0x00020000 +#define SSF_SHOWSUPERHIDDEN 0x00040000 +#define SSF_SEPPROCESS 0x00080000 +#define SSF_NONETCRAWLING 0x00100000 +#define SSF_STARTPANELON 0x00200000 +#define SSF_SHOWSTARTPAGE 0x00400000 + + SHSTDAPI_(void) SHGetSettings(LPSHELLFLAGSTATE lpsfs,DWORD dwMask); + SHSTDAPI SHBindToParent(LPCITEMIDLIST pidl,REFIID riid,void **ppv,LPCITEMIDLIST *ppidlLast); + SHSTDAPI SHParseDisplayName(PCWSTR pszName,IBindCtx *pbc,LPITEMIDLIST *ppidl,SFGAOF sfgaoIn,SFGAOF *psfgaoOut); + +#define SHPPFW_NONE 0x00000000 +#define SHPPFW_DEFAULT SHPPFW_DIRCREATE +#define SHPPFW_DIRCREATE 0x00000001 +#define SHPPFW_ASKDIRCREATE 0x00000002 +#define SHPPFW_IGNOREFILENAME 0x00000004 +#define SHPPFW_NOWRITECHECK 0x00000008 +#define SHPPFW_MEDIACHECKONLY 0x00000010 + +#ifdef UNICODE +#define SHPathPrepareForWrite SHPathPrepareForWriteW +#else +#define SHPathPrepareForWrite SHPathPrepareForWriteA +#endif + + SHSTDAPI SHPathPrepareForWriteA(HWND hwnd,IUnknown *punkEnableModless,LPCSTR pszPath,DWORD dwFlags); + SHSTDAPI SHPathPrepareForWriteW(HWND hwnd,IUnknown *punkEnableModless,LPCWSTR pszPath,DWORD dwFlags); + + +#undef INTERFACE +#define INTERFACE INamedPropertyBag + DECLARE_INTERFACE_(INamedPropertyBag,IUnknown) { + STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD(ReadPropertyNPB) (THIS_ LPCOLESTR pszBagname,LPCOLESTR pszPropName,PROPVARIANT *pVar) PURE; + STDMETHOD(WritePropertyNPB)(THIS_ LPCOLESTR pszBagname,LPCOLESTR pszPropName,PROPVARIANT *pVar) PURE; + STDMETHOD(RemovePropertyNPB)(THIS_ LPCOLESTR pszBagname,LPCOLESTR pszPropName) PURE; + }; + +#ifdef __urlmon_h__ + SHDOCAPI_(DWORD) SoftwareUpdateMessageBox(HWND hWnd,LPCWSTR szDistUnit,DWORD dwFlags,LPSOFTDISTINFO psdi); +#endif + +#ifdef UNICODE +#define SHCreateFileExtractIcon SHCreateFileExtractIconW +#else +#define SHCreateFileExtractIcon SHCreateFileExtractIconA +#endif + + SHSTDAPI SHPropStgCreate(IPropertySetStorage *psstg,REFFMTID fmtid,CLSID *pclsid,DWORD grfFlags,DWORD grfMode,DWORD dwDisposition,IPropertyStorage**ppstg,UINT *puCodePage); + SHSTDAPI SHPropStgReadMultiple(IPropertyStorage *pps,UINT uCodePage,ULONG cpspec,PROPSPEC const rgpspec[],PROPVARIANT rgvar[]); + SHSTDAPI SHPropStgWriteMultiple(IPropertyStorage *pps,UINT *puCodePage,ULONG cpspec,PROPSPEC const rgpspec[],PROPVARIANT rgvar[],PROPID propidNameFirst); + SHSTDAPI SHCreateFileExtractIconA(LPCSTR pszFile,DWORD dwFileAttributes,REFIID riid,void **ppv); + SHSTDAPI SHCreateFileExtractIconW(LPCWSTR pszFile,DWORD dwFileAttributes,REFIID riid,void **ppv); + +#include <pshpack8.h> + SHSTDAPI SHLimitInputEdit(HWND hwndEdit,IShellFolder *psf); + SHSTDAPI SHMultiFileProperties(IDataObject *pdtobj,DWORD dwFlags); + +#if (_WIN32_IE >= 0x0600) + typedef void (CALLBACK *PFNASYNCICONTASKBALLBACK)(LPCITEMIDLIST pidl,LPVOID pvData,LPVOID pvHint,INT iIconIndex,INT iOpenIconIndex); + SHSTDAPI SHMapIDListToImageListIndexAsync(IShellTaskScheduler *pts,IShellFolder *psf,LPCITEMIDLIST pidl,UINT flags,PFNASYNCICONTASKBALLBACK pfn,LPVOID pvData,LPVOID pvHint,int *piIndex,int *piIndexSel); +#endif + + SHSTDAPI_(int) SHMapPIDLToSystemImageListIndex(IShellFolder *pshf,LPCITEMIDLIST pidl,int *piIndexSel); + STDAPI SHCLSIDFromString(PCWSTR lpsz,CLSID *pclsid); + STDAPI SHFlushClipboard(void); + STDAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker**ppmoniker); + HINSTANCE WINAPI SHGetShellStyleHInstance(void); + STDAPI_(void) PerUserInit(void); + WINSHELLAPI WINBOOL WINAPI SHRunControlPanel(LPCWSTR lpcszCmdLine,HWND hwndMsgParent); + WINSHELLAPI int WINAPI PickIconDlg(HWND hwnd,LPWSTR pszIconPath,UINT cbIconPath,int *piIconIndex); + + typedef struct tagAAMENUFILENAME { + SHORT cbTotal; + BYTE rgbReserved[12]; + WCHAR szFileName[1]; + } AASHELLMENUFILENAME,*LPAASHELLMENUFILENAME; + + typedef struct tagAASHELLMENUITEM { + void *lpReserved1; + int iReserved; + UINT uiReserved; + LPAASHELLMENUFILENAME lpName; + LPWSTR psz; + } AASHELLMENUITEM,*LPAASHELLMENUITEM; + + STDAPI SHGetAttributesFromDataObject(IDataObject *pdo,DWORD dwAttributeMask,DWORD *pdwAttributes,UINT *pcItems); + +#include <poppack.h> + +#ifdef __cplusplus +} +#endif + +#include <poppack.h> + +SHDOCAPI_(WINBOOL) ImportPrivacySettings(LPCWSTR szFilename,WINBOOL *pfParsePrivacyPreferences,WINBOOL *pfParsePerSiteRules); +#ifndef IEnumPrivacyRecords +typedef struct IEnumPrivacyRecords IEnumPrivacyRecords; +#endif +SHDOCAPI DoPrivacyDlg(HWND hwndParent,LPOLESTR pszUrl,IEnumPrivacyRecords *pPrivacyEnum,WINBOOL fReportAllSites); +#endif
