home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / shlobj.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  26.2 KB  |  820 lines

  1. #ifndef _SHLOBJ_H
  2. #define _SHLOBJ_H
  3. #if __GNUC__ >=3
  4. #pragma GCC system_header
  5. #endif
  6.  
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10.  
  11. #include <ole2.h>
  12. #include <shlguid.h>
  13. #include <shellapi.h>
  14. #pragma pack(push,1)
  15. #include <commctrl.h>
  16.  
  17. #define BIF_RETURNONLYFSDIRS 1
  18. #define BIF_DONTGOBELOWDOMAIN 2
  19. #define BIF_STATUSTEXT 4
  20. #define BIF_RETURNFSANCESTORS 8
  21. #define BIF_EDITBOX 16
  22. #define BIF_VALIDATE 32
  23. #define BIF_NEWDIALOGSTYLE 64
  24. #define BIF_BROWSEINCLUDEURLS 128
  25. #define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE )
  26. #define BIF_BROWSEFORCOMPUTER 0x1000
  27. #define BIF_BROWSEFORPRINTER 0x2000
  28. #define BIF_BROWSEINCLUDEFILES 0x4000
  29. #define BIF_SHAREABLE 0x8000
  30. #define BFFM_INITIALIZED 1
  31. #define BFFM_SELCHANGED 2
  32. #define BFFM_VALIDATEFAILEDA 3
  33. #define BFFM_VALIDATEFAILEDW 4
  34. #define BFFM_SETSTATUSTEXTA (WM_USER + 100)
  35. #define BFFM_SETSTATUSTEXTW (WM_USER + 104)
  36. #define BFFM_ENABLEOK (WM_USER + 101)
  37. #define BFFM_SETSELECTIONA (WM_USER + 102)
  38. #define BFFM_SETSELECTIONW (WM_USER + 103)
  39. #ifdef UNICODE
  40. #define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTW
  41. #define BFFM_SETSELECTION   BFFM_SETSELECTIONW
  42. #define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW
  43. #else
  44. #define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTA
  45. #define BFFM_SETSELECTION   BFFM_SETSELECTIONA
  46. #define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA
  47. #endif
  48. #define DVASPECT_SHORTNAME 2
  49. #define SHARD_PIDL    1
  50. #define SHARD_PATH    2
  51. #define SHCNE_RENAMEITEM    1
  52. #define SHCNE_CREATE    2
  53. #define SHCNE_DELETE    4
  54. #define SHCNE_MKDIR    8
  55. #define SHCNE_RMDIR    16
  56. #define SHCNE_MEDIAINSERTED    32
  57. #define SHCNE_MEDIAREMOVED    64
  58. #define SHCNE_DRIVEREMOVED    128
  59. #define SHCNE_DRIVEADD    256
  60. #define SHCNE_NETSHARE    512
  61. #define SHCNE_NETUNSHARE    1024
  62. #define SHCNE_ATTRIBUTES    2048
  63. #define SHCNE_UPDATEDIR    4096
  64. #define SHCNE_UPDATEITEM    8192
  65. #define SHCNE_SERVERDISCONNECT    16384
  66. #define SHCNE_UPDATEIMAGE    32768
  67. #define SHCNE_DRIVEADDGUI    65536
  68. #define SHCNE_RENAMEFOLDER    0x20000
  69. #define SHCNE_FREESPACE    0x40000
  70. #define SHCNE_ASSOCCHANGED    0x8000000
  71. #define SHCNE_DISKEVENTS    0x2381F
  72. #define SHCNE_GLOBALEVENTS    0xC0581E0
  73. #define SHCNE_ALLEVENTS    0x7FFFFFFF
  74. #define SHCNE_INTERRUPT    0x80000000
  75. #define SHCNF_IDLIST    0
  76. #define SHCNF_PATH    1
  77. #define SHCNF_PRINTER    2
  78. #define SHCNF_DWORD    3
  79. #define SHCNF_TYPE    0xFF
  80. #define SHCNF_FLUSH    0x1000
  81. #define SHCNF_FLUSHNOWAIT    0x2000
  82. #define SFGAO_CANCOPY    DROPEFFECT_COPY
  83. #define SFGAO_CANMOVE    DROPEFFECT_MOVE
  84. #define SFGAO_CANLINK    DROPEFFECT_LINK
  85. #define SFGAO_CANRENAME    0x00000010L
  86. #define SFGAO_CANDELETE    0x00000020L
  87. #define SFGAO_HASPROPSHEET    0x00000040L
  88. #define SFGAO_DROPTARGET    0x00000100L
  89. #define SFGAO_CAPABILITYMASK    0x00000177L
  90. #define SFGAO_LINK    0x00010000L
  91. #define SFGAO_SHARE    0x00020000L
  92. #define SFGAO_READONLY    0x00040000L
  93. #define SFGAO_GHOSTED    0x00080000L
  94. #define SFGAO_DISPLAYATTRMASK    0x000F0000L
  95. #define SFGAO_FILESYSANCESTOR    0x10000000L
  96. #define SFGAO_FOLDER    0x20000000L
  97. #define SFGAO_FILESYSTEM    0x40000000L
  98. #define SFGAO_HASSUBFOLDER    0x80000000L
  99. #define SFGAO_CONTENTSMASK    0x80000000L
  100. #define SFGAO_VALIDATE    0x01000000L
  101. #define SFGAO_REMOVABLE    0x02000000L
  102. #define STRRET_WSTR    0
  103. #define STRRET_OFFSET    1
  104. #define STRRET_CSTR    2
  105. #define SHGDFIL_FINDDATA    1
  106. #define SHGDFIL_NETRESOURCE    2
  107. #define SHGDFIL_DESCRIPTIONID    3
  108. #define SHDID_ROOT_REGITEM    1
  109. #define SHDID_FS_FILE    2
  110. #define SHDID_FS_DIRECTORY    3
  111. #define SHDID_FS_OTHER    4
  112. #define SHDID_COMPUTER_DRIVE35    5
  113. #define SHDID_COMPUTER_DRIVE525    6
  114. #define SHDID_COMPUTER_REMOVABLE    7
  115. #define SHDID_COMPUTER_FIXED    8
  116. #define SHDID_COMPUTER_NETDRIVE    9
  117. #define SHDID_COMPUTER_CDROM    10
  118. #define SHDID_COMPUTER_RAMDISK    11
  119. #define SHDID_COMPUTER_OTHER    12
  120. #define SHDID_NET_DOMAIN    13
  121. #define SHDID_NET_SERVER    14
  122. #define SHDID_NET_SHARE    15
  123. #define SHDID_NET_RESTOFNET    16
  124. #define SHDID_NET_OTHER    17
  125. #ifndef REGSTR_PATH_EXPLORER
  126. #define REGSTR_PATH_EXPLORER    TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
  127. #endif
  128. #define REGSTR_PATH_SPECIAL_FOLDERS    REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
  129. #define CSIDL_DESKTOP    0
  130. #define CSIDL_INTERNET  1
  131. #define CSIDL_PROGRAMS    2
  132. #define CSIDL_CONTROLS    3
  133. #define CSIDL_PRINTERS    4
  134. #define CSIDL_PERSONAL    5
  135. #define CSIDL_FAVORITES    6
  136. #define CSIDL_STARTUP    7
  137. #define CSIDL_RECENT    8
  138. #define CSIDL_SENDTO    9
  139. #define CSIDL_BITBUCKET    10
  140. #define CSIDL_STARTMENU    11
  141. #define CSIDL_DESKTOPDIRECTORY    16
  142. #define CSIDL_DRIVES    17
  143. #define CSIDL_NETWORK    18
  144. #define CSIDL_NETHOOD    19
  145. #define CSIDL_FONTS    20
  146. #define CSIDL_TEMPLATES    21
  147. #define CSIDL_COMMON_STARTMENU    22
  148. #define CSIDL_COMMON_PROGRAMS    23
  149. #define CSIDL_COMMON_STARTUP    24
  150. #define CSIDL_COMMON_DESKTOPDIRECTORY    25
  151. #define CSIDL_APPDATA   26
  152. #define CSIDL_PRINTHOOD 27
  153. #define CSIDL_LOCAL_APPDATA 28
  154. #define CSIDL_ALTSTARTUP    29
  155. #define CSIDL_COMMON_ALTSTARTUP    30
  156. #define CSIDL_COMMON_FAVORITES    31
  157. #define CSIDL_INTERNET_CACHE   32
  158. #define CSIDL_COOKIES    33
  159. #define CSIDL_HISTORY    34
  160. #define CSIDL_COMMON_APPDATA    35
  161. #define CSIDL_WINDOWS    36
  162. #define CSIDL_SYSTEM    37
  163. #define CSIDL_PROGRAM_FILES    38
  164. #define CSIDL_MYPICTURES    39
  165. #define CSIDL_PROFILE    40
  166. #define CSIDL_SYSTEMX86    41
  167. #define CSIDL_PROGRAM_FILESX86    42
  168. #define CSIDL_PROGRAM_FILES_COMMON    43
  169. #define CSIDL_PROGRAM_FILES_COMMONX86    44
  170. #define CSIDL_COMMON_TEMPLATES    45
  171. #define CSIDL_COMMON_DOCUMENTS    46
  172. #define CSIDL_COMMON_ADMINTOOLS    47
  173. #define CSIDL_ADMINTOOLS    48
  174. #define CSIDL_CONNECTIONS    49
  175. #define CSIDL_COMMON_MUSIC    53
  176. #define CSIDL_COMMON_PICTURES    54
  177. #define CSIDL_COMMON_VIDEO    55
  178. #define CSIDL_RESOURCES    56
  179. #define CSIDL_RESOURCES_LOCALIZED    57
  180. #define CSIDL_COMMON_OEM_LINKS    58
  181. #define CSIDL_CDBURN_AREA    59
  182. #define CSIDL_COMPUTERSNEARME    61
  183. #define CFSTR_SHELLIDLIST    TEXT("Shell IDList Array")
  184. #define CFSTR_SHELLIDLISTOFFSET    TEXT("Shell Object Offsets")
  185. #define CFSTR_NETRESOURCES    TEXT("Net Resource")
  186. #define CFSTR_FILEDESCRIPTOR    TEXT("FileGroupDescriptor")
  187. #define CFSTR_FILECONTENTS    TEXT("FileContents")
  188. #define CFSTR_FILENAME    TEXT("FileName")
  189. #define CFSTR_PRINTERGROUP    TEXT("PrinterFriendlyName")
  190. #define CFSTR_FILENAMEMAP    TEXT("FileNameMap")
  191. #define CFSTR_INDRAGLOOP    TEXT("InShellDragLoop")
  192. #define CFSTR_PASTESUCCEEDED    TEXT("Paste Succeeded")
  193. #define CFSTR_PERFORMEDDROPEFFECT    TEXT("Performed DropEffect")
  194. #define CFSTR_PREFERREDDROPEFFECT    TEXT("Preferred DropEffect")
  195. #define CFSTR_SHELLURL    TEXT("UniformResourceLocator")
  196. #define CMF_NORMAL    0
  197. #define CMF_DEFAULTONLY    1
  198. #define CMF_VERBSONLY    2
  199. #define CMF_EXPLORE    4
  200. #define CMF_RESERVED    0xffff0000
  201. #define GCS_VERBA        0
  202. #define GCS_HELPTEXTA    1
  203. #define GCS_VALIDATEA    2
  204. #define GCS_VERBW        4
  205. #define GCS_HELPTEXTW    5
  206. #define GCS_VALIDATEW    6
  207. #define GCS_UNICODE      4
  208. #ifdef UNICODE
  209. #define GCS_VERB        GCS_VERBW
  210. #define GCS_HELPTEXT    GCS_HELPTEXTW
  211. #define GCS_VALIDATE    GCS_VALIDATEW
  212. #else
  213. #define GCS_VERB        GCS_VERBA
  214. #define GCS_HELPTEXT    GCS_HELPTEXTA
  215. #define GCS_VALIDATE    GCS_VALIDATEA
  216. #endif
  217. #define CMDSTR_NEWFOLDER    TEXT("NewFolder")
  218. #define CMDSTR_VIEWLIST        TEXT("ViewList")
  219. #define CMDSTR_VIEWDETAILS    TEXT("ViewDetails")
  220. #define CMIC_MASK_HOTKEY    SEE_MASK_HOTKEY
  221. #define CMIC_MASK_ICON    SEE_MASK_ICON
  222. #define CMIC_MASK_FLAG_NO_UI    SEE_MASK_FLAG_NO_UI
  223. #define CMIC_MASK_MODAL    0x80000000
  224. #define CMIC_VALID_SEE_FLAGS    SEE_VALID_CMIC_FLAGS
  225. #define GIL_OPENICON    1
  226. #define GIL_FORSHELL    2
  227. #define GIL_SIMULATEDOC    1
  228. #define GIL_PERINSTANCE    2
  229. #define GIL_PERCLASS    4
  230. #define GIL_NOTFILENAME    8
  231. #define GIL_DONTCACHE    16
  232. #define FVSIF_RECT    1
  233. #define FVSIF_PINNED    2
  234. #define FVSIF_NEWFAILED 0x8000000
  235. #define FVSIF_NEWFILE    0x80000000
  236. #define FVSIF_CANVIEWIT 0x40000000
  237. #define CDBOSC_SETFOCUS    0
  238. #define CDBOSC_KILLFOCUS    1
  239. #define CDBOSC_SELCHANGE    2
  240. #define CDBOSC_RENAME    3
  241. #define FCIDM_SHVIEWFIRST    0
  242. #define FCIDM_SHVIEWLAST    0x7fff
  243. #define FCIDM_BROWSERFIRST    0xa000
  244. #define FCIDM_BROWSERLAST    0xbf00
  245. #define FCIDM_GLOBALFIRST    0x8000
  246. #define FCIDM_GLOBALLAST    0x9fff
  247. #define FCIDM_MENU_FILE    FCIDM_GLOBALFIRST
  248. #define FCIDM_MENU_EDIT    (FCIDM_GLOBALFIRST+0x0040)
  249. #define FCIDM_MENU_VIEW    (FCIDM_GLOBALFIRST+0x0080)
  250. #define FCIDM_MENU_VIEW_SEP_OPTIONS    (FCIDM_GLOBALFIRST+0x0081)
  251. #define FCIDM_MENU_TOOLS    (FCIDM_GLOBALFIRST+0x00c0)
  252. #define FCIDM_MENU_TOOLS_SEP_GOTO    (FCIDM_GLOBALFIRST+0x00c1)
  253. #define FCIDM_MENU_HELP    (FCIDM_GLOBALFIRST+0x0100)
  254. #define FCIDM_MENU_FIND    (FCIDM_GLOBALFIRST+0x0140)
  255. #define FCIDM_MENU_EXPLORE    (FCIDM_GLOBALFIRST+0x0150)
  256. #define FCIDM_MENU_FAVORITES    (FCIDM_GLOBALFIRST+0x0170)
  257. #define FCIDM_TOOLBAR    FCIDM_BROWSERFIRST
  258. #define FCIDM_STATUS    (FCIDM_BROWSERFIRST+1)
  259. #define SBSP_DEFBROWSER    0
  260. #define SBSP_SAMEBROWSER    1
  261. #define SBSP_NEWBROWSER    2
  262. #define SBSP_DEFMODE    0
  263. #define SBSP_OPENMODE    16
  264. #define SBSP_EXPLOREMODE    32
  265. #define SBSP_ABSOLUTE    0
  266. #define SBSP_RELATIVE    0x1000
  267. #define SBSP_PARENT    0x2000
  268. #define SBSP_INITIATEDBYHLINKFRAME    0x80000000
  269. #define SBSP_REDIRECT    0x40000000
  270. #define FCW_STATUS    1
  271. #define FCW_TOOLBAR    2
  272. #define FCW_TREE    3
  273. #define FCT_MERGE    1
  274. #define FCT_CONFIGABLE    2
  275. #define FCT_ADDTOEND    4
  276. #define SVSI_DESELECT    0
  277. #define SVSI_SELECT    1
  278. #define SVSI_EDIT    3
  279. #define SVSI_DESELECTOTHERS    4
  280. #define SVSI_ENSUREVISIBLE    8
  281. #define SVSI_FOCUSED    16
  282. #define SVGIO_BACKGROUND    0
  283. #define SVGIO_SELECTION    1
  284. #define SVGIO_ALLVIEW    2
  285. #define SV2GV_CURRENTVIEW ((UINT)-1)
  286. #define SV2GV_DEFAULTVIEW ((UINT)-2)
  287.  
  288. typedef struct _IDA {
  289.     UINT cidl;
  290.     UINT aoffset[1];
  291. } CIDA,*LPIDA;
  292. typedef struct _SHITEMID {
  293.     USHORT    cb;
  294.     BYTE    abID[1];
  295. } SHITEMID, * LPSHITEMID;
  296. typedef const SHITEMID *LPCSHITEMID;
  297. typedef struct _ITEMIDLIST {
  298.     SHITEMID mkid;
  299. } ITEMIDLIST,*LPITEMIDLIST;
  300. typedef const ITEMIDLIST *LPCITEMIDLIST;
  301. typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
  302. typedef struct _browseinfoA {
  303.     HWND    hwndOwner;
  304.     LPCITEMIDLIST    pidlRoot;
  305.     LPSTR    pszDisplayName;
  306.     LPCSTR    lpszTitle;
  307.     UINT    ulFlags;
  308.     BFFCALLBACK    lpfn;
  309.     LPARAM    lParam;
  310.     int    iImage;
  311. } BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
  312. typedef struct _browseinfoW {
  313.     HWND    hwndOwner;
  314.     LPCITEMIDLIST    pidlRoot;
  315.     LPWSTR    pszDisplayName;
  316.     LPCWSTR    lpszTitle;
  317.     UINT    ulFlags;
  318.     BFFCALLBACK    lpfn;
  319.     LPARAM    lParam;
  320.     int    iImage;
  321. } BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
  322. typedef struct _CMInvokeCommandInfo {
  323.     DWORD cbSize;
  324.     DWORD fMask;
  325.     HWND hwnd;
  326.     LPCSTR lpVerb;
  327.     LPCSTR lpParameters;
  328.     LPCSTR lpDirectory;
  329.     int nShow;
  330.     DWORD dwHotKey;
  331.     HANDLE hIcon;
  332. } CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
  333. typedef struct _DROPFILES {
  334.     DWORD pFiles;
  335.     POINT pt;
  336.     BOOL fNC;
  337.     BOOL fWide;
  338. } DROPFILES,*LPDROPFILES;
  339. typedef enum tagSHGDN {
  340.     SHGDN_NORMAL=0,
  341.     SHGDN_INFOLDER,
  342.     SHGDN_FORPARSING=0x8000
  343. } SHGNO;
  344. typedef enum tagSHCONTF {
  345.     SHCONTF_FOLDERS=32,
  346.     SHCONTF_NONFOLDERS=64,
  347.     SHCONTF_INCLUDEHIDDEN=128
  348. } SHCONTF;
  349. typedef struct _STRRET {
  350.     UINT uType;
  351.     _ANONYMOUS_UNION union {
  352.         LPWSTR pOleStr;
  353.         UINT uOffset;
  354.         char cStr[MAX_PATH];
  355.     } DUMMYUNIONNAME;
  356. } STRRET,*LPSTRRET;
  357. typedef enum {
  358.     FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16,
  359.     FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000
  360. } FD_FLAGS;
  361. typedef struct _FILEDESCRIPTOR {
  362.     DWORD dwFlags;
  363.     CLSID clsid;
  364.     SIZEL sizel;
  365.     POINTL pointl;
  366.     DWORD dwFileAttributes;
  367.     FILETIME ftCreationTime;
  368.     FILETIME ftLastAccessTime;
  369.     FILETIME ftLastWriteTime;
  370.     DWORD nFileSizeHigh;
  371.     DWORD nFileSizeLow;
  372.     CHAR cFileName[MAX_PATH];
  373. } FILEDESCRIPTOR,*LPFILEDESCRIPTOR;
  374. typedef struct _FILEGROUPDESCRIPTOR {
  375.     UINT cItems;
  376.     FILEDESCRIPTOR fgd[1];
  377. } FILEGROUPDESCRIPTOR,*LPFILEGROUPDESCRIPTOR;
  378. typedef enum {
  379.     SLR_NO_UI=1,
  380.     SLR_ANY_MATCH=2,
  381.     SLR_UPDATE=4,
  382.     SLR_NOUPDATE=8,
  383.     SLR_NOSEARCH=16,
  384.     SLR_NOTRACK=32,
  385.     SLR_NOLINKINFO=64,
  386.     SLR_INVOKE_MSI=128
  387. } SLR_FLAGS;
  388. typedef enum {
  389.     SLGP_SHORTPATH=1,
  390.     SLGP_UNCPRIORITY
  391. } SLGP_FLAGS;
  392. typedef PBYTE LPVIEWSETTINGS;
  393. typedef enum {
  394.     FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8,
  395.     FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128,
  396.     FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800,
  397.     FWF_SINGLECLICKACTIVATE=0x8000
  398. } FOLDERFLAGS;
  399. typedef enum {
  400.     FVM_ICON=1,
  401.     FVM_SMALLICON,
  402.     FVM_LIST,
  403.     FVM_DETAILS
  404. } FOLDERVIEWMODE;
  405. typedef struct {
  406.     UINT ViewMode;
  407.     UINT fFlags;
  408. } FOLDERSETTINGS,*LPFOLDERSETTINGS;
  409. typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
  410. typedef struct {
  411.     DWORD cbSize;
  412.     HWND hwndOwner;
  413.     int iShow;
  414.     DWORD dwFlags;
  415.     RECT rect;
  416.     LPUNKNOWN punkRel;
  417.     OLECHAR strNewFile[MAX_PATH];
  418. } FVSHOWINFO,*LPFVSHOWINFO;
  419. typedef struct _NRESARRAY {
  420.     UINT cItems;
  421.     NETRESOURCE nr[1];
  422. } NRESARRAY, *LPNRESARRAY;
  423. enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY };
  424. enum {
  425.     SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION,
  426.     SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS
  427. };
  428. typedef enum {
  429.     SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS,
  430.     SVUIA_INPLACEACTIVATE
  431. } SVUIA_STATUS;
  432.  
  433. DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
  434. typedef IEnumIDList *LPENUMIDLIST;
  435.  
  436. #undef INTERFACE
  437. #define INTERFACE IContextMenu
  438. DECLARE_INTERFACE_(IContextMenu,IUnknown)
  439. {
  440.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  441.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  442.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  443.     STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
  444.     STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
  445.     STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
  446. };
  447. typedef IContextMenu *LPCONTEXTMENU;
  448.  
  449. #undef INTERFACE
  450. #define INTERFACE IContextMenu2
  451. DECLARE_INTERFACE_(IContextMenu2,IUnknown)
  452. {
  453.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  454.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  455.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  456.     STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
  457.     STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
  458.     STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
  459.     STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
  460. };
  461. typedef IContextMenu2 *LPCONTEXTMENU2;
  462.  
  463. #undef INTERFACE
  464. #define INTERFACE IShellExtInit
  465. DECLARE_INTERFACE_(IShellExtInit, IUnknown)
  466. {
  467.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  468.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  469.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  470.     STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE;
  471. };
  472. typedef IShellExtInit *LPSHELLEXTINIT;
  473.  
  474. #undef INTERFACE
  475. #define INTERFACE IShellPropSheetExt
  476. DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
  477. {
  478.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  479.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  480.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  481.     STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE;
  482.     STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
  483. };
  484. typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
  485.  
  486. #undef INTERFACE
  487. #define INTERFACE IExtractIcon
  488. DECLARE_INTERFACE_(IExtractIcon, IUnknown)  /* exic */
  489. {
  490.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  491.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  492.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  493.     STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
  494.     STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
  495. };
  496. typedef IExtractIcon *LPEXTRACTICON;
  497.  
  498. #undef INTERFACE
  499. #define INTERFACE IShellLinkA
  500. DECLARE_INTERFACE_(IShellLinkA, IUnknown)
  501. {
  502.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  503.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  504.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  505.     STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE;
  506.     STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
  507.     STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
  508.     STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE;
  509.     STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE;
  510.     STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE;
  511.     STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE;
  512.     STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE;
  513.     STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE;
  514.     STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
  515.     STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
  516.     STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
  517.     STDMETHOD(SetShowCmd)(THIS_ int) PURE;
  518.     STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE;
  519.     STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE;
  520.     STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE;
  521.     STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
  522.     STDMETHOD(SetPath)(THIS_ LPCSTR) PURE;
  523. };
  524. #undef INTERFACE
  525. #define INTERFACE IShellLinkW
  526. DECLARE_INTERFACE_(IShellLinkW, IUnknown)
  527. {
  528.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  529.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  530.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  531.     STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE;
  532.     STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
  533.     STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
  534.     STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE;
  535.     STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE;
  536.     STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE;
  537.     STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE;
  538.     STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE;
  539.     STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE;
  540.     STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
  541.     STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
  542.     STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
  543.     STDMETHOD(SetShowCmd)(THIS_ int) PURE;
  544.     STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE;
  545.     STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE;
  546.     STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE;
  547.     STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
  548.     STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE;
  549. };
  550.  
  551. #undef INTERFACE
  552. #define INTERFACE IShellFolder
  553. DECLARE_INTERFACE_(IShellFolder, IUnknown)
  554. {
  555.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  556.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  557.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  558.     STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
  559.     STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
  560.     STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
  561.     STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
  562.     STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
  563.     STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
  564.     STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
  565.     STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
  566.     STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
  567.     STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
  568. };
  569. typedef IShellFolder *LPSHELLFOLDER;
  570.  
  571. #undef INTERFACE
  572. #define INTERFACE ICopyHook
  573. DECLARE_INTERFACE_(ICopyHook, IUnknown)
  574. {
  575.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  576.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  577.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  578.     STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE;
  579. };
  580. typedef ICopyHook *LPCOPYHOOK;
  581.  
  582. #undef INTERFACE
  583. #define INTERFACE IFileViewerSite
  584. DECLARE_INTERFACE(IFileViewerSite)
  585. {
  586.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  587.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  588.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  589.     STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE;
  590.     STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE;
  591. };
  592. typedef IFileViewerSite *LPFILEVIEWERSITE;
  593.  
  594. #undef INTERFACE
  595. #define INTERFACE IFileViewer
  596. DECLARE_INTERFACE(IFileViewer)
  597. {
  598.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  599.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  600.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  601.     STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE;
  602.     STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE;
  603.     STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE;
  604. };
  605. typedef IFileViewer *LPFILEVIEWER;
  606.  
  607. #undef INTERFACE
  608. #define INTERFACE ICommDlgBrowser
  609. DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
  610. {
  611.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  612.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  613.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  614.     STDMETHOD(OnDefaultCommand)(THIS) PURE;
  615.     STDMETHOD(OnStateChange)(THIS_ ULONG) PURE;
  616.     STDMETHOD(IncludeObject)(THIS_ LPCITEMIDLIST) PURE;
  617. };
  618. typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
  619.  
  620. #undef INTERFACE
  621. #define INTERFACE IPersistFolder
  622. DECLARE_INTERFACE_(IPersistFolder,IPersist)
  623. {
  624.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  625.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  626.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  627.     STDMETHOD(GetClassID)(THIS_ CLSID) PURE;
  628.     STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
  629. };
  630. typedef IPersistFolder *LPPERSISTFOLDER;
  631.  
  632. typedef interface IShellBrowser *LPSHELLBROWSER;
  633. typedef interface IShellView *LPSHELLVIEW;
  634.  
  635. #undef INTERFACE
  636. #define INTERFACE IShellBrowser
  637. DECLARE_INTERFACE_(IShellBrowser,IOleWindow)
  638. {
  639.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  640.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  641.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  642.     STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
  643.     STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
  644.     STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
  645.     STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE;
  646.     STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE;
  647.     STDMETHOD(SetStatusTextSB) (THIS_ LPCOLESTR) PURE;
  648.     STDMETHOD(EnableModelessSB) (THIS_ BOOL    ) PURE;
  649.     STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE;
  650.     STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE;
  651.     STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE;
  652.     STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE;
  653.     STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE;
  654.     STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE;
  655.     STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE;
  656.     STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE;
  657. };
  658.  
  659. #undef INTERFACE
  660. #define INTERFACE IShellView
  661. DECLARE_INTERFACE_(IShellView,IOleWindow)
  662. {
  663.  
  664.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  665.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  666.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  667.     STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
  668.     STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
  669.     STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
  670. #ifdef _FIX_ENABLEMODELESS_CONFLICT
  671.     STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
  672. #else
  673.     STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
  674. #endif
  675.     STDMETHOD(UIActivate)(THIS_ UINT) PURE;
  676.     STDMETHOD(Refresh) (THIS) PURE;
  677.     STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
  678.     STDMETHOD(DestroyViewWindow)(THIS) PURE;
  679.     STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
  680.     STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
  681.     STDMETHOD(SaveViewState)(THIS) PURE;
  682.     STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
  683.     STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
  684. };
  685. typedef GUID SHELLVIEWID;
  686. typedef struct _SV2CVW2_PARAMS {
  687.     DWORD cbSize;
  688.     IShellView *psvPrev;
  689.     FOLDERSETTINGS const *pfs;
  690.     IShellBrowser *psbOwner;
  691.     RECT *prcView;
  692.     SHELLVIEWID const *pvid;
  693.     HWND hwndView;
  694. } SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS;
  695. #undef INTERFACE
  696. #define INTERFACE IShellView2
  697. DECLARE_INTERFACE_(IShellView2,IShellView)
  698. {
  699.  
  700.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  701.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  702.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  703.     STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
  704.     STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
  705.     STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
  706. #ifdef _FIX_ENABLEMODELESS_CONFLICT
  707.     STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
  708. #else
  709.     STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
  710. #endif
  711.     STDMETHOD(UIActivate)(THIS_ UINT) PURE;
  712.     STDMETHOD(Refresh) (THIS) PURE;
  713.     STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
  714.     STDMETHOD(DestroyViewWindow)(THIS) PURE;
  715.     STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
  716.     STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
  717.     STDMETHOD(SaveViewState)(THIS) PURE;
  718.     STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
  719.     STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
  720.     STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
  721.     STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
  722. };
  723.  
  724. #undef INTERFACE
  725. #define INTERFACE IShellExecuteHookA
  726. DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)
  727. {
  728.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  729.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  730.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  731.     STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE;
  732. };
  733. #undef INTERFACE
  734. #define INTERFACE IShellExecuteHookW
  735. DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)
  736. {
  737.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  738.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  739.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  740.     STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE;
  741. };
  742.  
  743. #undef INTERFACE
  744. #define INTERFACE IShellIcon
  745. DECLARE_INTERFACE_(IShellIcon,IUnknown)
  746. {
  747.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  748.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  749.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  750.     STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE;
  751. };
  752. typedef IShellIcon *LPSHELLICON;
  753.  
  754. void WINAPI SHAddToRecentDocs(UINT,PCVOID);
  755. LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA);
  756. LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW);
  757. void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
  758. HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
  759. HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
  760. HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*);
  761. HRESULT WINAPI SHGetInstanceExplorer(LPUNKNOWN);
  762. HRESULT WINAPI SHGetMalloc(LPMALLOC*);
  763. BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
  764. BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
  765. HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
  766. HRESULT WINAPI SHLoadInProc(REFCLSID);
  767. #if (_WIN32_IE >= 0x0400)
  768. BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL);
  769. BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL);
  770. #endif 
  771. /* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */
  772. BOOL WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR);
  773. BOOL WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR);
  774. #if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */
  775. HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*);
  776. #endif
  777. #if (_WIN32_WINNT >= 0x0501) /* XP */
  778. HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
  779. HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
  780. #endif
  781.  
  782. #ifdef UNICODE
  783. typedef IShellExecuteHookW IShellExecuteHook;
  784. typedef IShellLinkW IShellLink;
  785. typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
  786. #define SHBrowseForFolder SHBrowseForFolderW
  787. #define SHGetDataFromIDList SHGetDataFromIDListW
  788. #define SHGetPathFromIDList SHGetPathFromIDListW
  789. #if (_WIN32_IE >= 0x0400)
  790. #define SHGetSpecialFolderPath SHGetSpecialFolderPathW
  791. #endif
  792. #define SHGetFolderPath SHGetFolderPathW 
  793. #if (_WIN32_WINNT >= 0x0501)
  794. #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW
  795. #endif
  796.  
  797. #else
  798. typedef IShellExecuteHookA IShellExecuteHook;
  799. typedef IShellLinkA IShellLink;
  800. typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
  801. #define SHBrowseForFolder SHBrowseForFolderA
  802. #define SHGetDataFromIDList SHGetDataFromIDListA
  803. #define SHGetPathFromIDList SHGetPathFromIDListA
  804. #if (_WIN32_IE >= 0x0400)
  805. #define SHGetSpecialFolderPath SHGetSpecialFolderPathA
  806. #endif
  807. #define SHGetFolderPath SHGetFolderPathA
  808. #if (_WIN32_WINNT >= 0x0501)
  809. #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA
  810. #endif
  811. #endif /* UNICODE */
  812.  
  813. #pragma pack(pop)
  814. #ifdef __cplusplus
  815. }
  816. #endif
  817.  
  818.  
  819. #endif /* _SHLOBJ_H */
  820.