home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 June / Chip_2002-06_cd1.bin / zkuste / cecko / install / devcpp4920.exe / include / shlobj.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-14  |  24.9 KB  |  758 lines

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