reactos/sdk/include/psdk/shellapi.h

837 lines
20 KiB
C

#ifndef _SHELLAPI_H
#define _SHELLAPI_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable:4201)
#endif
#if !defined(_WIN64)
#include <pshpack1.h>
#endif
#define WINSHELLAPI DECLSPEC_IMPORT
#define ABE_LEFT 0
#define ABE_TOP 1
#define ABE_RIGHT 2
#define ABE_BOTTOM 3
#define ABS_AUTOHIDE 1
#define ABS_ALWAYSONTOP 2
#define SEE_MASK_DEFAULT 0x00000000
#define SEE_MASK_CLASSNAME 0x00000001
#define SEE_MASK_CLASSKEY 0x00000003
#define SEE_MASK_IDLIST 0x00000004
#define SEE_MASK_INVOKEIDLIST 0x0000000C
#define SEE_MASK_ICON 0x00000010
#define SEE_MASK_HOTKEY 0x00000020
#define SEE_MASK_NOCLOSEPROCESS 0x00000040
#define SEE_MASK_CONNECTNETDRV 0x00000080
#define SEE_MASK_NOASYNC 0x00000100
#define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
#define SEE_MASK_DOENVSUBST 0x00000200
#define SEE_MASK_FLAG_NO_UI 0x00000400
#define SEE_MASK_UNICODE 0x00004000
#define SEE_MASK_NO_CONSOLE 0x00008000
/*
* NOTE: The following 5 flags are undocumented and are not present in the
* official Windows SDK. However they are used in shobjidl.idl to define some
* CMIC_MASK_* flags, these ones being mentioned in the MSDN documentation of
* the CMINVOKECOMMANDINFOEX structure.
* I affect them this range of values which seems to be strangely empty. Of
* course their values may differ from the real ones, however I have no way
* of discovering them. If somebody else can verify them, it would be great.
*/
#define SEE_MASK_UNKNOWN_0x1000 0x00001000 /* FIXME: Name */
#define SEE_MASK_HASLINKNAME 0x00010000
#define SEE_MASK_FLAG_SEPVDM 0x00020000
#define SEE_MASK_USE_RESERVED 0x00040000
#define SEE_MASK_HASTITLE 0x00080000
/* END NOTE */
#define SEE_MASK_ASYNCOK 0x00100000
#define SEE_MASK_HMONITOR 0x00200000
#define SEE_MASK_NOZONECHECKS 0x00800000
#define SEE_MASK_NOQUERYCLASSSTORE 0x01000000
#define SEE_MASK_WAITFORINPUTIDLE 0x02000000
#define SEE_MASK_FLAG_LOG_USAGE 0x04000000
#define SEE_MASK_FLAG_HINST_IS_SITE 0x08000000
#define ABM_NEW 0
#define ABM_REMOVE 1
#define ABM_QUERYPOS 2
#define ABM_SETPOS 3
#define ABM_GETSTATE 4
#define ABM_GETTASKBARPOS 5
#define ABM_ACTIVATE 6
#define ABM_GETAUTOHIDEBAR 7
#define ABM_SETAUTOHIDEBAR 8
#define ABM_WINDOWPOSCHANGED 9
#define ABM_SETSTATE 10
#define ABN_STATECHANGE 0
#define ABN_POSCHANGED 1
#define ABN_FULLSCREENAPP 2
#define ABN_WINDOWARRANGE 3
#if (_WIN32_IE >= 0x0500)
#define NIN_SELECT (WM_USER + 0)
#define NINF_KEY 1
#define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
#endif
#if (_WIN32_IE >= 0x0501)
#define NIN_BALLOONSHOW (WM_USER + 2)
#define NIN_BALLOONHIDE (WM_USER + 3)
#define NIN_BALLOONTIMEOUT (WM_USER + 4)
#define NIN_BALLOONUSERCLICK (WM_USER + 5)
#endif
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define NIN_POPUPOPEN (WM_USER + 6)
#define NIN_POPUPCLOSE (WM_USER + 7)
#endif
#define NIM_ADD 0
#define NIM_MODIFY 1
#define NIM_DELETE 2
#if _WIN32_IE >= 0x0500
#define NIM_SETFOCUS 3
#define NIM_SETVERSION 4
#define NOTIFYICON_VERSION 3
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define NOTIFYICON_VERSION_4 4
#endif
#endif
#define NIF_MESSAGE 1
#define NIF_ICON 2
#define NIF_TIP 4
#if _WIN32_IE >= 0x0500
#define NIF_STATE 8
#define NIF_INFO 16
#define NIS_HIDDEN 1
#define NIS_SHAREDICON 2
#define NIIF_NONE 0
#define NIIF_INFO 1
#define NIIF_WARNING 2
#define NIIF_ERROR 3
#define NIIF_USER 4
#if _WIN32_IE >= 0x0600
#define NIF_GUID 32
#define NIIF_ICON_MASK 0xf
#define NIIF_NOSOUND 0x10
#endif /* _WIN32_IE >= 0x0600 */
#endif /* _WIN32_IE >= 0x0500 */
#define SE_ERR_FNF 2
#define SE_ERR_PNF 3
#define SE_ERR_ACCESSDENIED 5
#define SE_ERR_OOM 8
#define SE_ERR_DLLNOTFOUND 32
#define SE_ERR_SHARE 26
#define SE_ERR_ASSOCINCOMPLETE 27
#define SE_ERR_DDETIMEOUT 28
#define SE_ERR_DDEFAIL 29
#define SE_ERR_DDEBUSY 30
#define SE_ERR_NOASSOC 31
#define FO_MOVE 1
#define FO_COPY 2
#define FO_DELETE 3
#define FO_RENAME 4
#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 /* don't do recursion into directories */
#define FOF_NO_CONNECTED_ELEMENTS 0x2000 /* don't do connected files */
#define FOF_WANTNUKEWARNING 0x4000 /* during delete operation, warn if delete instead
of recycling (even if FOF_NOCONFIRMATION) */
#define FOF_NORECURSEREPARSE 0x8000 /* don't do recursion into reparse points */
#define PO_DELETE 19
#define PO_RENAME 20
#define PO_PORTCHANGE 32
#define PO_REN_PORT 52
#define SHGFI_ADDOVERLAYS 32
#define SHGFI_OVERLAYINDEX 64
#define SHGFI_ICON 256
#define SHGSI_ICON SHGFI_ICON
#define SHGFI_DISPLAYNAME 512
#define SHGFI_TYPENAME 1024
#define SHGFI_ATTRIBUTES 2048
#define SHGFI_ICONLOCATION 4096
#define SHGFI_EXETYPE 8192
#define SHGFI_SYSICONINDEX 16384
#define SHGFI_LINKOVERLAY 32768
#define SHGFI_SELECTED 65536
#define SHGFI_ATTR_SPECIFIED 131072
#define SHGFI_LARGEICON 0
#define SHGFI_SMALLICON 1
#define SHGSI_SMALLICON SHGFI_SMALLICON
#define SHGFI_OPENICON 2
#define SHGFI_SHELLICONSIZE 4
#define SHGFI_PIDL 8
#define SHGFI_USEFILEATTRIBUTES 16
#if (NTDDI_VERSION >= NTDDI_WINXP)
#define SHIL_LARGE 0x0
#define SHIL_SMALL 0x1
#define SHIL_EXTRALARGE 0x2
#define SHIL_SYSSMALL 0x3
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define SHIL_JUMBO 0x4
#define SHIL_LAST SHIL_JUMBO
#else
#define SHIL_LAST SHIL_SYSSMALL
#endif
#endif
typedef struct _SHCREATEPROCESSINFOW
{
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCWSTR pszFile;
LPCWSTR pszParameters;
LPCWSTR pszCurrentDirectory;
IN HANDLE hUserToken;
IN LPSECURITY_ATTRIBUTES lpProcessAttributes;
IN LPSECURITY_ATTRIBUTES lpThreadAttributes;
IN BOOL bInheritHandles;
IN DWORD dwCreationFlags;
IN LPSTARTUPINFOW lpStartupInfo;
OUT LPPROCESS_INFORMATION lpProcessInformation;
} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
typedef WORD FILEOP_FLAGS;
typedef WORD PRINTEROP_FLAGS;
typedef struct _AppBarData {
DWORD cbSize;
HWND hWnd;
UINT uCallbackMessage;
UINT uEdge;
RECT rc;
LPARAM lParam;
} APPBARDATA,*PAPPBARDATA;
DECLARE_HANDLE(HDROP);
typedef struct _NOTIFYICONDATAA {
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
#if (NTDDI_VERSION < NTDDI_WIN2K)
CHAR szTip[64];
#endif
#if (NTDDI_VERSION >= NTDDI_WIN2K)
CHAR szTip[128];
DWORD dwState;
DWORD dwStateMask;
CHAR szInfo[256];
_ANONYMOUS_UNION union {
UINT uTimeout;
UINT uVersion;
} DUMMYUNIONNAME;
CHAR szInfoTitle[64];
DWORD dwInfoFlags;
#endif
#if (NTDDI_VERSION >= NTDDI_WINXP)
GUID guidItem;
#endif
#if (NTDDI_VERSION >= NTDDI_VISTA)
HICON hBalloonIcon;
#endif
} NOTIFYICONDATAA,*PNOTIFYICONDATAA;
typedef struct _NOTIFYICONDATAW {
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
#if (NTDDI_VERSION < NTDDI_WIN2K)
WCHAR szTip[64];
#endif
#if (NTDDI_VERSION >= NTDDI_WIN2K)
WCHAR szTip[128];
DWORD dwState;
DWORD dwStateMask;
WCHAR szInfo[256];
_ANONYMOUS_UNION union {
UINT uTimeout;
UINT uVersion;
} DUMMYUNIONNAME;
WCHAR szInfoTitle[64];
DWORD dwInfoFlags;
#endif
#if (NTDDI_VERSION >= NTDDI_WINXP)
GUID guidItem;
#endif
#if (NTDDI_VERSION >= NTDDI_VISTA)
HICON hBalloonIcon;
#endif
} NOTIFYICONDATAW,*PNOTIFYICONDATAW;
#define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
#define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
#define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
#define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
#define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAA, hBalloonIcon)
#define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAW, hBalloonIcon)
#if WINVER >= 0x400
typedef struct _DRAGINFOA {
UINT uSize;
POINT pt;
BOOL fNC;
LPSTR lpFileList;
DWORD grfKeyState;
} DRAGINFOA,*LPDRAGINFOA;
typedef struct _DRAGINFOW {
UINT uSize;
POINT pt;
BOOL fNC;
LPWSTR lpFileList;
DWORD grfKeyState;
} DRAGINFOW,*LPDRAGINFOW;
#endif
typedef struct _SHELLEXECUTEINFOA {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCSTR lpVerb;
LPCSTR lpFile;
LPCSTR lpParameters;
LPCSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
PVOID lpIDList;
LPCSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
HANDLE hIcon;
HANDLE hProcess;
} SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
typedef struct _SHELLEXECUTEINFOW {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCWSTR lpVerb;
LPCWSTR lpFile;
LPCWSTR lpParameters;
LPCWSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
PVOID lpIDList;
LPCWSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
HANDLE hIcon;
HANDLE hProcess;
} SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
typedef struct _SHFILEOPSTRUCTA {
HWND hwnd;
UINT wFunc;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
PVOID hNameMappings;
LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
typedef struct _SHFILEOPSTRUCTW {
HWND hwnd;
UINT wFunc;
LPCWSTR pFrom;
LPCWSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
PVOID hNameMappings;
LPCWSTR lpszProgressTitle;
} SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
typedef struct _SHFILEINFOA {
HICON hIcon;
int iIcon;
DWORD dwAttributes;
CHAR szDisplayName[MAX_PATH];
CHAR szTypeName[80];
} SHFILEINFOA;
typedef struct _SHFILEINFOW {
HICON hIcon;
int iIcon;
DWORD dwAttributes;
WCHAR szDisplayName[MAX_PATH];
WCHAR szTypeName[80];
} SHFILEINFOW;
typedef struct _SHQUERYRBINFO {
DWORD cbSize;
__int64 i64Size;
__int64 i64NumItems;
} SHQUERYRBINFO, *LPSHQUERYRBINFO;
typedef struct _SHNAMEMAPPINGA {
LPSTR pszOldPath;
LPSTR pszNewPath;
int cchOldPath;
int cchNewPath;
} SHNAMEMAPPINGA, *LPSHNAMEMAPPINGA;
typedef struct _SHNAMEMAPPINGW {
LPWSTR pszOldPath;
LPWSTR pszNewPath;
int cchOldPath;
int cchNewPath;
} SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW;
#define SHERB_NOCONFIRMATION 0x1
#define SHERB_NOPROGRESSUI 0x2
#define SHERB_NOSOUND 0x4
/******************************************
* Links
*/
#define SHGNLI_PIDL 0x01
#define SHGNLI_PREFIXNAME 0x02
#define SHGNLI_NOUNIQUE 0x04
#define SHGNLI_NOLNK 0x08
LPWSTR * WINAPI CommandLineToArgvW(_In_ LPCWSTR, _Out_ int*);
void WINAPI DragAcceptFiles(_In_ HWND, _In_ BOOL);
void WINAPI DragFinish(_In_ HDROP);
_Success_(return != 0)
UINT
WINAPI
DragQueryFileA(
_In_ HDROP hDrop,
_In_ UINT iFile,
_Out_writes_opt_(cch) LPSTR lpszFile,
_In_ UINT cch);
_Success_(return != 0)
UINT
WINAPI
DragQueryFileW(
_In_ HDROP hDrop,
_In_ UINT iFile,
_Out_writes_opt_(cch) LPWSTR lpszFile,
_In_ UINT cch);
BOOL WINAPI DragQueryPoint(_In_ HDROP, _Out_ LPPOINT);
HICON
WINAPI
ExtractAssociatedIconA(
_Reserved_ HINSTANCE hInst,
_Inout_updates_(128) LPSTR pszIconPath,
_Inout_ WORD *piIcon);
HICON
WINAPI
ExtractAssociatedIconW(
_Reserved_ HINSTANCE hInst,
_Inout_updates_(128) LPWSTR pszIconPath,
_Inout_ WORD *piIcon);
HICON
WINAPI
ExtractIconA(
_Reserved_ HINSTANCE hInst,
_In_ LPCSTR pszExeFileName,
UINT nIconIndex);
HICON
WINAPI
ExtractIconW(
_Reserved_ HINSTANCE hInst,
_In_ LPCWSTR pszExeFileName,
UINT nIconIndex);
UINT
WINAPI
ExtractIconExA(
_In_ LPCSTR lpszFile,
_In_ int nIconIndex,
_Out_writes_opt_(nIcons) HICON *phiconLarge,
_Out_writes_opt_(nIcons) HICON *phiconSmall,
_In_ UINT nIcons);
UINT
WINAPI
ExtractIconExW(
_In_ LPCWSTR lpszFile,
_In_ int nIconIndex,
_Out_writes_opt_(nIcons) HICON *phiconLarge,
_Out_writes_opt_(nIcons) HICON *phiconSmall,
_In_ UINT nIcons);
_Success_(return > 32)
HINSTANCE
WINAPI
FindExecutableA(
_In_ LPCSTR lpFile,
_In_opt_ LPCSTR lpDirectory,
_Out_writes_(MAX_PATH) LPSTR lpResult);
_Success_(return > 32)
HINSTANCE
WINAPI
FindExecutableW(
_In_ LPCWSTR lpFile,
_In_opt_ LPCWSTR lpDirectory,
_Out_writes_(MAX_PATH) LPWSTR lpResult);
UINT_PTR WINAPI SHAppBarMessage(_In_ DWORD, _Inout_ PAPPBARDATA);
BOOL WINAPI Shell_NotifyIconA(_In_ DWORD, _In_ PNOTIFYICONDATAA);
BOOL WINAPI Shell_NotifyIconW(_In_ DWORD, _In_ PNOTIFYICONDATAW);
int
WINAPI
ShellAboutA(
_In_opt_ HWND hWnd,
_In_ LPCSTR szApp,
_In_opt_ LPCSTR szOtherStuff,
_In_opt_ HICON hIcon);
int
WINAPI
ShellAboutW(
_In_opt_ HWND hWnd,
_In_ LPCWSTR szApp,
_In_opt_ LPCWSTR szOtherStuff,
_In_opt_ HICON hIcon);
int
WINAPIV
ShellMessageBoxA(
_In_opt_ HINSTANCE hAppInst,
_In_opt_ HWND hWnd,
_In_ LPCSTR lpcText,
_In_opt_ LPCSTR lpcTitle,
_In_ UINT fuStyle,
...);
int
WINAPIV
ShellMessageBoxW(
_In_opt_ HINSTANCE hAppInst,
_In_opt_ HWND hWnd,
_In_ LPCWSTR lpcText,
_In_opt_ LPCWSTR lpcTitle,
_In_ UINT fuStyle,
...);
HINSTANCE
WINAPI
ShellExecuteA(
_In_opt_ HWND hwnd,
_In_opt_ LPCSTR lpOperation,
_In_ LPCSTR lpFile,
_In_opt_ LPCSTR lpParameters,
_In_opt_ LPCSTR lpDirectory,
_In_ INT nShowCmd);
HINSTANCE
WINAPI
ShellExecuteW(
_In_opt_ HWND hwnd,
_In_opt_ LPCWSTR lpOperation,
_In_ LPCWSTR lpFile,
_In_opt_ LPCWSTR lpParameters,
_In_opt_ LPCWSTR lpDirectory,
_In_ INT nShowCmd);
BOOL WINAPI ShellExecuteExA(_Inout_ LPSHELLEXECUTEINFOA);
BOOL WINAPI ShellExecuteExW(_Inout_ LPSHELLEXECUTEINFOW);
int WINAPI SHFileOperationA(_Inout_ LPSHFILEOPSTRUCTA);
int WINAPI SHFileOperationW(_Inout_ LPSHFILEOPSTRUCTW);
void WINAPI SHFreeNameMappings(_In_opt_ HANDLE);
DWORD_PTR
WINAPI
SHGetFileInfoA(
_In_ LPCSTR pszPath,
DWORD dwFileAttributes,
_Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOA *psfi,
UINT cbFileInfo,
UINT uFlags);
DWORD_PTR
WINAPI
SHGetFileInfoW(
_In_ LPCWSTR pszPath,
DWORD dwFileAttributes,
_Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOW *psfi,
UINT cbFileInfo,
UINT uFlags);
_Success_(return != 0)
BOOL
WINAPI
SHGetNewLinkInfoA(
_In_ LPCSTR pszLinkTo,
_In_ LPCSTR pszDir,
_Out_writes_(MAX_PATH) LPSTR pszName,
_Out_ BOOL *pfMustCopy,
_In_ UINT uFlags);
_Success_(return != 0)
BOOL
WINAPI
SHGetNewLinkInfoW(
_In_ LPCWSTR pszLinkTo,
_In_ LPCWSTR pszDir,
_Out_writes_(MAX_PATH) LPWSTR pszName,
_Out_ BOOL *pfMustCopy,
_In_ UINT uFlags);
HRESULT
WINAPI
SHQueryRecycleBinA(
_In_opt_ LPCSTR pszRootPath,
_Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
HRESULT
WINAPI
SHQueryRecycleBinW(
_In_opt_ LPCWSTR pszRootPath,
_Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
HRESULT
WINAPI
SHEmptyRecycleBinA(
_In_opt_ HWND hwnd,
_In_opt_ LPCSTR pszRootPath,
DWORD dwFlags);
HRESULT
WINAPI
SHEmptyRecycleBinW(
_In_opt_ HWND hwnd,
_In_opt_ LPCWSTR pszRootPath,
DWORD dwFlags);
BOOL WINAPI SHCreateProcessAsUserW(_Inout_ PSHCREATEPROCESSINFOW);
DWORD
WINAPI
DoEnvironmentSubstA(
_Inout_updates_(cchSrc) LPSTR pszSrc,
UINT cchSrc);
DWORD
WINAPI
DoEnvironmentSubstW(
_Inout_updates_(cchSrc) LPWSTR pszSrc,
UINT cchSrc);
#if (_WIN32_IE >= 0x0601)
BOOL
WINAPI
SHTestTokenMembership(
_In_opt_ HANDLE hToken,
_In_ ULONG ulRID);
#endif
#ifdef UNICODE
#define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
#define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
#define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAW_V3_SIZE
typedef NOTIFYICONDATAW NOTIFYICONDATA,*PNOTIFYICONDATA;
typedef DRAGINFOW DRAGINFO,*LPDRAGINFO;
typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
typedef SHFILEINFOW SHFILEINFO;
typedef SHNAMEMAPPINGW SHNAMEMAPPING;
typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
#define DragQueryFile DragQueryFileW
#define ExtractAssociatedIcon ExtractAssociatedIconW
#define ExtractIcon ExtractIconW
#define ExtractIconEx ExtractIconExW
#define FindExecutable FindExecutableW
#define Shell_NotifyIcon Shell_NotifyIconW
#define ShellAbout ShellAboutW
#define ShellExecute ShellExecuteW
#define ShellExecuteEx ShellExecuteExW
#define ShellMessageBox ShellMessageBoxW
#define SHFileOperation SHFileOperationW
#define SHGetFileInfo SHGetFileInfoW
#define SHQueryRecycleBin SHQueryRecycleBinW
#define SHEmptyRecycleBin SHEmptyRecycleBinW
#define SHGetNewLinkInfo SHGetNewLinkInfoW
#define DoEnvironmentSubst DoEnvironmentSubstW
#else
#define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
#define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
#define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAA_V3_SIZE
typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA;
typedef DRAGINFOA DRAGINFO,*LPDRAGINFO;
typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
typedef SHFILEINFOA SHFILEINFO;
typedef SHNAMEMAPPINGA SHNAMEMAPPING;
typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
#define DragQueryFile DragQueryFileA
#define ExtractAssociatedIcon ExtractAssociatedIconA
#define ExtractIcon ExtractIconA
#define ExtractIconEx ExtractIconExA
#define FindExecutable FindExecutableA
#define Shell_NotifyIcon Shell_NotifyIconA
#define ShellAbout ShellAboutA
#define ShellExecute ShellExecuteA
#define ShellExecuteEx ShellExecuteExA
#define ShellMessageBox ShellMessageBoxA
#define SHFileOperation SHFileOperationA
#define SHGetFileInfo SHGetFileInfoA
#define SHQueryRecycleBin SHQueryRecycleBinA
#define SHEmptyRecycleBin SHEmptyRecycleBinA
#define SHGetNewLinkInfo SHGetNewLinkInfoA
#define DoEnvironmentSubst DoEnvironmentSubstA
#endif
#if (NTDDI_VERSION >= NTDDI_VISTA)
typedef struct _SHSTOCKICONINFO {
DWORD cbSize;
HICON hIcon;
int iSysImageIndex;
int iIcon;
WCHAR szPath[MAX_PATH];
} SHSTOCKICONINFO;
#define SHGSI_ICONLOCATION 0
typedef enum SHSTOCKICONID
{
SIID_INVALID=-1,
SIID_DOCNOASSOC,
SIID_DOCASSOC,
SIID_APPLICATION,
SIID_FOLDER,
SIID_FOLDEROPEN,
SIID_DRIVE525,
SIID_DRIVE35,
SIID_DRIVERREMOVE,
SIID_DRIVERFIXED,
SIID_DRIVERNET,
SIID_DRIVERNETDISABLE,
SIID_DRIVERCD,
SIID_DRIVERRAM,
SIID_WORLD,
/* Missing: 14 */
SIID_SERVER = 15,
SIID_PRINTER,
SIID_MYNETWORK,
/* Missing: 18 - 21 */
SIID_FIND = 22,
SIID_HELP,
/* Missing: 24 - 27 */
SIID_SHARE = 28,
SIID_LINK,
SIID_SLOWFILE,
SIID_RECYCLER,
SIID_RECYCLERFULL,
/* Missing: 33 - 39 */
SIID_MEDIACDAUDIO = 40,
/* Missing: 41 - 46 */
SIID_LOCK = 47,
/* Missing: 48 */
SIID_AUTOLIST = 49,
SIID_PRINTERNET,
SIID_SERVERSHARE,
SIID_PRINTERFAX,
SIID_PRINTERFAXNET,
SIID_PRINTERFILE,
SIID_STACK,
SIID_MEDIASVCD,
SIID_STUFFEDFOLDER,
SIID_DRIVEUNKNOWN,
SIID_DRIVEDVD,
SIID_MEDIADVD,
SIID_MEDIADVDRAM,
SIID_MEDIADVDRW,
SIID_MEDIADVDR,
SIID_MEDIADVDROM,
SIID_MEDIACDAUDIOPLUS,
SIID_MEDIACDRW,
SIID_MEDIACDR,
SIID_MEDIACDBURN,
SIID_MEDIABLANKCD,
SIID_MEDIACDROM,
SIID_AUDIOFILES,
SIID_IMAGEFILES,
SIID_VIDEOFILES,
SIID_MIXEDFILES,
SIID_FOLDERBACK,
SIID_FOLDERFRONT,
SIID_SHIELD,
SIID_WARNING,
SIID_INFO,
SIID_ERROR,
SIID_KEY,
SIID_SOFTWARE,
SIID_RENAME,
SIID_DELETE,
SIID_MEDIAAUDIODVD,
SIID_MEDIAMOVIEDVD,
SIID_MEDIAENHANCEDCD,
SIID_MEDIAENHANCEDDVD,
SIID_MEDIAHDDVD,
SIID_MEDIABLUERAY,
SIID_MEDIAVCD,
SIID_MEDIADVDPLUSR,
SIID_MEDIADVDPLUSRW,
SIID_DESKTOPPC,
SIID_MOBILEPC,
SIID_USERS,
SIID_MEDIASMARTMEDIA,
SIID_MEDIACOMPACTFLASH,
SIID_DEVICECELLPHONE,
SIID_DEVICECAMERA,
SIID_DEVICEVIDEOCAMERA,
SIID_DEVICEAUDIOPLAYER,
SIID_NETWORKCONNECT,
SIID_INTERNET,
SIID_ZIPFILE,
SIID_SETTINGS,
/* Missing: 107 - 131 */
SIID_DRIVEHDDVD = 132,
SIID_DRIVEBD,
SIID_MEDIAHDDVDROM,
SIID_MEDIAHDDVDR,
SIID_MEDIAHDDVDRAM,
SIID_MEDIABDROM,
SIID_MEDIABDR,
SIID_MEDIABDRE,
SIID_CLUSTEREDDRIVE,
/* Missing: 141 - 174 */
SIID_MAX_ICONS = 175
} SHSTOCKICONID;
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
#if !defined(_WIN64)
#include <poppack.h>
#endif
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#ifdef __cplusplus
}
#endif
#endif