shlobj.h 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182
  1. /*
  2. * Copyright (C) the Wine project
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. */
  18. #ifndef __WINE_SHLOBJ_H
  19. #define __WINE_SHLOBJ_H
  20. #include <ole2.h>
  21. #include <commctrl.h>
  22. #include <prsht.h>
  23. #include <shlguid.h>
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif /* defined(__cplusplus) */
  27. /* Except for specific structs, this header is byte packed */
  28. #include <pshpack1.h>
  29. #include <shtypes.h>
  30. #include <shobjidl.h>
  31. LPVOID WINAPI SHAlloc(ULONG);
  32. HRESULT WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*);
  33. DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*);
  34. DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*);
  35. #define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString)
  36. HRESULT WINAPI SHCreateStdEnumFmtEtc(DWORD,const FORMATETC *,IEnumFORMATETC**);
  37. BOOL WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST);
  38. DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT);
  39. void WINAPI SHFree(LPVOID);
  40. BOOL WINAPI GetFileNameFromBrowse(HWND,LPSTR,DWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
  41. BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
  42. BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
  43. #define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
  44. INT WINAPI SHHandleUpdateImage(LPCITEMIDLIST);
  45. HRESULT WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*);
  46. HRESULT WINAPI SHLoadOLE(LPARAM);
  47. LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR);
  48. int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*);
  49. HRESULT WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD);
  50. VOID WINAPI SHUpdateImageA(LPCSTR,INT,UINT,INT);
  51. VOID WINAPI SHUpdateImageW(LPCWSTR,INT,UINT,INT);
  52. #define SHUpdateImage WINELIB_NAME_AW(SHUpdateImage)
  53. int WINAPI RestartDialog(HWND,LPCWSTR,DWORD);
  54. int WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD);
  55. #define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formatable */
  56. #define SHFMT_CANCEL 0xFFFFFFFEL /* Last format was canceled */
  57. #define SHFMT_NOFORMAT 0xFFFFFFFDL /* Drive is not formatable */
  58. /* SHObjectProperties flags */
  59. #define SHOP_PRINTERNAME 0x01
  60. #define SHOP_FILEPATH 0x02
  61. #define SHOP_VOLUMEGUID 0x04
  62. BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR);
  63. #define PCS_FATAL 0x80000000
  64. #define PCS_REPLACEDCHAR 0x00000001
  65. #define PCS_REMOVEDCHAR 0x00000002
  66. #define PCS_TRUNCATED 0x00000004
  67. #define PCS_PATHTOOLONG 0x00000008
  68. int WINAPI PathCleanupSpec(LPCWSTR pszDir, LPWSTR pszSpec);
  69. /*****************************************************************************
  70. * Predeclare interfaces
  71. */
  72. typedef struct IShellIcon IShellIcon, *LPSHELLICON;
  73. /*****************************************************************************
  74. * IContextMenu interface
  75. */
  76. /* DATAOBJECT_InitShellIDList*/
  77. #define CFSTR_SHELLIDLIST "Shell IDList Array" /* CF_IDLIST */
  78. extern UINT cfShellIDList;
  79. typedef struct
  80. { UINT cidl;
  81. UINT aoffset[1];
  82. } CIDA, *LPIDA;
  83. #define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets" /* CF_OBJECTPOSITIONS */
  84. #define CFSTR_NETRESOURCES "Net Resource" /* CF_NETRESOURCE */
  85. /* DATAOBJECT_InitFileGroupDesc */
  86. #define CFSTR_FILEDESCRIPTORA "FileGroupDescriptor" /* CF_FILEGROUPDESCRIPTORA */
  87. extern UINT cfFileGroupDesc;
  88. #define CFSTR_FILEDESCRIPTORW "FileGroupDescriptorW" /* CF_FILEGROUPDESCRIPTORW */
  89. /* DATAOBJECT_InitFileContents*/
  90. #define CFSTR_FILECONTENTS "FileContents" /* CF_FILECONTENTS */
  91. extern UINT cfFileContents;
  92. #define CFSTR_FILENAMEA "FileName" /* CF_FILENAMEA */
  93. #define CFSTR_FILENAMEW "FileNameW" /* CF_FILENAMEW */
  94. #define CFSTR_PRINTERGROUP "PrinterFriendlyName" /* CF_PRINTERS */
  95. #define CFSTR_FILENAMEMAPA "FileNameMap" /* CF_FILENAMEMAPA */
  96. #define CFSTR_FILENAMEMAPW "FileNameMapW" /* CF_FILENAMEMAPW */
  97. #define CFSTR_SHELLURL "UniformResourceLocator"
  98. #define CFSTR_PREFERREDDROPEFFECT "Preferred DropEffect"
  99. #define CFSTR_PERFORMEDDROPEFFECT "Performed DropEffect"
  100. #define CFSTR_PASTESUCCEEDED "Paste Succeeded"
  101. #define CFSTR_INDRAGLOOP "InShellDragLoop"
  102. #define CFSTR_FILENAME WINELIB_NAME_AW(CFSTR_FILENAME)
  103. /************************************************************************
  104. * IShellView interface
  105. */
  106. typedef GUID SHELLVIEWID;
  107. #define SV_CLASS_NAME ("SHELLDLL_DefView")
  108. #define FCIDM_SHVIEWFIRST 0x0000
  109. /* undocumented */
  110. #define FCIDM_SHVIEW_ARRANGE 0x7001
  111. #define FCIDM_SHVIEW_DELETE 0x7011
  112. #define FCIDM_SHVIEW_PROPERTIES 0x7013
  113. #define FCIDM_SHVIEW_CUT 0x7018
  114. #define FCIDM_SHVIEW_COPY 0x7019
  115. #define FCIDM_SHVIEW_INSERT 0x701A
  116. #define FCIDM_SHVIEW_UNDO 0x701B
  117. #define FCIDM_SHVIEW_INSERTLINK 0x701C
  118. #define FCIDM_SHVIEW_SELECTALL 0x7021
  119. #define FCIDM_SHVIEW_INVERTSELECTION 0x7022
  120. #define FCIDM_SHVIEW_BIGICON 0x7029
  121. #define FCIDM_SHVIEW_SMALLICON 0x702A
  122. #define FCIDM_SHVIEW_LISTVIEW 0x702B
  123. #define FCIDM_SHVIEW_REPORTVIEW 0x702C
  124. /* 0x7030-0x703f are used by the shellbrowser */
  125. #define FCIDM_SHVIEW_AUTOARRANGE 0x7031
  126. #define FCIDM_SHVIEW_SNAPTOGRID 0x7032
  127. #define FCIDM_SHVIEW_HELP 0x7041
  128. #define FCIDM_SHVIEW_RENAME 0x7050
  129. #define FCIDM_SHVIEW_CREATELINK 0x7051
  130. #define FCIDM_SHVIEW_NEWLINK 0x7052
  131. #define FCIDM_SHVIEW_NEWFOLDER 0x7053
  132. #define FCIDM_SHVIEW_REFRESH 0x7100 /* FIXME */
  133. #define FCIDM_SHVIEW_EXPLORE 0x7101 /* FIXME */
  134. #define FCIDM_SHVIEW_OPEN 0x7102 /* FIXME */
  135. #define FCIDM_SHVIEWLAST 0x7fff
  136. #define FCIDM_BROWSERFIRST 0xA000
  137. /* undocumented toolbar items from stddlg's*/
  138. #define FCIDM_TB_UPFOLDER 0xA001
  139. #define FCIDM_TB_NEWFOLDER 0xA002
  140. #define FCIDM_TB_SMALLICON 0xA003
  141. #define FCIDM_TB_REPORTVIEW 0xA004
  142. #define FCIDM_TB_DESKTOP 0xA005 /* FIXME */
  143. #define FCIDM_BROWSERLAST 0xbf00
  144. #define FCIDM_GLOBALFIRST 0x8000
  145. #define FCIDM_GLOBALLAST 0x9fff
  146. /*
  147. * Global submenu IDs and separator IDs
  148. */
  149. #define FCIDM_MENU_FILE (FCIDM_GLOBALFIRST+0x0000)
  150. #define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
  151. #define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
  152. #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
  153. #define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
  154. #define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
  155. #define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
  156. #define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
  157. #define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
  158. #define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170)
  159. /* control IDs known to the view */
  160. #define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0)
  161. #define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1)
  162. /****************************************************************************
  163. * IShellIcon interface
  164. */
  165. #define INTERFACE IShellIcon
  166. DECLARE_INTERFACE_(IShellIcon,IUnknown)
  167. {
  168. /*** IUnknown methods ***/
  169. STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
  170. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  171. STDMETHOD_(ULONG,Release)(THIS) PURE;
  172. /*** IShellIcon methods ***/
  173. STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT flags, LPINT lpIconIndex) PURE;
  174. };
  175. #undef INTERFACE
  176. #if !defined(__cplusplus) || defined(CINTERFACE)
  177. /*** IUnknown methods ***/
  178. #define IShellIcon_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  179. #define IShellIcon_AddRef(p) (p)->lpVtbl->AddRef(p)
  180. #define IShellIcon_Release(p) (p)->lpVtbl->Release(p)
  181. /*** IShellIcon methods ***/
  182. #define IShellIcon_GetIconOf(p,a,b,c) (p)->lpVtbl->GetIconOf(p,a,b,c)
  183. #endif
  184. /****************************************************************************
  185. * SHAddToRecentDocs API
  186. */
  187. #define SHARD_PIDL 0x00000001L
  188. #define SHARD_PATHA 0x00000002L
  189. #define SHARD_PATHW 0x00000003L
  190. #define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH)
  191. void WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
  192. /****************************************************************************
  193. * SHBrowseForFolder API
  194. */
  195. typedef INT (CALLBACK *BFFCALLBACK)(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
  196. #include <pshpack8.h>
  197. typedef struct tagBROWSEINFOA {
  198. HWND hwndOwner;
  199. LPCITEMIDLIST pidlRoot;
  200. LPSTR pszDisplayName;
  201. LPCSTR lpszTitle;
  202. UINT ulFlags;
  203. BFFCALLBACK lpfn;
  204. LPARAM lParam;
  205. INT iImage;
  206. } BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA;
  207. typedef struct tagBROWSEINFOW {
  208. HWND hwndOwner;
  209. LPCITEMIDLIST pidlRoot;
  210. LPWSTR pszDisplayName;
  211. LPCWSTR lpszTitle;
  212. UINT ulFlags;
  213. BFFCALLBACK lpfn;
  214. LPARAM lParam;
  215. INT iImage;
  216. } BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW;
  217. #define BROWSEINFO WINELIB_NAME_AW(BROWSEINFO)
  218. #define PBROWSEINFO WINELIB_NAME_AW(PBROWSEINFO)
  219. #define LPBROWSEINFO WINELIB_NAME_AW(LPBROWSEINFO)
  220. #include <poppack.h>
  221. /* Browsing for directory. */
  222. #define BIF_RETURNONLYFSDIRS 0x0001
  223. #define BIF_DONTGOBELOWDOMAIN 0x0002
  224. #define BIF_STATUSTEXT 0x0004
  225. #define BIF_RETURNFSANCESTORS 0x0008
  226. #define BIF_EDITBOX 0x0010
  227. #define BIF_VALIDATE 0x0020
  228. #define BIF_NEWDIALOGSTYLE 0x0040
  229. #define BIF_BROWSEFORCOMPUTER 0x1000
  230. #define BIF_BROWSEFORPRINTER 0x2000
  231. #define BIF_BROWSEINCLUDEFILES 0x4000
  232. /* message from browser */
  233. #define BFFM_INITIALIZED 1
  234. #define BFFM_SELCHANGED 2
  235. #define BFFM_VALIDATEFAILEDA 3 /* lParam:szPath ret:1(cont),0(EndDialog) */
  236. #define BFFM_VALIDATEFAILEDW 4 /* lParam:wzPath ret:1(cont),0(EndDialog) */
  237. /* messages to browser */
  238. #define BFFM_SETSTATUSTEXTA (WM_USER+100)
  239. #define BFFM_ENABLEOK (WM_USER+101)
  240. #define BFFM_SETSELECTIONA (WM_USER+102)
  241. #define BFFM_SETSELECTIONW (WM_USER+103)
  242. #define BFFM_SETSTATUSTEXTW (WM_USER+104)
  243. #define BFFM_SETOKTEXT (WM_USER+105)
  244. #define BFFM_SETEXPANDED (WM_USER+106)
  245. LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi);
  246. LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi);
  247. #define SHBrowseForFolder WINELIB_NAME_AW(SHBrowseForFolder)
  248. #define BFFM_SETSTATUSTEXT WINELIB_NAME_AW(BFFM_SETSTATUSTEXT)
  249. #define BFFM_SETSELECTION WINELIB_NAME_AW(BFFM_SETSELECTION)
  250. #define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED)
  251. /**********************************************************************
  252. * SHCreateShellFolderViewEx API
  253. */
  254. typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)(
  255. IShellView* dwUser,
  256. IShellFolder* pshf,
  257. HWND hWnd,
  258. UINT uMsg,
  259. WPARAM wParam,
  260. LPARAM lParam);
  261. typedef struct _CSFV
  262. {
  263. UINT cbSize;
  264. IShellFolder* pshf;
  265. IShellView* psvOuter;
  266. LPCITEMIDLIST pidl;
  267. LONG lEvents;
  268. LPFNVIEWCALLBACK pfnCallback;
  269. FOLDERVIEWMODE fvm;
  270. } CSFV, *LPCSFV;
  271. HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv);
  272. /* SHCreateShellFolderViewEx callback messages */
  273. #define SFVM_MERGEMENU 1
  274. #define SFVM_INVOKECOMMAND 2
  275. #define SFVM_GETHELPTEXT 3
  276. #define SFVM_GETTOOLTIPTEXT 4
  277. #define SFVM_GETBUTTONINFO 5
  278. #define SFVM_GETBUTTONS 6
  279. #define SFVM_INITMENUPOPUP 7
  280. #define SFVM_SELECTIONCHANGED 8 /* undocumented */
  281. #define SFVM_DRAWMENUITEM 9 /* undocumented */
  282. #define SFVM_MEASUREMENUITEM 10 /* undocumented */
  283. #define SFVM_EXITMENULOOP 11 /* undocumented */
  284. #define SFVM_VIEWRELEASE 12 /* undocumented */
  285. #define SFVM_GETNAMELENGTH 13 /* undocumented */
  286. #define SFVM_FSNOTIFY 14
  287. #define SFVM_WINDOWCREATED 15
  288. #define SFVM_WINDOWCLOSING 16 /* undocumented */
  289. #define SFVM_LISTREFRESHED 17 /* undocumented */
  290. #define SFVM_WINDOWFOCUSED 18 /* undocumented */
  291. #define SFVM_REGISTERCOPYHOOK 20 /* undocumented */
  292. #define SFVM_COPYHOOKCALLBACK 21 /* undocumented */
  293. #define SFVM_GETDETAILSOF 23
  294. #define SFVM_COLUMNCLICK 24
  295. #define SFVM_QUERYFSNOTIFY 25
  296. #define SFVM_DEFITEMCOUNT 26
  297. #define SFVM_DEFVIEWMODE 27
  298. #define SFVM_UNMERGEFROMMENU 28
  299. #define SFVM_ADDINGOBJECT 29 /* undocumented */
  300. #define SFVM_REMOVINGOBJECT 30 /* undocumented */
  301. #define SFVM_UPDATESTATUSBAR 31
  302. #define SFVM_BACKGROUNDENUM 32
  303. #define SFVM_GETCOMMANDDIR 33 /* undocumented */
  304. #define SFVM_GETCOLUMNSTREAM 34 /* undocumented */
  305. #define SFVM_CANSELECTALL 35 /* undocumented */
  306. #define SFVM_DIDDRAGDROP 36
  307. #define SFVM_ISSTRICTREFRESH 37 /* undocumented */
  308. #define SFVM_ISCHILDOBJECT 38 /* undocumented */
  309. #define SFVM_SETISFV 39
  310. #define SFVM_GETEXTVIEWS 40 /* undocumented */
  311. #define SFVM_THISIDLIST 41
  312. #define SFVM_ADDPROPERTYPAGES 47
  313. #define SFVM_BACKGROUNDENUMDONE 48
  314. #define SFVM_GETNOTIFY 49
  315. #define SFVM_GETSORTDEFAULTS 53
  316. #define SFVM_SIZE 57
  317. #define SFVM_GETZONE 58
  318. #define SFVM_GETPANE 59
  319. #define SFVM_GETHELPTOPIC 63
  320. #define SFVM_GETANIMATION 68
  321. #define SFVM_GET_CUSTOMVIEWINFO 77 /* undocumented */
  322. #define SFVM_ENUMERATEDITEMS 79 /* undocumented */
  323. #define SFVM_GET_VIEW_DATA 80 /* undocumented */
  324. #define SFVM_GET_WEBVIEW_LAYOUT 82 /* undocumented */
  325. #define SFVM_GET_WEBVIEW_CONTENT 83 /* undocumented */
  326. #define SFVM_GET_WEBVIEW_TASKS 84 /* undocumented */
  327. #define SFVM_GET_WEBVIEW_THEME 86 /* undocumented */
  328. #define SFVM_GETDEFERREDVIEWSETTINGS 92 /* undocumented */
  329. /* Types and definitions for the SFM_* parameters */
  330. #include <pshpack8.h>
  331. #define QCMINFO_PLACE_BEFORE 0
  332. #define QCMINFO_PLACE_AFTER 1
  333. typedef struct _QCMINFO_IDMAP_PLACEMENT
  334. {
  335. UINT id;
  336. UINT fFlags;
  337. } QCMINFO_IDMAP_PLACEMENT;
  338. typedef struct _QCMINFO_IDMAP
  339. {
  340. UINT nMaxIds;
  341. QCMINFO_IDMAP_PLACEMENT pIdList[1];
  342. } QCMINFO_IDMAP;
  343. typedef struct _QCMINFO
  344. {
  345. HMENU hmenu;
  346. UINT indexMenu;
  347. UINT idCmdFirst;
  348. UINT idCmdLast;
  349. QCMINFO_IDMAP const* pIdMap;
  350. } QCMINFO, *LPQCMINFO;
  351. #define TBIF_DEFAULT 0x00000000
  352. #define TBIF_APPEND 0x00000000
  353. #define TBIF_PREPEND 0x00000001
  354. #define TBIF_REPLACE 0x00000002
  355. #define TBIF_INTERNETBAR 0x00010000
  356. #define TBIF_STANDARDTOOLBAR 0x00020000
  357. #define TBIF_NOTOOLBAR 0x00030000
  358. typedef struct _TBINFO
  359. {
  360. UINT cbuttons;
  361. UINT uFlags;
  362. } TBINFO, *LPTBINFO;
  363. #include <poppack.h>
  364. /****************************************************************************
  365. * SHShellFolderView_Message API
  366. */
  367. LRESULT WINAPI SHShellFolderView_Message(
  368. HWND hwndCabinet,
  369. UINT uMessage,
  370. LPARAM lParam);
  371. /* SHShellFolderView_Message messages */
  372. #define SFVM_REARRANGE 0x0001
  373. #define SFVM_GETARRANGECOLUMN 0x0002 /* undocumented */
  374. #define SFVM_ADDOBJECT 0x0003
  375. #define SFVM_GETITEMCOUNT 0x0004 /* undocumented */
  376. #define SFVM_GETITEMPIDL 0x0005 /* undocumented */
  377. #define SFVM_REMOVEOBJECT 0x0006
  378. #define SFVM_UPDATEOBJECT 0x0007
  379. #define SFVM_SETREDRAW 0x0008 /* undocumented */
  380. #define SFVM_GETSELECTEDOBJECTS 0x0009
  381. #define SFVM_ISDROPONSOURCE 0x000A /* undocumented */
  382. #define SFVM_MOVEICONS 0x000B /* undocumented */
  383. #define SFVM_GETDRAGPOINT 0x000C /* undocumented */
  384. #define SFVM_GETDROPPOINT 0x000D /* undocumented */
  385. #define SFVM_SETITEMPOS 0x000E
  386. #define SFVM_ISDROPONBACKGROUND 0x000F /* undocumented */
  387. #define SFVM_SETCLIPBOARD 0x0010
  388. #define SFVM_TOGGLEAUTOARRANGE 0x0011 /* undocumented */
  389. #define SFVM_LINEUPICONS 0x0012 /* undocumented */
  390. #define SFVM_GETAUTOARRANGE 0x0013 /* undocumented */
  391. #define SFVM_GETSELECTEDCOUNT 0x0014 /* undocumented */
  392. #define SFVM_GETITEMSPACING 0x0015 /* undocumented */
  393. #define SFVM_REFRESHOBJECT 0x0016 /* undocumented */
  394. #define SFVM_SETPOINTS 0x0017
  395. /****************************************************************************
  396. * SHGetDataFromIDList API
  397. */
  398. #define SHGDFIL_FINDDATA 1
  399. #define SHGDFIL_NETRESOURCE 2
  400. #define SHGDFIL_DESCRIPTIONID 3
  401. #define SHDID_ROOT_REGITEM 1
  402. #define SHDID_FS_FILE 2
  403. #define SHDID_FS_DIRECTORY 3
  404. #define SHDID_FS_OTHER 4
  405. #define SHDID_COMPUTER_DRIVE35 5
  406. #define SHDID_COMPUTER_DRIVE525 6
  407. #define SHDID_COMPUTER_REMOVABLE 7
  408. #define SHDID_COMPUTER_FIXED 8
  409. #define SHDID_COMPUTER_NETDRIVE 9
  410. #define SHDID_COMPUTER_CDROM 10
  411. #define SHDID_COMPUTER_RAMDISK 11
  412. #define SHDID_COMPUTER_OTHER 12
  413. #define SHDID_NET_DOMAIN 13
  414. #define SHDID_NET_SERVER 14
  415. #define SHDID_NET_SHARE 15
  416. #define SHDID_NET_RESTOFNET 16
  417. #define SHDID_NET_OTHER 17
  418. #define SHDID_COMPUTER_IMAGING 18
  419. #define SHDID_COMPUTER_AUDIO 19
  420. #define SHDID_COMPUTER_SHAREDDOCS 20
  421. #include <pshpack8.h>
  422. typedef struct _SHDESCRIPTIONID
  423. { DWORD dwDescriptionId;
  424. CLSID clsid;
  425. } SHDESCRIPTIONID, *LPSHDESCRIPTIONID;
  426. #include <poppack.h>
  427. HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
  428. HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
  429. #define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
  430. BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate);
  431. BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate);
  432. #define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
  433. HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ;
  434. /**********************************************************************
  435. * SHGetSetSettings ()
  436. */
  437. typedef struct
  438. {
  439. BOOL fShowAllObjects : 1;
  440. BOOL fShowExtensions : 1;
  441. BOOL fNoConfirmRecycle : 1;
  442. BOOL fShowSysFiles : 1;
  443. BOOL fShowCompColor : 1;
  444. BOOL fDoubleClickInWebView : 1;
  445. BOOL fDesktopHTML : 1;
  446. BOOL fWin95Classic : 1;
  447. BOOL fDontPrettyPath : 1;
  448. BOOL fShowAttribCol : 1;
  449. BOOL fMapNetDrvBtn : 1;
  450. BOOL fShowInfoTip : 1;
  451. BOOL fHideIcons : 1;
  452. BOOL fWebView : 1;
  453. BOOL fFilter : 1;
  454. BOOL fShowSuperHidden : 1;
  455. BOOL fNoNetCrawling : 1;
  456. DWORD :0; /* Required for proper binary layout with gcc */
  457. DWORD dwWin95Unused;
  458. UINT uWin95Unused;
  459. LONG lParamSort;
  460. int iSortDirection;
  461. UINT version;
  462. UINT uNotUsed;
  463. BOOL fSepProcess: 1;
  464. BOOL fStartPanelOn: 1;
  465. BOOL fShowStartPage: 1;
  466. UINT fSpareFlags : 13;
  467. UINT :0; /* Required for proper binary layout with gcc */
  468. } SHELLSTATE, *LPSHELLSTATE;
  469. /**********************************************************************
  470. * SHGetSettings ()
  471. */
  472. typedef struct
  473. { BOOL fShowAllObjects : 1;
  474. BOOL fShowExtensions : 1;
  475. BOOL fNoConfirmRecycle : 1;
  476. BOOL fShowSysFiles : 1;
  477. BOOL fShowCompColor : 1;
  478. BOOL fDoubleClickInWebView : 1;
  479. BOOL fDesktopHTML : 1;
  480. BOOL fWin95Classic : 1;
  481. BOOL fDontPrettyPath : 1;
  482. BOOL fShowAttribCol : 1;
  483. BOOL fMapNetDrvBtn : 1;
  484. BOOL fShowInfoTip : 1;
  485. BOOL fHideIcons : 1;
  486. UINT fRestFlags : 3;
  487. UINT :0; /* Required for proper binary layout with gcc */
  488. } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
  489. VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
  490. #define SSF_SHOWALLOBJECTS 0x0001
  491. #define SSF_SHOWEXTENSIONS 0x0002
  492. #define SSF_SHOWCOMPCOLOR 0x0008
  493. #define SSF_SHOWSYSFILES 0x0020
  494. #define SSF_DOUBLECLICKINWEBVIEW 0x0080
  495. #define SSF_SHOWATTRIBCOL 0x0100
  496. #define SSF_DESKTOPHTML 0x0200
  497. #define SSF_WIN95CLASSIC 0x0400
  498. #define SSF_DONTPRETTYPATH 0x0800
  499. #define SSF_SHOWINFOTIP 0x2000
  500. #define SSF_MAPNETDRVBUTTON 0x1000
  501. #define SSF_NOCONFIRMRECYCLE 0x8000
  502. #define SSF_HIDEICONS 0x4000
  503. /****************************************************************************
  504. * SHRestricted API
  505. */
  506. typedef enum RESTRICTIONS
  507. {
  508. REST_NONE = 0x00000000,
  509. REST_NORUN = 0x00000001,
  510. REST_NOCLOSE = 0x00000002,
  511. REST_NOSAVESET = 0x00000004,
  512. REST_NOFILEMENU = 0x00000008,
  513. REST_NOSETFOLDERS = 0x00000010,
  514. REST_NOSETTASKBAR = 0x00000020,
  515. REST_NODESKTOP = 0x00000040,
  516. REST_NOFIND = 0x00000080,
  517. REST_NODRIVES = 0x00000100,
  518. REST_NODRIVEAUTORUN = 0x00000200,
  519. REST_NODRIVETYPEAUTORUN = 0x00000400,
  520. REST_NONETHOOD = 0x00000800,
  521. REST_STARTBANNER = 0x00001000,
  522. REST_RESTRICTRUN = 0x00002000,
  523. REST_NOPRINTERTABS = 0x00004000,
  524. REST_NOPRINTERDELETE = 0x00008000,
  525. REST_NOPRINTERADD = 0x00010000,
  526. REST_NOSTARTMENUSUBFOLDERS = 0x00020000,
  527. REST_MYDOCSONNET = 0x00040000,
  528. REST_NOEXITTODOS = 0x00080000,
  529. REST_ENFORCESHELLEXTSECURITY = 0x00100000,
  530. REST_LINKRESOLVEIGNORELINKINFO = 0x00200000,
  531. REST_NOCOMMONGROUPS = 0x00400000,
  532. REST_SEPARATEDESKTOPPROCESS = 0x00800000,
  533. REST_NOWEB = 0x01000000,
  534. REST_NOTRAYCONTEXTMENU = 0x02000000,
  535. REST_NOVIEWCONTEXTMENU = 0x04000000,
  536. REST_NONETCONNECTDISCONNECT = 0x08000000,
  537. REST_STARTMENULOGOFF = 0x10000000,
  538. REST_NOSETTINGSASSIST = 0x20000000,
  539. REST_NOINTERNETICON = 0x40000001,
  540. REST_NORECENTDOCSHISTORY,
  541. REST_NORECENTDOCSMENU,
  542. REST_NOACTIVEDESKTOP,
  543. REST_NOACTIVEDESKTOPCHANGES,
  544. REST_NOFAVORITESMENU,
  545. REST_CLEARRECENTDOCSONEXIT,
  546. REST_CLASSICSHELL,
  547. REST_NOCUSTOMIZEWEBVIEW,
  548. REST_NOHTMLWALLPAPER = 0x40000010,
  549. REST_NOCHANGINGWALLPAPER,
  550. REST_NODESKCOMP,
  551. REST_NOADDDESKCOMP,
  552. REST_NODELDESKCOMP,
  553. REST_NOCLOSEDESKCOMP,
  554. REST_NOCLOSE_DRAGDROPBAND,
  555. REST_NOMOVINGBAND,
  556. REST_NOEDITDESKCOMP,
  557. REST_NORESOLVESEARCH,
  558. REST_NORESOLVETRACK,
  559. REST_FORCECOPYACLWITHFILE,
  560. REST_NOLOGO3CHANNELNOTIFY,
  561. REST_NOFORGETSOFTWAREUPDATE,
  562. REST_NOSETACTIVEDESKTOP,
  563. REST_NOUPDATEWINDOWS,
  564. REST_NOCHANGESTARMENU, /* 0x40000020 */
  565. REST_NOFOLDEROPTIONS,
  566. REST_HASFINDCOMPUTERS,
  567. REST_INTELLIMENUS,
  568. REST_RUNDLGMEMCHECKBOX,
  569. REST_ARP_ShowPostSetup,
  570. REST_NOCSC,
  571. REST_NOCONTROLPANEL,
  572. REST_ENUMWORKGROUP,
  573. REST_ARP_NOARP,
  574. REST_ARP_NOREMOVEPAGE,
  575. REST_ARP_NOADDPAGE,
  576. REST_ARP_NOWINSETUPPAGE,
  577. REST_GREYMSIADS,
  578. REST_NOCHANGEMAPPEDDRIVELABEL,
  579. REST_NOCHANGEMAPPEDDRIVECOMMENT,
  580. REST_MaxRecentDocs, /* 0x40000030 */
  581. REST_NONETWORKCONNECTIONS,
  582. REST_FORCESTARTMENULOGOFF,
  583. REST_NOWEBVIEW,
  584. REST_NOCUSTOMIZETHISFOLDER,
  585. REST_NOENCRYPTION,
  586. REST_ALLOWFRENCHENCRYPTION, /* not documented */
  587. REST_DONTSHOWSUPERHIDDEN,
  588. REST_NOSHELLSEARCHBUTTON,
  589. REST_NOHARDWARETAB,
  590. REST_NORUNASINSTALLPROMPT,
  591. REST_PROMPTRUNASINSTALLNETPATH,
  592. REST_NOMANAGEMYCOMPUTERVERB,
  593. REST_NORECENTDOCSNETHOOD,
  594. REST_DISALLOWRUN,
  595. REST_NOWELCOMESCREEN,
  596. REST_RESTRICTCPL, /* 0x40000040 */
  597. REST_DISALLOWCPL,
  598. REST_NOSMBALLOONTIP,
  599. REST_NOSMHELP,
  600. REST_NOWINKEYS,
  601. REST_NOENCRYPTONMOVE,
  602. REST_NOLOCALMACHINERUN,
  603. REST_NOCURRENTUSERRUN,
  604. REST_NOLOCALMACHINERUNONCE,
  605. REST_NOCURRENTUSERRUNONCE,
  606. REST_FORCEACTIVEDESKTOPON,
  607. REST_NOCOMPUTERSNEARME,
  608. REST_NOVIEWONDRIVE,
  609. REST_NONETCRAWL,
  610. REST_NOSHAREDDOCUMENTS,
  611. REST_NOSMMYDOCS,
  612. REST_NOSMMYPICS, /* 0x40000050 */
  613. REST_ALLOWBITBUCKDRIVES,
  614. REST_NONLEGACYSHELLMODE,
  615. REST_NOCONTROLPANELBARRICADE,
  616. REST_NOSTARTPAGE,
  617. REST_NOAUTOTRAYNOTIFY,
  618. REST_NOTASKGROUPING,
  619. REST_NOCDBURNING,
  620. REST_MYCOMPNOPROP,
  621. REST_MYDOCSNOPROP,
  622. REST_NOSTARTPANEL,
  623. REST_NODISPLAYAPPEARANCEPAGE,
  624. REST_NOTHEMESTAB,
  625. REST_NOVISUALSTYLECHOICE,
  626. REST_NOSIZECHOICE,
  627. REST_NOCOLORCHOICE,
  628. REST_SETVISUALSTYLE, /* 0x40000060 */
  629. REST_STARTRUNNOHOMEPATH,
  630. REST_NOUSERNAMEINSTARTPANEL,
  631. REST_NOMYCOMPUTERICON,
  632. REST_NOSMNETWORKPLACES,
  633. REST_NOSMPINNEDLIST,
  634. REST_NOSMMYMUSIC,
  635. REST_NOSMEJECTPC,
  636. REST_NOSMMOREPROGRAMS,
  637. REST_NOSMMFUPROGRAMS,
  638. REST_NOTRAYITEMSDISPLAY,
  639. REST_NOTOOLBARSONTASKBAR,
  640. /* 0x4000006C
  641. 0x4000006D
  642. 0x4000006E */
  643. REST_NOSMCONFIGUREPROGRAMS = 0x4000006F,
  644. REST_HIDECLOCK, /* 0x40000070 */
  645. REST_NOLOWDISKSPACECHECKS,
  646. REST_NOENTIRENETWORK,
  647. REST_NODESKTOPCLEANUP,
  648. REST_BITBUCKNUKEONDELETE,
  649. REST_BITBUCKCONFIRMDELETE,
  650. REST_BITBUCKNOPROP,
  651. REST_NODISPBACKGROUND,
  652. REST_NODISPSCREENSAVEPG,
  653. REST_NODISPSETTINGSPG,
  654. REST_NODISPSCREENSAVEPREVIEW,
  655. REST_NODISPLAYCPL,
  656. REST_HIDERUNASVERB,
  657. REST_NOTHUMBNAILCACHE,
  658. REST_NOSTRCMPLOGICAL,
  659. REST_NOPUBLISHWIZARD,
  660. REST_NOONLINEPRINTSWIZARD, /* 0x40000080 */
  661. REST_NOWEBSERVICES,
  662. REST_ALLOWUNHASHEDWEBVIEW,
  663. REST_ALLOWLEGACYWEBVIEW,
  664. REST_REVERTWEBVIEWSECURITY,
  665. REST_INHERITCONSOLEHANDLES = 0x40000086,
  666. REST_NODISCONNECT = 0x41000001,
  667. REST_NOSECURITY,
  668. REST_NOFILEASSOCIATE, /* 0x41000003 */
  669. } RESTRICTIONS;
  670. DWORD WINAPI SHRestricted(RESTRICTIONS rest);
  671. /****************************************************************************
  672. * SHChangeNotify API
  673. */
  674. typedef struct _SHChangeNotifyEntry
  675. {
  676. LPCITEMIDLIST pidl;
  677. BOOL fRecursive;
  678. } SHChangeNotifyEntry;
  679. #define SHCNE_RENAMEITEM 0x00000001
  680. #define SHCNE_CREATE 0x00000002
  681. #define SHCNE_DELETE 0x00000004
  682. #define SHCNE_MKDIR 0x00000008
  683. #define SHCNE_RMDIR 0x00000010
  684. #define SHCNE_MEDIAINSERTED 0x00000020
  685. #define SHCNE_MEDIAREMOVED 0x00000040
  686. #define SHCNE_DRIVEREMOVED 0x00000080
  687. #define SHCNE_DRIVEADD 0x00000100
  688. #define SHCNE_NETSHARE 0x00000200
  689. #define SHCNE_NETUNSHARE 0x00000400
  690. #define SHCNE_ATTRIBUTES 0x00000800
  691. #define SHCNE_UPDATEDIR 0x00001000
  692. #define SHCNE_UPDATEITEM 0x00002000
  693. #define SHCNE_SERVERDISCONNECT 0x00004000
  694. #define SHCNE_UPDATEIMAGE 0x00008000
  695. #define SHCNE_DRIVEADDGUI 0x00010000
  696. #define SHCNE_RENAMEFOLDER 0x00020000
  697. #define SHCNE_FREESPACE 0x00040000
  698. #define SHCNE_EXTENDED_EVENT 0x04000000
  699. #define SHCNE_ASSOCCHANGED 0x08000000
  700. #define SHCNE_DISKEVENTS 0x0002381F
  701. #define SHCNE_GLOBALEVENTS 0x0C0581E0
  702. #define SHCNE_ALLEVENTS 0x7FFFFFFF
  703. #define SHCNE_INTERRUPT 0x80000000
  704. #define SHCNEE_ORDERCHANGED 0x0002L
  705. #define SHCNEE_MSI_CHANGE 0x0004L
  706. #define SHCNEE_MSI_UNINSTALL 0x0005L
  707. #define SHCNF_IDLIST 0x0000
  708. #define SHCNF_PATHA 0x0001
  709. #define SHCNF_PRINTERA 0x0002
  710. #define SHCNF_DWORD 0x0003
  711. #define SHCNF_PATHW 0x0005
  712. #define SHCNF_PRINTERW 0x0006
  713. #define SHCNF_TYPE 0x00FF
  714. #define SHCNF_FLUSH 0x1000
  715. #define SHCNF_FLUSHNOWAIT 0x2000
  716. #define SHCNF_PATH WINELIB_NAME_AW(SHCNF_PATH)
  717. #define SHCNF_PRINTER WINELIB_NAME_AW(SHCNF_PRINTER)
  718. void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
  719. /*
  720. * IShellChangeNotify
  721. */
  722. typedef struct IShellChangeNotify IShellChangeNotify, *LPSHELLCHANGENOTIFY;
  723. #define INTERFACE IShellChangeNotify
  724. DECLARE_INTERFACE_(IShellChangeNotify,IUnknown)
  725. {
  726. /*** IUnknown methods ***/
  727. STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
  728. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  729. STDMETHOD_(ULONG,Release)(THIS) PURE;
  730. /*** IShellChangeNotify methods ***/
  731. STDMETHOD(OnChange)(THIS_ LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) PURE;
  732. };
  733. #undef INTERFACE
  734. #if !defined(__cplusplus) || defined(CINTERFACE)
  735. /*** IUnknown methods ***/
  736. #define IShellChangeNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  737. #define IShellChangeNotify_AddRef(p) (p)->lpVtbl->AddRef(p)
  738. #define IShellChangeNotify_Release(p) (p)->lpVtbl->Release(p)
  739. /*** IShellChangeNotify methods ***/
  740. #define IShellChangeNotify_OnChange(p,a,b,c) (p)->lpVtbl->OnChange(p,a,b,c)
  741. #endif
  742. typedef struct _SHChangeDWORDAsIDList {
  743. USHORT cb;
  744. DWORD dwItem1;
  745. DWORD dwItem2;
  746. USHORT cbZero;
  747. } SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList;
  748. typedef struct _SHChangeProductKeyAsIDList {
  749. USHORT cb;
  750. WCHAR wszProductKey[39];
  751. USHORT cbZero;
  752. } SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList;
  753. ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, UINT wMsg,
  754. int cEntries, SHChangeNotifyEntry *pshcne);
  755. BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID);
  756. HANDLE WINAPI SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dwProcessId,
  757. LPITEMIDLIST **pppidl, LONG *plEvent);
  758. BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
  759. HRESULT WINAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST * ppidlReal);
  760. /****************************************************************************
  761. * SHCreateDirectory API
  762. */
  763. DWORD WINAPI SHCreateDirectory(HWND, LPCVOID);
  764. int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
  765. int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES);
  766. /****************************************************************************
  767. * SHGetSpecialFolderLocation API
  768. */
  769. HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl);
  770. HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl);
  771. /****************************************************************************
  772. * SHGetFolderPath API
  773. */
  774. typedef enum {
  775. SHGFP_TYPE_CURRENT = 0,
  776. SHGFP_TYPE_DEFAULT = 1
  777. } SHGFP_TYPE;
  778. HRESULT WINAPI SHGetFolderPathA(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
  779. HRESULT WINAPI SHGetFolderPathW(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
  780. #define SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath)
  781. #define CSIDL_DESKTOP 0x0000
  782. #define CSIDL_INTERNET 0x0001
  783. #define CSIDL_PROGRAMS 0x0002
  784. #define CSIDL_CONTROLS 0x0003
  785. #define CSIDL_PRINTERS 0x0004
  786. #define CSIDL_PERSONAL 0x0005
  787. #define CSIDL_FAVORITES 0x0006
  788. #define CSIDL_STARTUP 0x0007
  789. #define CSIDL_RECENT 0x0008
  790. #define CSIDL_SENDTO 0x0009
  791. #define CSIDL_BITBUCKET 0x000a
  792. #define CSIDL_STARTMENU 0x000b
  793. #define CSIDL_MYDOCUMENTS 0x000c
  794. #define CSIDL_MYMUSIC 0x000d
  795. #define CSIDL_MYVIDEO 0x000e
  796. #define CSIDL_DESKTOPDIRECTORY 0x0010
  797. #define CSIDL_DRIVES 0x0011
  798. #define CSIDL_NETWORK 0x0012
  799. #define CSIDL_NETHOOD 0x0013
  800. #define CSIDL_FONTS 0x0014
  801. #define CSIDL_TEMPLATES 0x0015
  802. #define CSIDL_COMMON_STARTMENU 0x0016
  803. #define CSIDL_COMMON_PROGRAMS 0X0017
  804. #define CSIDL_COMMON_STARTUP 0x0018
  805. #define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
  806. #define CSIDL_APPDATA 0x001a
  807. #define CSIDL_PRINTHOOD 0x001b
  808. #define CSIDL_LOCAL_APPDATA 0x001c
  809. #define CSIDL_ALTSTARTUP 0x001d
  810. #define CSIDL_COMMON_ALTSTARTUP 0x001e
  811. #define CSIDL_COMMON_FAVORITES 0x001f
  812. #define CSIDL_INTERNET_CACHE 0x0020
  813. #define CSIDL_COOKIES 0x0021
  814. #define CSIDL_HISTORY 0x0022
  815. #define CSIDL_COMMON_APPDATA 0x0023
  816. #define CSIDL_WINDOWS 0x0024
  817. #define CSIDL_SYSTEM 0x0025
  818. #define CSIDL_PROGRAM_FILES 0x0026
  819. #define CSIDL_MYPICTURES 0x0027
  820. #define CSIDL_PROFILE 0x0028
  821. #define CSIDL_SYSTEMX86 0x0029
  822. #define CSIDL_PROGRAM_FILESX86 0x002a
  823. #define CSIDL_PROGRAM_FILES_COMMON 0x002b
  824. #define CSIDL_PROGRAM_FILES_COMMONX86 0x002c
  825. #define CSIDL_COMMON_TEMPLATES 0x002d
  826. #define CSIDL_COMMON_DOCUMENTS 0x002e
  827. #define CSIDL_COMMON_ADMINTOOLS 0x002f
  828. #define CSIDL_ADMINTOOLS 0x0030
  829. #define CSIDL_CONNECTIONS 0x0031
  830. #define CSIDL_COMMON_MUSIC 0x0035
  831. #define CSIDL_COMMON_PICTURES 0x0036
  832. #define CSIDL_COMMON_VIDEO 0x0037
  833. #define CSIDL_RESOURCES 0x0038
  834. #define CSIDL_RESOURCES_LOCALIZED 0x0039
  835. #define CSIDL_COMMON_OEM_LINKS 0x003a
  836. #define CSIDL_CDBURN_AREA 0x003b
  837. #define CSIDL_COMPUTERSNEARME 0x003d
  838. #define CSIDL_PROFILES 0x003e
  839. #define CSIDL_FOLDER_MASK 0x00ff
  840. #define CSIDL_FLAG_PER_USER_INIT 0x0800
  841. #define CSIDL_FLAG_NO_ALIAS 0x1000
  842. #define CSIDL_FLAG_DONT_VERIFY 0x4000
  843. #define CSIDL_FLAG_CREATE 0x8000
  844. #define CSIDL_FLAG_MASK 0xff00
  845. /****************************************************************************
  846. * SHGetDesktopFolder API
  847. */
  848. HRESULT WINAPI SHGetDesktopFolder(IShellFolder * *);
  849. /****************************************************************************
  850. * SHBindToParent API
  851. */
  852. HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast);
  853. /****************************************************************************
  854. * SHDefExtractIcon API
  855. */
  856. HRESULT WINAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags,
  857. HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
  858. HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags,
  859. HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
  860. #define SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon)
  861. /*
  862. * DROPFILES for CF_HDROP and CF_PRINTERS
  863. */
  864. typedef struct _DROPFILES
  865. {
  866. DWORD pFiles;
  867. POINT pt;
  868. BOOL fNC;
  869. BOOL fWide;
  870. } DROPFILES, *LPDROPFILES;
  871. /*
  872. * Properties of a file in the clipboard
  873. */
  874. typedef struct _FILEDESCRIPTORA {
  875. DWORD dwFlags;
  876. CLSID clsid;
  877. SIZEL sizel;
  878. POINTL pointl;
  879. DWORD dwFileAttributes;
  880. FILETIME ftCreationTime;
  881. FILETIME ftLastAccessTime;
  882. FILETIME ftLastWriteTime;
  883. DWORD nFileSizeHigh;
  884. DWORD nFileSizeLow;
  885. CHAR cFileName[MAX_PATH];
  886. } FILEDESCRIPTORA, *LPFILEDESCRIPTORA;
  887. typedef struct _FILEDESCRIPTORW {
  888. DWORD dwFlags;
  889. CLSID clsid;
  890. SIZEL sizel;
  891. POINTL pointl;
  892. DWORD dwFileAttributes;
  893. FILETIME ftCreationTime;
  894. FILETIME ftLastAccessTime;
  895. FILETIME ftLastWriteTime;
  896. DWORD nFileSizeHigh;
  897. DWORD nFileSizeLow;
  898. WCHAR cFileName[MAX_PATH];
  899. } FILEDESCRIPTORW, *LPFILEDESCRIPTORW;
  900. DECL_WINELIB_TYPE_AW(FILEDESCRIPTOR)
  901. DECL_WINELIB_TYPE_AW(LPFILEDESCRIPTOR)
  902. /*
  903. * CF_FILEGROUPDESCRIPTOR clipboard format
  904. */
  905. typedef struct _FILEGROUPDESCRIPTORA {
  906. UINT cItems;
  907. FILEDESCRIPTORA fgd[1];
  908. } FILEGROUPDESCRIPTORA, *LPFILEGROUPDESCRIPTORA;
  909. typedef struct _FILEGROUPDESCRIPTORW {
  910. UINT cItems;
  911. FILEDESCRIPTORW fgd[1];
  912. } FILEGROUPDESCRIPTORW, *LPFILEGROUPDESCRIPTORW;
  913. DECL_WINELIB_TYPE_AW(FILEGROUPDESCRIPTOR)
  914. DECL_WINELIB_TYPE_AW(LPFILEGROUPDESCRIPTOR)
  915. /****************************************************************************
  916. * Cabinet functions
  917. */
  918. typedef struct {
  919. WORD cLength;
  920. WORD nVersion;
  921. BOOL fFullPathTitle:1;
  922. BOOL fSaveLocalView:1;
  923. BOOL fNotShell:1;
  924. BOOL fSimpleDefault:1;
  925. BOOL fDontShowDescBar:1;
  926. BOOL fNewWindowMode:1;
  927. BOOL fShowCompColor:1;
  928. BOOL fDontPrettyNames:1;
  929. BOOL fAdminsCreateCommonGroups:1;
  930. UINT fUnusedFlags:7;
  931. UINT :0; /* Required for proper binary layout with gcc */
  932. UINT fMenuEnumFilter;
  933. } CABINETSTATE, *LPCABINETSTATE;
  934. #define CABINETSTATE_VERSION 2
  935. BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
  936. BOOL WINAPI WriteCabinetState(CABINETSTATE *);
  937. /****************************************************************************
  938. * Path Manipulation Routines
  939. */
  940. VOID WINAPI PathGetShortPath(LPWSTR pszPath);
  941. /****************************************************************************
  942. * Drag And Drop Routines
  943. */
  944. /* DAD_AutoScroll sample structure */
  945. #define NUM_POINTS 3
  946. typedef struct
  947. {
  948. int iNextSample;
  949. DWORD dwLastScroll;
  950. BOOL bFull;
  951. POINT pts[NUM_POINTS];
  952. DWORD dwTimes[NUM_POINTS];
  953. } AUTO_SCROLL_DATA;
  954. BOOL WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT);
  955. BOOL WINAPI DAD_DragEnterEx(HWND,POINT);
  956. BOOL WINAPI DAD_DragEnterEx2(HWND,POINT,IDataObject*);
  957. BOOL WINAPI DAD_DragMove(POINT);
  958. BOOL WINAPI DAD_DragLeave(void);
  959. BOOL WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,LPPOINT);
  960. HRESULT WINAPI SHDoDragDrop(HWND,IDataObject*,IDropSource*,DWORD,LPDWORD);
  961. /*****************************************************************************
  962. * IFileSystemBindData interface
  963. */
  964. #ifndef __IFileSystemBindData_FWD_DEFINED__
  965. #define __IFileSystemBindData_FWD_DEFINED__
  966. typedef struct IFileSystemBindData IFileSystemBindData;
  967. #endif
  968. #ifndef __IFileSystemBindData_INTERFACE_DEFINED__
  969. #define __IFileSystemBindData_INTERFACE_DEFINED__
  970. DEFINE_GUID(IID_IFileSystemBindData, 0x01e18d10, 0x4d8b, 0x11d2, 0x85,0x5d, 0x00,0x60,0x08,0x05,0x93,0x67);
  971. #if defined(__cplusplus) && !defined(CINTERFACE)
  972. struct IFileSystemBindData : public IUnknown
  973. {
  974. virtual HRESULT STDMETHODCALLTYPE SetFindData(
  975. const WIN32_FIND_DATAW* pfd) = 0;
  976. virtual HRESULT STDMETHODCALLTYPE GetFindData(
  977. WIN32_FIND_DATAW* pfd) = 0;
  978. };
  979. #else
  980. typedef struct IFileSystemBindDataVtbl IFileSystemBindDataVtbl;
  981. struct IFileSystemBindData {
  982. const IFileSystemBindDataVtbl* lpVtbl;
  983. };
  984. struct IFileSystemBindDataVtbl {
  985. /*** IUnknown methods ***/
  986. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  987. IFileSystemBindData* This,
  988. REFIID riid,
  989. void** ppvObject);
  990. ULONG (STDMETHODCALLTYPE *AddRef)(
  991. IFileSystemBindData* This);
  992. ULONG (STDMETHODCALLTYPE *Release)(
  993. IFileSystemBindData* This);
  994. /*** IFileSystemBindData methods ***/
  995. HRESULT (STDMETHODCALLTYPE *SetFindData)(
  996. IFileSystemBindData* This,
  997. const WIN32_FIND_DATAW* pfd);
  998. HRESULT (STDMETHODCALLTYPE *GetFindData)(
  999. IFileSystemBindData* This,
  1000. WIN32_FIND_DATAW* pfd);
  1001. };
  1002. /*** IUnknown methods ***/
  1003. #define IFileSystemBindData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  1004. #define IFileSystemBindData_AddRef(p) (p)->lpVtbl->AddRef(p)
  1005. #define IFileSystemBindData_Release(p) (p)->lpVtbl->Release(p)
  1006. /*** IFileSystemBindData methods ***/
  1007. #define IFileSystemBindData_GetFindData(p,a) (p)->lpVtbl->GetFindData(p,a)
  1008. #define IFileSystemBindData_SetFindData(p,a) (p)->lpVtbl->SetFindData(p,a)
  1009. #endif
  1010. #endif /* __IFileSystemBindData_INTERFACE_DEFINED__ */
  1011. LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST,LPCSHITEMID,BOOL);
  1012. LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
  1013. LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
  1014. LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR);
  1015. LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR);
  1016. #define ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath)
  1017. LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST,LPCITEMIDLIST);
  1018. LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST,LPCITEMIDLIST);
  1019. LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
  1020. void WINAPI ILFree(LPITEMIDLIST);
  1021. LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
  1022. UINT WINAPI ILGetSize(LPCITEMIDLIST);
  1023. BOOL WINAPI ILIsEqual(LPCITEMIDLIST,LPCITEMIDLIST);
  1024. BOOL WINAPI ILIsParent(LPCITEMIDLIST,LPCITEMIDLIST,BOOL);
  1025. HRESULT WINAPI ILLoadFromStream(LPSTREAM,LPITEMIDLIST*);
  1026. BOOL WINAPI ILRemoveLastID(LPITEMIDLIST);
  1027. HRESULT WINAPI ILSaveToStream(LPSTREAM,LPCITEMIDLIST);
  1028. #include <poppack.h>
  1029. #ifdef __cplusplus
  1030. } /* extern "C" */
  1031. #endif /* defined(__cplusplus) */
  1032. #endif /* __WINE_SHLOBJ_H */