shlobj.h 94 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759
  1. /**
  2. * This file is part of the mingw-w64 runtime package.
  3. * No warranty is given; refer to the file DISCLAIMER within this package.
  4. */
  5. #ifndef _SHLOBJ_H_
  6. #define _SHLOBJ_H_
  7. #include <wtypesbase.h>
  8. #include <wincrypt.h>
  9. #include <winapifamily.h>
  10. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || defined(WINSTORECOMPAT)
  11. #ifndef _SHFOLDER_H_
  12. #define CSIDL_FLAG_CREATE 0x8000
  13. #endif
  14. #ifndef SHFOLDERAPI
  15. #if defined (_SHFOLDER_) || defined (_SHELL32_)
  16. #define SHFOLDERAPI STDAPI
  17. #else
  18. #define SHFOLDERAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
  19. #endif
  20. #endif
  21. #define CSIDL_PERSONAL 0x0005
  22. #define CSIDL_MYPICTURES 0x0027
  23. #define CSIDL_APPDATA 0x001a
  24. #define CSIDL_MYMUSIC 0x000d
  25. #define CSIDL_MYVIDEO 0x000e
  26. typedef enum {
  27. SHGFP_TYPE_CURRENT = 0,
  28. SHGFP_TYPE_DEFAULT = 1,
  29. } SHGFP_TYPE;
  30. SHFOLDERAPI SHGetFolderPathW (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
  31. #endif
  32. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  33. #include <_mingw_unicode.h>
  34. #ifndef _WINRESRC_
  35. #ifndef _WIN32_IE
  36. #define _WIN32_IE 0x0501
  37. #endif
  38. #endif
  39. #ifndef SNDMSG
  40. #ifdef __cplusplus
  41. #define SNDMSG ::SendMessage
  42. #else
  43. #define SNDMSG SendMessage
  44. #endif
  45. #endif
  46. #ifndef WINSHELLAPI
  47. #ifdef _SHELL32_
  48. #define WINSHELLAPI
  49. #else
  50. #define WINSHELLAPI DECLSPEC_IMPORT
  51. #endif
  52. #endif
  53. #ifndef SHSTDAPI
  54. #ifdef _SHELL32_
  55. #define SHSTDAPI STDAPI
  56. #define SHSTDAPI_(type) STDAPI_(type)
  57. #else
  58. #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
  59. #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
  60. #endif
  61. #endif
  62. #ifndef SHDOCAPI
  63. #ifdef _SHDOCVW_
  64. #define SHDOCAPI STDAPI
  65. #define SHDOCAPI_(type) STDAPI_(type)
  66. #else
  67. #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
  68. #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
  69. #endif
  70. #endif
  71. #ifndef SHSTDDOCAPI
  72. #if defined (_SHDOCVW_) || defined (_SHELL32_)
  73. #define SHSTDDOCAPI STDAPI
  74. #define SHSTDDOCAPI_(type) STDAPI_(type)
  75. #else
  76. #define SHSTDDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
  77. #define SHSTDDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
  78. #endif
  79. #endif
  80. #ifndef BROWSEUIAPI
  81. #ifdef _BROWSEUI_
  82. #define BROWSEUIAPI STDAPI
  83. #define BROWSEUIAPI_(type) STDAPI_(type)
  84. #else
  85. #define BROWSEUIAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
  86. #define BROWSEUIAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
  87. #endif
  88. #endif
  89. #include <ole2.h>
  90. #ifndef _PRSHT_H_
  91. #include <prsht.h>
  92. #endif
  93. #ifndef _INC_COMMCTRL
  94. #include <commctrl.h>
  95. #endif
  96. #ifndef INITGUID
  97. #include <shlguid.h>
  98. #endif
  99. #include <shtypes.h>
  100. #include <shobjidl.h>
  101. #ifdef __cplusplus
  102. extern "C" {
  103. #endif
  104. #include <pshpack1.h>
  105. SHSTDAPI SHGetMalloc (IMalloc **ppMalloc);
  106. SHSTDAPI_(void *) SHAlloc (SIZE_T cb);
  107. SHSTDAPI_(void) SHFree (void *pv);
  108. #define GIL_OPENICON 0x1
  109. #define GIL_FORSHELL 0x2
  110. #define GIL_ASYNC 0x20
  111. #define GIL_DEFAULTICON 0x40
  112. #define GIL_FORSHORTCUT 0x80
  113. #define GIL_CHECKSHIELD 0x200
  114. #define GIL_SIMULATEDOC 0x1
  115. #define GIL_PERINSTANCE 0x2
  116. #define GIL_PERCLASS 0x4
  117. #define GIL_NOTFILENAME 0x8
  118. #define GIL_DONTCACHE 0x10
  119. #define GIL_SHIELD 0x200
  120. #define GIL_FORCENOSHIELD 0x400
  121. #undef INTERFACE
  122. #define INTERFACE IExtractIconA
  123. DECLARE_INTERFACE_IID_ (IExtractIconA, IUnknown, "000214eb-0000-0000-c000-000000000046") {
  124. STDMETHOD(GetIconLocation) (THIS_ UINT uFlags, PSTR pszIconFile, UINT cchMax, int *piIndex, UINT *pwFlags) PURE;
  125. STDMETHOD(Extract) (THIS_ PCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) PURE;
  126. };
  127. typedef IExtractIconA *LPEXTRACTICONA;
  128. #undef INTERFACE
  129. #define INTERFACE IExtractIconW
  130. DECLARE_INTERFACE_IID_ (IExtractIconW, IUnknown, "000214fa-0000-0000-c000-000000000046") {
  131. STDMETHOD(GetIconLocation) (THIS_ UINT uFlags, PWSTR pszIconFile, UINT cchMax, int *piIndex, UINT *pwFlags) PURE;
  132. STDMETHOD(Extract) (THIS_ PCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) PURE;
  133. };
  134. typedef IExtractIconW *LPEXTRACTICONW;
  135. #define IExtractIcon __MINGW_NAME_AW(IExtractIcon)
  136. #define IExtractIconVtbl __MINGW_NAME_AW_EXT(IExtractIcon,Vtbl)
  137. #define LPEXTRACTICON __MINGW_NAME_AW(LPEXTRACTICON)
  138. #undef INTERFACE
  139. #define INTERFACE IShellIconOverlayIdentifier
  140. DECLARE_INTERFACE_IID_ (IShellIconOverlayIdentifier, IUnknown, "0c6c4200-c589-11d0-999a-00c04fd655e1") {
  141. STDMETHOD(IsMemberOf) (THIS_ PCWSTR pwszPath, DWORD dwAttrib) PURE;
  142. STDMETHOD(GetOverlayInfo) (THIS_ PWSTR pwszIconFile, int cchMax, int *pIndex, DWORD *pdwFlags) PURE;
  143. STDMETHOD(GetPriority) (THIS_ int *pIPriority) PURE;
  144. };
  145. #define ISIOI_ICONFILE 0x1
  146. #define ISIOI_ICONINDEX 0x2
  147. #undef INTERFACE
  148. #define INTERFACE IShellIconOverlayManager
  149. DECLARE_INTERFACE_IID_ (IShellIconOverlayManager, IUnknown, "f10b5e34-dd3b-42a7-aa7d-2f4ec54bb09b") {
  150. STDMETHOD(GetFileOverlayInfo) (THIS_ PCWSTR pwszPath, DWORD dwAttrib, int *pIndex, DWORD dwflags) PURE;
  151. STDMETHOD(GetReservedOverlayInfo) (THIS_ PCWSTR pwszPath, DWORD dwAttrib, int *pIndex, DWORD dwflags, int iReservedID) PURE;
  152. STDMETHOD(RefreshOverlayImages) (THIS_ DWORD dwFlags) PURE;
  153. STDMETHOD(LoadNonloadedOverlayIdentifiers) (THIS) PURE;
  154. STDMETHOD(OverlayIndexFromImageIndex) (THIS_ int iImage, int *piIndex, WINBOOL fAdd) PURE;
  155. };
  156. #define SIOM_OVERLAYINDEX 1
  157. #define SIOM_ICONINDEX 2
  158. #define SIOM_RESERVED_SHARED 0
  159. #define SIOM_RESERVED_LINK 1
  160. #define SIOM_RESERVED_SLOWFILE 2
  161. #define SIOM_RESERVED_DEFAULT 3
  162. #undef INTERFACE
  163. #define INTERFACE IShellIconOverlay
  164. DECLARE_INTERFACE_IID_ (IShellIconOverlay, IUnknown, "7d688a70-c613-11d0-999b-00c04fd655e1") {
  165. STDMETHOD(GetOverlayIndex) (THIS_ PCUITEMID_CHILD pidl, int *pIndex) PURE;
  166. STDMETHOD(GetOverlayIconIndex) (THIS_ PCUITEMID_CHILD pidl, int *pIconIndex) PURE;
  167. };
  168. #define OI_DEFAULT 0x0
  169. #define OI_ASYNC 0xffffeeee
  170. #define IDO_SHGIOI_SHARE 0x0fffffff
  171. #define IDO_SHGIOI_LINK 0x0ffffffe
  172. #define IDO_SHGIOI_SLOWFILE 0x0fffffffd
  173. #define IDO_SHGIOI_DEFAULT 0x0fffffffc
  174. SHSTDAPI_(int) SHGetIconOverlayIndexA (LPCSTR pszIconPath, int iIconIndex);
  175. SHSTDAPI_(int) SHGetIconOverlayIndexW (LPCWSTR pszIconPath, int iIconIndex);
  176. #define SHGetIconOverlayIndex __MINGW_NAME_AW(SHGetIconOverlayIndex)
  177. typedef enum {
  178. SLDF_DEFAULT = 0x00000000,
  179. SLDF_HAS_ID_LIST = 0x00000001,
  180. SLDF_HAS_LINK_INFO = 0x00000002,
  181. SLDF_HAS_NAME = 0x00000004,
  182. SLDF_HAS_RELPATH = 0x00000008,
  183. SLDF_HAS_WORKINGDIR = 0x00000010,
  184. SLDF_HAS_ARGS = 0x00000020,
  185. SLDF_HAS_ICONLOCATION = 0x00000040,
  186. SLDF_UNICODE = 0x00000080,
  187. SLDF_FORCE_NO_LINKINFO = 0x00000100,
  188. SLDF_HAS_EXP_SZ = 0x00000200,
  189. SLDF_RUN_IN_SEPARATE = 0x00000400,
  190. #if NTDDI_VERSION < 0x06000000
  191. SLDF_HAS_LOGO3ID = 0x00000800,
  192. #endif
  193. SLDF_HAS_DARWINID = 0x00001000,
  194. SLDF_RUNAS_USER = 0x00002000,
  195. SLDF_HAS_EXP_ICON_SZ = 0x00004000,
  196. SLDF_NO_PIDL_ALIAS = 0x00008000,
  197. SLDF_FORCE_UNCNAME = 0x00010000,
  198. SLDF_RUN_WITH_SHIMLAYER = 0x00020000,
  199. #if NTDDI_VERSION >= 0x06000000
  200. SLDF_FORCE_NO_LINKTRACK = 0x00040000,
  201. SLDF_ENABLE_TARGET_METADATA = 0x00080000,
  202. SLDF_DISABLE_LINK_PATH_TRACKING = 0x00100000,
  203. SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING = 0x00200000,
  204. #if NTDDI_VERSION >= 0x06010000
  205. SLDF_NO_KF_ALIAS = 0x00400000,
  206. SLDF_ALLOW_LINK_TO_LINK = 0x00800000,
  207. SLDF_UNALIAS_ON_SAVE = 0x01000000,
  208. SLDF_PREFER_ENVIRONMENT_PATH = 0x02000000,
  209. SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET = 0x04000000,
  210. #if NTDDI_VERSION >= 0x06020000
  211. SLDF_PERSIST_VOLUME_ID_RELATIVE = 0x08000000,
  212. SLDF_VALID = 0x0ffff7ff,
  213. #else
  214. SLDF_VALID = 0x07fff7ff,
  215. #endif
  216. #else
  217. SLDF_VALID = 0x003ff7ff,
  218. #endif
  219. #endif
  220. SLDF_RESERVED = (int) 0x80000000
  221. } SHELL_LINK_DATA_FLAGS;
  222. DEFINE_ENUM_FLAG_OPERATORS (SHELL_LINK_DATA_FLAGS);
  223. typedef struct tagDATABLOCKHEADER {
  224. DWORD cbSize;
  225. DWORD dwSignature;
  226. } DATABLOCK_HEADER,*LPDATABLOCK_HEADER,*LPDBLIST;
  227. #ifdef LF_FACESIZE
  228. typedef struct {
  229. #ifdef __cplusplus
  230. DATABLOCK_HEADER dbh;
  231. #else
  232. /* DATABLOCK_HEADER DUMMYSTRUCTNAME; */
  233. __C89_NAMELESS struct {
  234. DWORD cbSize;
  235. DWORD dwSignature;
  236. };
  237. #endif
  238. WORD wFillAttribute;
  239. WORD wPopupFillAttribute;
  240. COORD dwScreenBufferSize;
  241. COORD dwWindowSize;
  242. COORD dwWindowOrigin;
  243. DWORD nFont;
  244. DWORD nInputBufferSize;
  245. COORD dwFontSize;
  246. UINT uFontFamily;
  247. UINT uFontWeight;
  248. WCHAR FaceName[LF_FACESIZE];
  249. UINT uCursorSize;
  250. WINBOOL bFullScreen;
  251. WINBOOL bQuickEdit;
  252. WINBOOL bInsertMode;
  253. WINBOOL bAutoPosition;
  254. UINT uHistoryBufferSize;
  255. UINT uNumberOfHistoryBuffers;
  256. WINBOOL bHistoryNoDup;
  257. COLORREF ColorTable[16];
  258. } NT_CONSOLE_PROPS,*LPNT_CONSOLE_PROPS;
  259. #define NT_CONSOLE_PROPS_SIG 0xa0000002
  260. #endif
  261. typedef struct {
  262. #ifdef __cplusplus
  263. DATABLOCK_HEADER dbh;
  264. #else
  265. /* DATABLOCK_HEADER DUMMYSTRUCTNAME; */
  266. __C89_NAMELESS struct {
  267. DWORD cbSize;
  268. DWORD dwSignature;
  269. };
  270. #endif
  271. UINT uCodePage;
  272. } NT_FE_CONSOLE_PROPS,*LPNT_FE_CONSOLE_PROPS;
  273. #define NT_FE_CONSOLE_PROPS_SIG 0xa0000004
  274. typedef struct {
  275. #ifdef __cplusplus
  276. DATABLOCK_HEADER dbh;
  277. #else
  278. /* DATABLOCK_HEADER DUMMYSTRUCTNAME; */
  279. __C89_NAMELESS struct {
  280. DWORD cbSize;
  281. DWORD dwSignature;
  282. };
  283. #endif
  284. CHAR szDarwinID[MAX_PATH];
  285. WCHAR szwDarwinID[MAX_PATH];
  286. } EXP_DARWIN_LINK,*LPEXP_DARWIN_LINK;
  287. #define EXP_DARWIN_ID_SIG 0xa0000006
  288. #define EXP_SPECIAL_FOLDER_SIG 0xa0000005
  289. typedef struct {
  290. DWORD cbSize;
  291. DWORD dwSignature;
  292. DWORD idSpecialFolder;
  293. DWORD cbOffset;
  294. } EXP_SPECIAL_FOLDER,*LPEXP_SPECIAL_FOLDER;
  295. typedef struct {
  296. DWORD cbSize;
  297. DWORD dwSignature;
  298. CHAR szTarget[MAX_PATH];
  299. WCHAR swzTarget[MAX_PATH];
  300. } EXP_SZ_LINK,*LPEXP_SZ_LINK;
  301. #define EXP_SZ_LINK_SIG 0xa0000001
  302. #define EXP_SZ_ICON_SIG 0xa0000007
  303. #if NTDDI_VERSION >= 0x06000000
  304. typedef struct {
  305. DWORD cbSize;
  306. DWORD dwSignature;
  307. BYTE abPropertyStorage[1];
  308. } EXP_PROPERTYSTORAGE;
  309. #define EXP_PROPERTYSTORAGE_SIG 0xa0000009
  310. #endif
  311. #ifdef _INC_SHELLAPI
  312. #undef INTERFACE
  313. #define INTERFACE IShellExecuteHookA
  314. DECLARE_INTERFACE_IID_ (IShellExecuteHookA, IUnknown, "000214f5-0000-0000-c000-000000000046") {
  315. STDMETHOD(Execute) (THIS_ LPSHELLEXECUTEINFOA pei) PURE;
  316. };
  317. #undef INTERFACE
  318. #define INTERFACE IShellExecuteHookW
  319. DECLARE_INTERFACE_IID_ (IShellExecuteHookW, IUnknown, "000214fb-0000-0000-c000-000000000046") {
  320. STDMETHOD(Execute) (THIS_ LPSHELLEXECUTEINFOW pei) PURE;
  321. };
  322. #define IShellExecuteHook __MINGW_NAME_AW(IShellExecuteHook)
  323. #define IShellExecuteHookVtbl __MINGW_NAME_AW_EXT(IShellExecuteHook,Vtbl)
  324. #endif
  325. #undef INTERFACE
  326. #define INTERFACE IURLSearchHook
  327. DECLARE_INTERFACE_IID_ (IURLSearchHook, IUnknown, "ac60f6a0-0fd9-11d0-99cb-00c04fd64497") {
  328. STDMETHOD(Translate) (THIS_ PWSTR pwszSearchURL, DWORD cchBufferSize) PURE;
  329. };
  330. #undef INTERFACE
  331. #define INTERFACE ISearchContext
  332. DECLARE_INTERFACE_IID_ (ISearchContext, IUnknown, "09F656A2-41AF-480C-88F7-16CC0D164615") {
  333. STDMETHOD(GetSearchUrl) (THIS_ BSTR *pbstrSearchUrl) PURE;
  334. STDMETHOD(GetSearchText) (THIS_ BSTR *pbstrSearchText) PURE;
  335. STDMETHOD(GetSearchStyle) (THIS_ DWORD *pdwSearchStyle) PURE;
  336. };
  337. #undef INTERFACE
  338. #define INTERFACE IURLSearchHook2
  339. DECLARE_INTERFACE_IID_ (IURLSearchHook2, IURLSearchHook, "5ee44da4-6d32-46e3-86bc-07540dedd0e0") {
  340. STDMETHOD(TranslateWithSearchContext) (THIS_ PWSTR pwszSearchURL, DWORD cchBufferSize, ISearchContext *pSearchContext) PURE;
  341. };
  342. #undef INTERFACE
  343. #define INTERFACE INewShortcutHookA
  344. DECLARE_INTERFACE_IID_ (INewShortcutHookA, IUnknown, "000214e1-0000-0000-c000-000000000046") {
  345. STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
  346. STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  347. STDMETHOD_(ULONG, Release) (THIS) PURE;
  348. STDMETHOD(SetReferent) (THIS_ PCSTR pcszReferent, HWND hwnd) PURE;
  349. STDMETHOD(GetReferent) (THIS_ PSTR pszReferent, int cchReferent) PURE;
  350. STDMETHOD(SetFolder) (THIS_ PCSTR pcszFolder) PURE;
  351. STDMETHOD(GetFolder) (THIS_ PSTR pszFolder, int cchFolder) PURE;
  352. STDMETHOD(GetName) (THIS_ PSTR pszName, int cchName) PURE;
  353. STDMETHOD(GetExtension) (THIS_ PSTR pszExtension, int cchExtension) PURE;
  354. };
  355. #undef INTERFACE
  356. #define INTERFACE INewShortcutHookW
  357. DECLARE_INTERFACE_IID_ (INewShortcutHookW, IUnknown, "000214f7-0000-0000-c000-000000000046") {
  358. STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
  359. STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  360. STDMETHOD_(ULONG, Release) (THIS) PURE;
  361. STDMETHOD(SetReferent) (THIS_ PCWSTR pcszReferent, HWND hwnd) PURE;
  362. STDMETHOD(GetReferent) (THIS_ PWSTR pszReferent, int cchReferent) PURE;
  363. STDMETHOD(SetFolder) (THIS_ PCWSTR pcszFolder) PURE;
  364. STDMETHOD(GetFolder) (THIS_ PWSTR pszFolder, int cchFolder) PURE;
  365. STDMETHOD(GetName) (THIS_ PWSTR pszName, int cchName) PURE;
  366. STDMETHOD(GetExtension) (THIS_ PWSTR pszExtension, int cchExtension) PURE;
  367. };
  368. #define INewShortcutHook __MINGW_NAME_AW(INewShortcutHook)
  369. #define INewShortcutHookVtbl __MINGW_NAME_AW_EXT(INewShortcutHook,Vtbl)
  370. #undef INTERFACE
  371. #define INTERFACE ICopyHookA
  372. DECLARE_INTERFACE_IID_ (ICopyHookA, IUnknown, "000214EF-0000-0000-c000-000000000046") {
  373. STDMETHOD_(UINT, CopyCallback) (THIS_ HWND hwnd, UINT wFunc, UINT wFlags, PCSTR pszSrcFile, DWORD dwSrcAttribs, PCSTR pszDestFile, DWORD dwDestAttribs) PURE;
  374. };
  375. typedef ICopyHookA *LPCOPYHOOKA;
  376. #undef INTERFACE
  377. #define INTERFACE ICopyHookW
  378. DECLARE_INTERFACE_IID_ (ICopyHookW, IUnknown, "000214FC-0000-0000-c000-000000000046") {
  379. STDMETHOD_(UINT, CopyCallback) (THIS_ HWND hwnd, UINT wFunc, UINT wFlags, PCWSTR pszSrcFile, DWORD dwSrcAttribs, PCWSTR pszDestFile, DWORD dwDestAttribs) PURE;
  380. };
  381. typedef ICopyHookW *LPCOPYHOOKW;
  382. #define ICopyHook __MINGW_NAME_AW(ICopyHook)
  383. #define ICopyHookVtbl __MINGW_NAME_AW_EXT(ICopyHook,Vtbl)
  384. #define LPCOPYHOOK __MINGW_NAME_AW(LPCOPYHOOK)
  385. #if NTDDI_VERSION < 0x05000000
  386. #undef INTERFACE
  387. #define INTERFACE IFileViewerSite
  388. DECLARE_INTERFACE_IID_ (IFileViewerSite, IUnknown, "000214f3-0000-0000-c000-000000000046") {
  389. STDMETHOD(SetPinnedWindow) (THIS_ HWND hwnd) PURE;
  390. STDMETHOD(GetPinnedWindow) (THIS_ HWND *phwnd) PURE;
  391. };
  392. typedef IFileViewerSite *LPFILEVIEWERSITE;
  393. #include <pshpack8.h>
  394. typedef struct {
  395. DWORD cbSize;
  396. HWND hwndOwner;
  397. int iShow;
  398. DWORD dwFlags;
  399. RECT rect;
  400. IUnknown *punkRel;
  401. OLECHAR strNewFile[MAX_PATH];
  402. } FVSHOWINFO,*LPFVSHOWINFO;
  403. #include <poppack.h>
  404. #define FVSIF_RECT 0x00000001
  405. #define FVSIF_PINNED 0x00000002
  406. #define FVSIF_NEWFAILED 0x08000000
  407. #define FVSIF_NEWFILE 0x80000000
  408. #define FVSIF_CANVIEWIT 0x40000000
  409. #undef INTERFACE
  410. #define INTERFACE IFileViewerA
  411. DECLARE_INTERFACE_IID (IFileViewerA, "000214f0-0000-0000-c000-000000000046") {
  412. STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE;
  413. STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE;
  414. STDMETHOD(PrintTo) (THIS_ PSTR pszDriver, WINBOOL fSuppressUI) PURE;
  415. };
  416. typedef IFileViewerA *LPFILEVIEWERA;
  417. #undef INTERFACE
  418. #define INTERFACE IFileViewerW
  419. DECLARE_INTERFACE_IID (IFileViewerW, "000214f8-0000-0000-c000-000000000046") {
  420. STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE;
  421. STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE;
  422. STDMETHOD(PrintTo) (THIS_ PWSTR pszDriver, WINBOOL fSuppressUI) PURE;
  423. };
  424. typedef IFileViewerW *LPFILEVIEWERW;
  425. #define IFileViewer __MINGW_NAME_AW(IFileViewer)
  426. #define LPFILEVIEWER __MINGW_NAME_AW(LPFILEVIEWER)
  427. #endif
  428. #define FCIDM_SHVIEWFIRST 0x0000
  429. #define FCIDM_SHVIEWLAST 0x7fff
  430. #define FCIDM_BROWSERFIRST 0xa000
  431. #define FCIDM_BROWSERLAST 0xbf00
  432. #define FCIDM_GLOBALFIRST 0x8000
  433. #define FCIDM_GLOBALLAST 0x9fff
  434. #define FCIDM_MENU_FILE (FCIDM_GLOBALFIRST+0x0000)
  435. #define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
  436. #define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
  437. #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
  438. #define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
  439. #define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
  440. #define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
  441. #define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
  442. #define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
  443. #define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170)
  444. #define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0)
  445. #define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1)
  446. #define IDC_OFFLINE_HAND 103
  447. #if _WIN32_IE >= 0x0700
  448. #define IDC_PANTOOL_HAND_OPEN 104
  449. #define IDC_PANTOOL_HAND_CLOSED 105
  450. #endif
  451. #define PANE_NONE ((DWORD)-1)
  452. #define PANE_ZONE 1
  453. #define PANE_OFFLINE 2
  454. #define PANE_PRINTER 3
  455. #define PANE_SSL 4
  456. #define PANE_NAVIGATION 5
  457. #define PANE_PROGRESS 6
  458. #if _WIN32_IE >= 0x0600
  459. #define PANE_PRIVACY 7
  460. #endif
  461. SHSTDAPI_(PIDLIST_RELATIVE) ILClone (PCUIDLIST_RELATIVE pidl);
  462. SHSTDAPI_(PITEMID_CHILD) ILCloneFirst (PCUIDLIST_RELATIVE pidl);
  463. SHSTDAPI_(PIDLIST_ABSOLUTE) ILCombine (PCIDLIST_ABSOLUTE pidl1, PCUIDLIST_RELATIVE pidl2);
  464. SHSTDAPI_(void) ILFree (PIDLIST_RELATIVE pidl);
  465. SHSTDAPI_(PUIDLIST_RELATIVE) ILGetNext (PCUIDLIST_RELATIVE pidl);
  466. SHSTDAPI_(UINT) ILGetSize (PCUIDLIST_RELATIVE pidl);
  467. SHSTDAPI_(PUIDLIST_RELATIVE) ILFindChild (PIDLIST_ABSOLUTE pidlParent, PCIDLIST_ABSOLUTE pidlChild);
  468. SHSTDAPI_(PUITEMID_CHILD) ILFindLastID (PCUIDLIST_RELATIVE pidl);
  469. SHSTDAPI_(WINBOOL) ILRemoveLastID (PUIDLIST_RELATIVE pidl);
  470. SHSTDAPI_(WINBOOL) ILIsEqual (PCIDLIST_ABSOLUTE pidl1, PCIDLIST_ABSOLUTE pidl2);
  471. SHSTDAPI_(WINBOOL) ILIsParent (PCIDLIST_ABSOLUTE pidl1, PCIDLIST_ABSOLUTE pidl2, WINBOOL fImmediate);
  472. SHSTDAPI ILSaveToStream (IStream *pstm, PCUIDLIST_RELATIVE pidl);
  473. SHSTDAPI ILLoadFromStream (IStream *pstm, PIDLIST_RELATIVE *pidl);
  474. #if NTDDI_VERSION >= 0x06000000
  475. SHSTDAPI ILLoadFromStreamEx (IStream *pstm, PIDLIST_RELATIVE *pidl);
  476. #endif
  477. SHSTDAPI_(PIDLIST_ABSOLUTE) ILCreateFromPathA (PCSTR pszPath);
  478. SHSTDAPI_(PIDLIST_ABSOLUTE) ILCreateFromPathW (PCWSTR pszPath);
  479. #ifdef NO_WRAPPERS_FOR_ILCREATEFROMPATH
  480. SHSTDAPI_(PIDLIST_ABSOLUTE) ILCreateFromPath (PCTSTR pszPath);
  481. #else
  482. #define ILCreateFromPath __MINGW_NAME_AW(ILCreateFromPath)
  483. #endif
  484. SHSTDAPI SHILCreateFromPath (PCWSTR pszPath, PIDLIST_ABSOLUTE *ppidl, DWORD *rgfInOut);
  485. #define VOID_OFFSET(pv, cb) ((void *) (((BYTE *) (pv))+ (cb)))
  486. #if defined (STRICT_TYPED_ITEMIDS) && defined (__cplusplus)
  487. }
  488. inline PIDLIST_ABSOLUTE ILCloneFull(PCUIDLIST_ABSOLUTE p) { return reinterpret_cast<PIDLIST_ABSOLUTE> (ILClone (p)); }
  489. inline PITEMID_CHILD ILCloneChild(PCUITEMID_CHILD p) { return ILCloneFirst (p); }
  490. #if NTDDI_VERSION >= 0x06000000
  491. inline HRESULT ILLoadFromStreamEx(IStream *s, PIDLIST_ABSOLUTE *p) { return ILLoadFromStreamEx (s, reinterpret_cast<PIDLIST_RELATIVE *> (p)); }
  492. inline HRESULT ILLoadFromStreamEx(IStream *s, PITEMID_CHILD *p) { return ILLoadFromStreamEx (s, reinterpret_cast<PIDLIST_RELATIVE *> (p)); }
  493. #endif
  494. inline PCUIDLIST_RELATIVE ILSkip(PCUIDLIST_RELATIVE p, UINT c) { return reinterpret_cast<PCUIDLIST_RELATIVE> (VOID_OFFSET (p, c)); }
  495. inline PUIDLIST_RELATIVE ILSkip(PUIDLIST_RELATIVE p, UINT c) { return const_cast<PUIDLIST_RELATIVE> (ILSkip (const_cast<PCUIDLIST_RELATIVE> (p), c)); }
  496. inline PCUIDLIST_RELATIVE ILNext(PCUIDLIST_RELATIVE p) { return ILSkip (p, p->mkid.cb); }
  497. inline PUIDLIST_RELATIVE ILNext(PUIDLIST_RELATIVE p) { return const_cast<PUIDLIST_RELATIVE> (ILNext (const_cast<PCUIDLIST_RELATIVE> (p))); }
  498. inline WINBOOL ILIsAligned(PCUIDLIST_RELATIVE p) { return ((((DWORD_PTR) p) & (sizeof (void *) - 1)) == 0); }
  499. inline WINBOOL ILIsEmpty(PCUIDLIST_RELATIVE p) { return (!p || p->mkid.cb == 0); }
  500. inline WINBOOL ILIsChild(PCUIDLIST_RELATIVE p) { return (ILIsEmpty (p) || ILIsEmpty (ILNext (p))); }
  501. #ifdef STRICT_TYPED_ITEMIDS
  502. inline PCUIDLIST_RELATIVE ILFindChild(PCIDLIST_ABSOLUTE p, PCIDLIST_ABSOLUTE c) { return const_cast<PCUIDLIST_RELATIVE> (ILFindChild (const_cast<PIDLIST_ABSOLUTE> (p), c)); }
  503. #endif
  504. extern "C" {
  505. #else
  506. #define ILCloneFull ILClone
  507. #define ILCloneChild ILCloneFirst
  508. #define ILSkip(P, C) ((PUIDLIST_RELATIVE)VOID_OFFSET ((P),(C)))
  509. #define ILNext(P) ILSkip (P,(P)->mkid.cb)
  510. #define ILIsAligned(P) ((((DWORD_PTR) (P)) & (sizeof (void *) - 1)) == 0)
  511. #define ILIsEmpty(P) (!(P) || (P)->mkid.cb == 0)
  512. #define ILIsChild(P) (ILIsEmpty(P) || ILIsEmpty(ILNext(P)))
  513. #endif
  514. SHSTDAPI_(PIDLIST_RELATIVE) ILAppendID (PIDLIST_RELATIVE pidl, LPCSHITEMID pmkid, WINBOOL fAppend);
  515. #if NTDDI_VERSION >= 0x06000000
  516. typedef enum tagGPFIDL_FLAGS {
  517. GPFIDL_DEFAULT = 0x0,
  518. GPFIDL_ALTNAME = 0x1,
  519. GPFIDL_UNCPRINTER = 0x2
  520. };
  521. typedef int GPFIDL_FLAGS;
  522. SHSTDAPI_(WINBOOL) SHGetPathFromIDListEx (PCIDLIST_ABSOLUTE pidl, PWSTR pszPath, DWORD cchPath, GPFIDL_FLAGS uOpts);
  523. #endif
  524. SHSTDAPI_(WINBOOL) SHGetPathFromIDListA (PCIDLIST_ABSOLUTE pidl, LPSTR pszPath);
  525. SHSTDAPI_(WINBOOL) SHGetPathFromIDListW (PCIDLIST_ABSOLUTE pidl, LPWSTR pszPath);
  526. SHSTDAPI_(int) SHCreateDirectory (HWND hwnd, PCWSTR pszPath);
  527. SHSTDAPI_(int) SHCreateDirectoryExA (HWND hwnd, LPCSTR pszPath, const SECURITY_ATTRIBUTES *psa);
  528. SHSTDAPI_(int) SHCreateDirectoryExW (HWND hwnd, LPCWSTR pszPath, const SECURITY_ATTRIBUTES *psa);
  529. #define SHGetPathFromIDList __MINGW_NAME_AW(SHGetPathFromIDList)
  530. #define SHCreateDirectoryEx __MINGW_NAME_AW(SHCreateDirectoryEx)
  531. #if NTDDI_VERSION >= 0x06000000
  532. #define OFASI_EDIT 0x0001
  533. #define OFASI_OPENDESKTOP 0x0002
  534. #endif
  535. SHSTDAPI SHOpenFolderAndSelectItems (PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD dwFlags);
  536. SHSTDAPI SHCreateShellItem (PCIDLIST_ABSOLUTE pidlParent, IShellFolder *psfParent, PCUITEMID_CHILD pidl, IShellItem **ppsi);
  537. #define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT ("\\Shell Folders")
  538. #define CSIDL_DESKTOP 0x0000
  539. #define CSIDL_INTERNET 0x0001
  540. #define CSIDL_PROGRAMS 0x0002
  541. #define CSIDL_CONTROLS 0x0003
  542. #define CSIDL_PRINTERS 0x0004
  543. #define CSIDL_FAVORITES 0x0006
  544. #define CSIDL_STARTUP 0x0007
  545. #define CSIDL_RECENT 0x0008
  546. #define CSIDL_SENDTO 0x0009
  547. #define CSIDL_BITBUCKET 0x000a
  548. #define CSIDL_STARTMENU 0x000b
  549. #define CSIDL_MYDOCUMENTS CSIDL_PERSONAL
  550. #define CSIDL_DESKTOPDIRECTORY 0x0010
  551. #define CSIDL_DRIVES 0x0011
  552. #define CSIDL_NETWORK 0x0012
  553. #define CSIDL_NETHOOD 0x0013
  554. #define CSIDL_FONTS 0x0014
  555. #define CSIDL_TEMPLATES 0x0015
  556. #define CSIDL_COMMON_STARTMENU 0x0016
  557. #define CSIDL_COMMON_PROGRAMS 0x0017
  558. #define CSIDL_COMMON_STARTUP 0x0018
  559. #define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
  560. #define CSIDL_PRINTHOOD 0x001b
  561. #ifndef CSIDL_LOCAL_APPDATA
  562. #define CSIDL_LOCAL_APPDATA 0x001c
  563. #endif
  564. #define CSIDL_ALTSTARTUP 0x001d
  565. #define CSIDL_COMMON_ALTSTARTUP 0x001e
  566. #define CSIDL_COMMON_FAVORITES 0x001f
  567. #ifndef _SHFOLDER_H_
  568. #define CSIDL_INTERNET_CACHE 0x0020
  569. #define CSIDL_COOKIES 0x0021
  570. #define CSIDL_HISTORY 0x0022
  571. #define CSIDL_COMMON_APPDATA 0x0023
  572. #define CSIDL_WINDOWS 0x0024
  573. #define CSIDL_SYSTEM 0x0025
  574. #define CSIDL_PROGRAM_FILES 0x0026
  575. #endif
  576. #define CSIDL_PROFILE 0x0028
  577. #define CSIDL_SYSTEMX86 0x0029
  578. #define CSIDL_PROGRAM_FILESX86 0x002a
  579. #ifndef _SHFOLDER_H_
  580. #define CSIDL_PROGRAM_FILES_COMMON 0x002b
  581. #endif
  582. #define CSIDL_PROGRAM_FILES_COMMONX86 0x002c
  583. #define CSIDL_COMMON_TEMPLATES 0x002d
  584. #ifndef _SHFOLDER_H_
  585. #define CSIDL_COMMON_DOCUMENTS 0x002e
  586. #define CSIDL_COMMON_ADMINTOOLS 0x002f
  587. #define CSIDL_ADMINTOOLS 0x0030
  588. #endif
  589. #define CSIDL_CONNECTIONS 0x0031
  590. #define CSIDL_COMMON_MUSIC 0x0035
  591. #define CSIDL_COMMON_PICTURES 0x0036
  592. #define CSIDL_COMMON_VIDEO 0x0037
  593. #define CSIDL_RESOURCES 0x0038
  594. #ifndef _SHFOLDER_H_
  595. #define CSIDL_RESOURCES_LOCALIZED 0x0039
  596. #endif
  597. #define CSIDL_COMMON_OEM_LINKS 0x003a
  598. #define CSIDL_CDBURN_AREA 0x003b
  599. #define CSIDL_COMPUTERSNEARME 0x003d
  600. #define CSIDL_FLAG_DONT_VERIFY 0x4000
  601. #define CSIDL_FLAG_DONT_UNEXPAND 0x2000
  602. #define CSIDL_FLAG_NO_ALIAS 0x1000
  603. #define CSIDL_FLAG_PER_USER_INIT 0x0800
  604. #define CSIDL_FLAG_MASK 0xff00
  605. SHSTDAPI SHGetSpecialFolderLocation (HWND hwnd, int csidl, PIDLIST_ABSOLUTE *ppidl);
  606. SHSTDAPI_(PIDLIST_ABSOLUTE) SHCloneSpecialIDList (HWND hwnd, int csidl, WINBOOL fCreate);
  607. SHSTDAPI_(WINBOOL) SHGetSpecialFolderPathA (HWND hwnd, LPSTR pszPath, int csidl, WINBOOL fCreate);
  608. SHSTDAPI_(WINBOOL) SHGetSpecialFolderPathW (HWND hwnd, LPWSTR pszPath, int csidl, WINBOOL fCreate);
  609. SHSTDAPI_(void) SHFlushSFCache (void);
  610. SHFOLDERAPI SHGetFolderPathA (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
  611. SHSTDAPI SHGetFolderLocation (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, PIDLIST_ABSOLUTE *ppidl);
  612. SHSTDAPI SHSetFolderPathA (int csidl, HANDLE hToken, DWORD dwFlags, LPCSTR pszPath);
  613. SHSTDAPI SHSetFolderPathW (int csidl, HANDLE hToken, DWORD dwFlags, LPCWSTR pszPath);
  614. SHSTDAPI SHGetFolderPathAndSubDirA (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPCSTR pszSubDir, LPSTR pszPath);
  615. SHSTDAPI SHGetFolderPathAndSubDirW (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPCWSTR pszSubDir, LPWSTR pszPath);
  616. #define SHGetSpecialFolderPath __MINGW_NAME_AW(SHGetSpecialFolderPath)
  617. #define SHGetFolderPath __MINGW_NAME_AW(SHGetFolderPath)
  618. #define SHSetFolderPath __MINGW_NAME_AW(SHSetFolderPath)
  619. #define SHGetFolderPathAndSubDir __MINGW_NAME_AW(SHGetFolderPathAndSubDir)
  620. #if NTDDI_VERSION >= 0x06000000
  621. typedef enum {
  622. KF_FLAG_DEFAULT = 0x00000000,
  623. #if NTDDI_VERSION >= 0x06010000
  624. KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000,
  625. #endif
  626. KF_FLAG_CREATE = 0x00008000,
  627. KF_FLAG_DONT_VERIFY = 0x00004000,
  628. KF_FLAG_DONT_UNEXPAND = 0x00002000,
  629. KF_FLAG_NO_ALIAS = 0x00001000,
  630. KF_FLAG_INIT = 0x00000800,
  631. KF_FLAG_DEFAULT_PATH = 0x00000400,
  632. KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200,
  633. KF_FLAG_SIMPLE_IDLIST = 0x00000100,
  634. KF_FLAG_ALIAS_ONLY = 0x80000000
  635. } KNOWN_FOLDER_FLAG;
  636. DEFINE_ENUM_FLAG_OPERATORS (KNOWN_FOLDER_FLAG);
  637. STDAPI SHGetKnownFolderIDList (REFKNOWNFOLDERID rfid, DWORD dwFlags, HANDLE hToken, PIDLIST_ABSOLUTE *ppidl);
  638. STDAPI SHSetKnownFolderPath (REFKNOWNFOLDERID rfid, DWORD dwFlags, HANDLE hToken, PCWSTR pszPath);
  639. STDAPI SHGetKnownFolderPath (REFKNOWNFOLDERID rfid, DWORD dwFlags, HANDLE hToken, PWSTR *ppszPath);
  640. #endif
  641. #if NTDDI_VERSION >= 0x06010000
  642. STDAPI SHGetKnownFolderItem (REFKNOWNFOLDERID rfid, KNOWN_FOLDER_FLAG flags, HANDLE hToken, REFIID riid, void **ppv);
  643. #endif
  644. #define FCS_READ 0x00000001
  645. #define FCS_FORCEWRITE 0x00000002
  646. #define FCS_WRITE (FCS_READ | FCS_FORCEWRITE)
  647. #define FCS_FLAG_DRAGDROP 2
  648. #define FCSM_VIEWID 0x00000001
  649. #define FCSM_WEBVIEWTEMPLATE 0x00000002
  650. #define FCSM_INFOTIP 0x00000004
  651. #define FCSM_CLSID 0x00000008
  652. #define FCSM_ICONFILE 0x00000010
  653. #define FCSM_LOGO 0x00000020
  654. #define FCSM_FLAGS 0x00000040
  655. #if NTDDI_VERSION >= 0x06000000
  656. #include <pshpack8.h>
  657. typedef struct {
  658. DWORD dwSize;
  659. DWORD dwMask;
  660. SHELLVIEWID *pvid;
  661. LPWSTR pszWebViewTemplate;
  662. DWORD cchWebViewTemplate;
  663. LPWSTR pszWebViewTemplateVersion;
  664. LPWSTR pszInfoTip;
  665. DWORD cchInfoTip;
  666. CLSID *pclsid;
  667. DWORD dwFlags;
  668. LPWSTR pszIconFile;
  669. DWORD cchIconFile;
  670. int iIconIndex;
  671. LPWSTR pszLogo;
  672. DWORD cchLogo;
  673. } SHFOLDERCUSTOMSETTINGS,*LPSHFOLDERCUSTOMSETTINGS;
  674. #include <poppack.h>
  675. SHSTDAPI SHGetSetFolderCustomSettings (LPSHFOLDERCUSTOMSETTINGS pfcs, PCWSTR pszPath, DWORD dwReadWrite);
  676. #endif
  677. typedef int (CALLBACK *BFFCALLBACK) (HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
  678. #include <pshpack8.h>
  679. typedef struct _browseinfoA {
  680. HWND hwndOwner;
  681. PCIDLIST_ABSOLUTE pidlRoot;
  682. LPSTR pszDisplayName;
  683. LPCSTR lpszTitle;
  684. UINT ulFlags;
  685. BFFCALLBACK lpfn;
  686. LPARAM lParam;
  687. int iImage;
  688. } BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
  689. typedef struct _browseinfoW {
  690. HWND hwndOwner;
  691. PCIDLIST_ABSOLUTE pidlRoot;
  692. LPWSTR pszDisplayName;
  693. LPCWSTR lpszTitle;
  694. UINT ulFlags;
  695. BFFCALLBACK lpfn;
  696. LPARAM lParam;
  697. int iImage;
  698. } BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
  699. #include <poppack.h>
  700. #define BROWSEINFO __MINGW_NAME_AW(BROWSEINFO)
  701. #define PBROWSEINFO __MINGW_NAME_AW(PBROWSEINFO)
  702. #define LPBROWSEINFO __MINGW_NAME_AW(LPBROWSEINFO)
  703. #define BIF_RETURNONLYFSDIRS 0x00000001
  704. #define BIF_DONTGOBELOWDOMAIN 0x00000002
  705. #define BIF_STATUSTEXT 0x00000004
  706. #define BIF_RETURNFSANCESTORS 0x00000008
  707. #define BIF_EDITBOX 0x00000010
  708. #define BIF_VALIDATE 0x00000020
  709. #define BIF_NEWDIALOGSTYLE 0x00000040
  710. #define BIF_USENEWUI (BIF_NEWDIALOGSTYLE | BIF_EDITBOX)
  711. #define BIF_BROWSEINCLUDEURLS 0x00000080
  712. #define BIF_UAHINT 0x00000100
  713. #define BIF_NONEWFOLDERBUTTON 0x00000200
  714. #define BIF_NOTRANSLATETARGETS 0x00000400
  715. #define BIF_BROWSEFORCOMPUTER 0x00001000
  716. #define BIF_BROWSEFORPRINTER 0x00002000
  717. #define BIF_BROWSEINCLUDEFILES 0x00004000
  718. #define BIF_SHAREABLE 0x00008000
  719. #define BIF_BROWSEFILEJUNCTIONS 0x00010000
  720. #define BFFM_INITIALIZED 1
  721. #define BFFM_SELCHANGED 2
  722. #define BFFM_VALIDATEFAILEDA 3
  723. #define BFFM_VALIDATEFAILEDW 4
  724. #define BFFM_IUNKNOWN 5
  725. #define BFFM_SETSTATUSTEXTA (WM_USER + 100)
  726. #define BFFM_ENABLEOK (WM_USER + 101)
  727. #define BFFM_SETSELECTIONA (WM_USER + 102)
  728. #define BFFM_SETSELECTIONW (WM_USER + 103)
  729. #define BFFM_SETSTATUSTEXTW (WM_USER + 104)
  730. #define BFFM_SETOKTEXT (WM_USER + 105)
  731. #define BFFM_SETEXPANDED (WM_USER + 106)
  732. SHSTDAPI_(PIDLIST_ABSOLUTE) SHBrowseForFolderA (LPBROWSEINFOA lpbi);
  733. SHSTDAPI_(PIDLIST_ABSOLUTE) SHBrowseForFolderW (LPBROWSEINFOW lpbi);
  734. #define SHBrowseForFolder __MINGW_NAME_AW(SHBrowseForFolder)
  735. #define BFFM_SETSTATUSTEXT __MINGW_NAME_AW(BFFM_SETSTATUSTEXT)
  736. #define BFFM_SETSELECTION __MINGW_NAME_AW(BFFM_SETSELECTION)
  737. #define BFFM_VALIDATEFAILED __MINGW_NAME_AW(BFFM_VALIDATEFAILED)
  738. SHSTDAPI SHLoadInProc (REFCLSID rclsid);
  739. enum {
  740. ISHCUTCMDID_DOWNLOADICON = 0,
  741. ISHCUTCMDID_INTSHORTCUTCREATE = 1
  742. #if _WIN32_IE >= 0x0700
  743. , ISHCUTCMDID_COMMITHISTORY = 2,
  744. ISHCUTCMDID_SETUSERAWURL = 3
  745. #endif
  746. };
  747. #define CMDID_INTSHORTCUTCREATE ISHCUTCMDID_INTSHORTCUTCREATE
  748. #define STR_PARSE_WITH_PROPERTIES L"ParseWithProperties"
  749. #define STR_PARSE_PARTIAL_IDLIST L"ParseOriginalItem"
  750. SHSTDAPI SHGetDesktopFolder (IShellFolder **ppshf);
  751. #undef INTERFACE
  752. #define INTERFACE IShellDetails
  753. DECLARE_INTERFACE_IID_ (IShellDetails, IUnknown, "000214EC-0000-0000-c000-000000000046") {
  754. STDMETHOD(GetDetailsOf) (THIS_ PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *pDetails) PURE;
  755. STDMETHOD(ColumnClick) (THIS_ UINT iColumn) PURE;
  756. };
  757. #undef INTERFACE
  758. #define INTERFACE IObjMgr
  759. DECLARE_INTERFACE_IID_ (IObjMgr, IUnknown, "00BB2761-6A77-11D0-A535-00C04FD7D062") {
  760. STDMETHOD(Append) (THIS_ IUnknown *punk) PURE;
  761. STDMETHOD(Remove) (THIS_ IUnknown *punk) PURE;
  762. };
  763. #undef INTERFACE
  764. #define INTERFACE ICurrentWorkingDirectory
  765. DECLARE_INTERFACE_IID_ (ICurrentWorkingDirectory, IUnknown, "91956D21-9276-11d1-921A-006097DF5BD4") {
  766. STDMETHOD(GetDirectory) (THIS_ PWSTR pwzPath, DWORD cchSize) PURE;
  767. STDMETHOD(SetDirectory) (THIS_ PCWSTR pwzPath) PURE;
  768. };
  769. #undef INTERFACE
  770. #define INTERFACE IACList
  771. DECLARE_INTERFACE_IID_ (IACList, IUnknown, "77A130B0-94FD-11D0-A544-00C04FD7d062") {
  772. STDMETHOD(Expand) (THIS_ PCWSTR pszExpand) PURE;
  773. };
  774. #undef INTERFACE
  775. #define INTERFACE IACList2
  776. typedef enum _tagAUTOCOMPLETELISTOPTIONS {
  777. ACLO_NONE = 0,
  778. ACLO_CURRENTDIR = 1,
  779. ACLO_MYCOMPUTER = 2,
  780. ACLO_DESKTOP = 4,
  781. ACLO_FAVORITES = 8,
  782. ACLO_FILESYSONLY = 16
  783. #if _WIN32_IE >= 0x0600
  784. , ACLO_FILESYSDIRS = 32
  785. #endif
  786. #if _WIN32_IE >= 0x0700
  787. , ACLO_VIRTUALNAMESPACE = 64
  788. #endif
  789. } AUTOCOMPLETELISTOPTIONS;
  790. DECLARE_INTERFACE_IID_ (IACList2, IACList, "470141a0-5186-11d2-bbb6-0060977b464c") {
  791. STDMETHOD(SetOptions) (THIS_ DWORD dwFlag) PURE;
  792. STDMETHOD(GetOptions) (THIS_ DWORD *pdwFlag) PURE;
  793. };
  794. #define PROGDLG_NORMAL 0x00000000
  795. #define PROGDLG_MODAL 0x00000001
  796. #define PROGDLG_AUTOTIME 0x00000002
  797. #define PROGDLG_NOTIME 0x00000004
  798. #define PROGDLG_NOMINIMIZE 0x00000008
  799. #define PROGDLG_NOPROGRESSBAR 0x00000010
  800. #if _WIN32_IE >= 0x0700
  801. #define PROGDLG_MARQUEEPROGRESS 0x00000020
  802. #define PROGDLG_NOCANCEL 0x00000040
  803. #endif
  804. #define PDTIMER_RESET 0x00000001
  805. #if _WIN32_IE >= 0x0700
  806. #define PDTIMER_PAUSE 0x00000002
  807. #define PDTIMER_RESUME 0x00000003
  808. #endif
  809. #undef INTERFACE
  810. #define INTERFACE IProgressDialog
  811. DECLARE_INTERFACE_IID_ (IProgressDialog, IUnknown, "EBBC7C04-315E-11d2-B62F-006097DF5BD4") {
  812. STDMETHOD(StartProgressDialog) (THIS_ HWND hwndParent, IUnknown *punkEnableModless, DWORD dwFlags, LPCVOID pvResevered) PURE;
  813. STDMETHOD(StopProgressDialog) (THIS) PURE;
  814. STDMETHOD(SetTitle) (THIS_ PCWSTR pwzTitle) PURE;
  815. STDMETHOD(SetAnimation) (THIS_ HINSTANCE hInstAnimation, UINT idAnimation) PURE;
  816. STDMETHOD_(WINBOOL, HasUserCancelled) (THIS) PURE;
  817. STDMETHOD(SetProgress) (THIS_ DWORD dwCompleted, DWORD dwTotal) PURE;
  818. STDMETHOD(SetProgress64) (THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE;
  819. STDMETHOD(SetLine) (THIS_ DWORD dwLineNum, PCWSTR pwzString, WINBOOL fCompactPath, LPCVOID pvResevered) PURE;
  820. STDMETHOD(SetCancelMsg) (THIS_ PCWSTR pwzCancelMsg, LPCVOID pvResevered) PURE;
  821. STDMETHOD(Timer) (THIS_ DWORD dwTimerAction, LPCVOID pvResevered) PURE;
  822. };
  823. #undef INTERFACE
  824. #define INTERFACE IDockingWindowSite
  825. DECLARE_INTERFACE_IID_ (IDockingWindowSite, IOleWindow, "2a342fc2-7b26-11d0-8ca9-00a0c92dbfe8") {
  826. STDMETHOD(GetBorderDW) (THIS_ IUnknown *punkObj, RECT *prcBorder) PURE;
  827. STDMETHOD(RequestBorderSpaceDW) (THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE;
  828. STDMETHOD(SetBorderSpaceDW) (THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE;
  829. };
  830. #define DWFRF_NORMAL 0x0000
  831. #define DWFRF_DELETECONFIGDATA 0x0001
  832. #define DWFAF_HIDDEN 0x1
  833. #define DWFAF_GROUP1 0x2
  834. #define DWFAF_GROUP2 0x4
  835. #define DWFAF_AUTOHIDE 0x10
  836. #undef INTERFACE
  837. #define INTERFACE IDockingWindowFrame
  838. DECLARE_INTERFACE_IID_ (IDockingWindowFrame, IOleWindow, "47d2657a-7b27-11d0-8ca9-00a0c92dbfe8") {
  839. STDMETHOD(AddToolbar) (THIS_ IUnknown *punkSrc, PCWSTR pwszItem, DWORD dwAddFlags) PURE;
  840. STDMETHOD(RemoveToolbar) (THIS_ IUnknown *punkSrc, DWORD dwRemoveFlags) PURE;
  841. STDMETHOD(FindToolbar) (THIS_ PCWSTR pwszItem, REFIID riid, void **ppv) PURE;
  842. };
  843. #undef INTERFACE
  844. #define INTERFACE IThumbnailCapture
  845. DECLARE_INTERFACE_IID_ (IThumbnailCapture, IUnknown, "4ea39266-7211-409f-b622-f63dbd16c533") {
  846. STDMETHOD(CaptureThumbnail) (THIS_ const SIZE *pMaxSize, IUnknown *pHTMLDoc2, HBITMAP *phbmThumbnail) PURE;
  847. };
  848. typedef IThumbnailCapture *LPTHUMBNAILCAPTURE;
  849. #if (NTDDI_VERSION >= 0x05000000 && NTDDI_VERSION < 0x06000000)
  850. #include <pshpack8.h>
  851. typedef struct _EnumImageStoreDATAtag {
  852. WCHAR szPath[MAX_PATH];
  853. FILETIME ftTimeStamp;
  854. } ENUMSHELLIMAGESTOREDATA,*PENUMSHELLIMAGESTOREDATA;
  855. #include <poppack.h>
  856. #undef INTERFACE
  857. #define INTERFACE IEnumShellImageStore
  858. DECLARE_INTERFACE_IID_ (IEnumShellImageStore, IUnknown, "6DFD582B-92E3-11D1-98A3-00C04FB687DA") {
  859. STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
  860. STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  861. STDMETHOD_(ULONG, Release) (THIS) PURE;
  862. STDMETHOD(Reset) (THIS) PURE;
  863. STDMETHOD(Next) (THIS_ ULONG celt, PENUMSHELLIMAGESTOREDATA *prgElt, ULONG *pceltFetched) PURE;
  864. STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  865. STDMETHOD(Clone) (THIS_ IEnumShellImageStore **ppEnum) PURE;
  866. };
  867. typedef IEnumShellImageStore *LPENUMSHELLIMAGESTORE;
  868. #define SHIMSTCAPFLAG_LOCKABLE 0x0001
  869. #define SHIMSTCAPFLAG_PURGEABLE 0x0002
  870. #undef INTERFACE
  871. #define INTERFACE IShellImageStore
  872. DECLARE_INTERFACE_IID_ (IShellImageStore, IUnknown, "48C8118C-B924-11D1-98D5-00C04FB687DA") {
  873. STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
  874. STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  875. STDMETHOD_(ULONG, Release) (THIS) PURE;
  876. STDMETHOD(Open) (THIS_ DWORD dwMode, DWORD *pdwLock) PURE;
  877. STDMETHOD(Create) (THIS_ DWORD dwMode, DWORD *pdwLock) PURE;
  878. STDMETHOD(ReleaseLock) (THIS_ DWORD const *pdwLock) PURE;
  879. STDMETHOD(Close) (THIS_ DWORD const *pdwLock) PURE;
  880. STDMETHOD(Commit) (THIS_ DWORD const *pdwLock) PURE;
  881. STDMETHOD(IsLocked) (THIS) PURE;
  882. STDMETHOD(GetMode) (THIS_ DWORD *pdwMode) PURE;
  883. STDMETHOD(GetCapabilities) (THIS_ DWORD *pdwCapMask) PURE;
  884. STDMETHOD(AddEntry) (THIS_ PCWSTR pszName, const FILETIME *pftTimeStamp, DWORD dwMode, HBITMAP hImage) PURE;
  885. STDMETHOD(GetEntry) (THIS_ PCWSTR pszName, DWORD dwMode, HBITMAP *phImage) PURE;
  886. STDMETHOD(DeleteEntry) (THIS_ PCWSTR pszName) PURE;
  887. STDMETHOD(IsEntryInStore) (THIS_ PCWSTR pszName, FILETIME *pftTimeStamp) PURE;
  888. STDMETHOD(Enum) (THIS_ LPENUMSHELLIMAGESTORE *ppEnum) PURE;
  889. };
  890. typedef IShellImageStore *LPSHELLIMAGESTORE;
  891. #endif
  892. #define ISFB_MASK_STATE 0x00000001
  893. #define ISFB_MASK_BKCOLOR 0x00000002
  894. #define ISFB_MASK_VIEWMODE 0x00000004
  895. #define ISFB_MASK_SHELLFOLDER 0x00000008
  896. #define ISFB_MASK_IDLIST 0x00000010
  897. #define ISFB_MASK_COLORS 0x00000020
  898. #define ISFB_STATE_DEFAULT 0x00000000
  899. #define ISFB_STATE_DEBOSSED 0x00000001
  900. #define ISFB_STATE_ALLOWRENAME 0x00000002
  901. #define ISFB_STATE_NOSHOWTEXT 0x00000004
  902. #define ISFB_STATE_CHANNELBAR 0x00000010
  903. #define ISFB_STATE_QLINKSMODE 0x00000020
  904. #define ISFB_STATE_FULLOPEN 0x00000040
  905. #define ISFB_STATE_NONAMESORT 0x00000080
  906. #define ISFB_STATE_BTNMINSIZE 0x00000100
  907. #define ISFBVIEWMODE_SMALLICONS 0x0001
  908. #define ISFBVIEWMODE_LARGEICONS 0x0002
  909. #if _WIN32_IE < 0x0700
  910. #define ISFBVIEWMODE_LOGOS 0x0003
  911. #endif
  912. #include <pshpack8.h>
  913. typedef struct {
  914. DWORD dwMask;
  915. DWORD dwStateMask;
  916. DWORD dwState;
  917. COLORREF crBkgnd;
  918. COLORREF crBtnLt;
  919. COLORREF crBtnDk;
  920. WORD wViewMode;
  921. WORD wAlign;
  922. IShellFolder *psf;
  923. PIDLIST_ABSOLUTE pidl;
  924. } BANDINFOSFB,*PBANDINFOSFB;
  925. #include <poppack.h>
  926. #undef INTERFACE
  927. #define INTERFACE IShellFolderBand
  928. DECLARE_INTERFACE_IID_ (IShellFolderBand, IUnknown, "7FE80CC8-C247-11d0-B93A-00A0C90312E1") {
  929. STDMETHOD(InitializeSFB) (THIS_ IShellFolder *psf, PCIDLIST_ABSOLUTE pidl) PURE;
  930. STDMETHOD(SetBandInfoSFB) (THIS_ PBANDINFOSFB pbi) PURE;
  931. STDMETHOD(GetBandInfoSFB) (THIS_ PBANDINFOSFB pbi) PURE;
  932. };
  933. enum {
  934. SFBID_PIDLCHANGED,
  935. };
  936. #undef INTERFACE
  937. #define INTERFACE IDeskBarClient
  938. DECLARE_INTERFACE_IID_ (IDeskBarClient, IOleWindow, "EB0FE175-1A3A-11D0-89B3-00A0C90A90AC") {
  939. STDMETHOD(SetDeskBarSite) (THIS_ IUnknown *punkSite) PURE;
  940. STDMETHOD(SetModeDBC) (THIS_ DWORD dwMode) PURE;
  941. STDMETHOD(UIActivateDBC) (THIS_ DWORD dwState) PURE;
  942. STDMETHOD(GetSize) (THIS_ DWORD dwWhich, LPRECT prc) PURE;
  943. };
  944. #define DBC_GS_IDEAL 0
  945. #define DBC_GS_SIZEDOWN 1
  946. #define DBC_HIDE 0
  947. #define DBC_SHOW 1
  948. #define DBC_SHOWOBSCURE 2
  949. enum {
  950. DBCID_EMPTY = 0,
  951. DBCID_ONDRAG = 1,
  952. DBCID_CLSIDOFBAR = 2,
  953. DBCID_RESIZE = 3,
  954. DBCID_GETBAR = 4
  955. };
  956. #ifdef _WININET_
  957. typedef struct _tagWALLPAPEROPT {
  958. DWORD dwSize;
  959. DWORD dwStyle;
  960. } WALLPAPEROPT;
  961. typedef WALLPAPEROPT *LPWALLPAPEROPT;
  962. typedef const WALLPAPEROPT *LPCWALLPAPEROPT;
  963. typedef struct _tagCOMPONENTSOPT {
  964. DWORD dwSize;
  965. WINBOOL fEnableComponents;
  966. WINBOOL fActiveDesktop;
  967. } COMPONENTSOPT;
  968. typedef COMPONENTSOPT *LPCOMPONENTSOPT;
  969. typedef const COMPONENTSOPT *LPCCOMPONENTSOPT;
  970. typedef struct _tagCOMPPOS {
  971. DWORD dwSize;
  972. int iLeft;
  973. int iTop;
  974. DWORD dwWidth;
  975. DWORD dwHeight;
  976. int izIndex;
  977. WINBOOL fCanResize;
  978. WINBOOL fCanResizeX;
  979. WINBOOL fCanResizeY;
  980. int iPreferredLeftPercent;
  981. int iPreferredTopPercent;
  982. } COMPPOS;
  983. typedef COMPPOS *LPCOMPPOS;
  984. typedef const COMPPOS *LPCCOMPPOS;
  985. typedef struct _tagCOMPSTATEINFO {
  986. DWORD dwSize;
  987. int iLeft;
  988. int iTop;
  989. DWORD dwWidth;
  990. DWORD dwHeight;
  991. DWORD dwItemState;
  992. } COMPSTATEINFO;
  993. typedef COMPSTATEINFO *LPCOMPSTATEINFO;
  994. typedef const COMPSTATEINFO *LPCCOMPSTATEINFO;
  995. #define COMPONENT_TOP (0x3fffffff)
  996. #define COMP_TYPE_HTMLDOC 0
  997. #define COMP_TYPE_PICTURE 1
  998. #define COMP_TYPE_WEBSITE 2
  999. #define COMP_TYPE_CONTROL 3
  1000. #define COMP_TYPE_CFHTML 4
  1001. #define COMP_TYPE_MAX 4
  1002. typedef struct _tagIE4COMPONENT {
  1003. DWORD dwSize;
  1004. DWORD dwID;
  1005. int iComponentType;
  1006. WINBOOL fChecked;
  1007. WINBOOL fDirty;
  1008. WINBOOL fNoScroll;
  1009. COMPPOS cpPos;
  1010. WCHAR wszFriendlyName[MAX_PATH];
  1011. WCHAR wszSource[INTERNET_MAX_URL_LENGTH];
  1012. WCHAR wszSubscribedURL[INTERNET_MAX_URL_LENGTH];
  1013. } IE4COMPONENT;
  1014. typedef IE4COMPONENT *LPIE4COMPONENT;
  1015. typedef const IE4COMPONENT *LPCIE4COMPONENT;
  1016. typedef struct _tagCOMPONENT {
  1017. DWORD dwSize;
  1018. DWORD dwID;
  1019. int iComponentType;
  1020. WINBOOL fChecked;
  1021. WINBOOL fDirty;
  1022. WINBOOL fNoScroll;
  1023. COMPPOS cpPos;
  1024. WCHAR wszFriendlyName[MAX_PATH];
  1025. WCHAR wszSource[INTERNET_MAX_URL_LENGTH];
  1026. WCHAR wszSubscribedURL[INTERNET_MAX_URL_LENGTH];
  1027. DWORD dwCurItemState;
  1028. COMPSTATEINFO csiOriginal;
  1029. COMPSTATEINFO csiRestored;
  1030. } COMPONENT;
  1031. typedef COMPONENT *LPCOMPONENT;
  1032. typedef const COMPONENT *LPCCOMPONENT;
  1033. #define IS_NORMAL 0x00000001
  1034. #define IS_FULLSCREEN 0x00000002
  1035. #define IS_SPLIT 0x00000004
  1036. #define IS_VALIDSIZESTATEBITS (IS_NORMAL | IS_SPLIT | IS_FULLSCREEN)
  1037. #define IS_VALIDSTATEBITS (IS_NORMAL | IS_SPLIT | IS_FULLSCREEN | 0x80000000 | 0x40000000)
  1038. #define AD_APPLY_SAVE 0x00000001
  1039. #define AD_APPLY_HTMLGEN 0x00000002
  1040. #define AD_APPLY_REFRESH 0x00000004
  1041. #define AD_APPLY_ALL (AD_APPLY_SAVE | AD_APPLY_HTMLGEN | AD_APPLY_REFRESH)
  1042. #define AD_APPLY_FORCE 0x00000008
  1043. #define AD_APPLY_BUFFERED_REFRESH 0x00000010
  1044. #define AD_APPLY_DYNAMICREFRESH 0x00000020
  1045. #if NTDDI_VERSION >= 0x06000000
  1046. #define AD_GETWP_BMP 0x00000000
  1047. #define AD_GETWP_IMAGE 0x00000001
  1048. #define AD_GETWP_LAST_APPLIED 0x00000002
  1049. #endif
  1050. #define WPSTYLE_CENTER 0
  1051. #define WPSTYLE_TILE 1
  1052. #define WPSTYLE_STRETCH 2
  1053. #if NTDDI_VERSION >= 0x06010000
  1054. #define WPSTYLE_KEEPASPECT 3
  1055. #define WPSTYLE_CROPTOFIT 4
  1056. #endif
  1057. #if NTDDI_VERSION >= 0x06020000
  1058. #define WPSTYLE_SPAN 5
  1059. #endif
  1060. #if NTDDI_VERSION >= 0x06020000
  1061. #define WPSTYLE_MAX 6
  1062. #elif NTDDI_VERSION >= 0x06010000
  1063. #define WPSTYLE_MAX 5
  1064. #else
  1065. #define WPSTYLE_MAX 3
  1066. #endif
  1067. #define COMP_ELEM_TYPE 0x00000001
  1068. #define COMP_ELEM_CHECKED 0x00000002
  1069. #define COMP_ELEM_DIRTY 0x00000004
  1070. #define COMP_ELEM_NOSCROLL 0x00000008
  1071. #define COMP_ELEM_POS_LEFT 0x00000010
  1072. #define COMP_ELEM_POS_TOP 0x00000020
  1073. #define COMP_ELEM_SIZE_WIDTH 0x00000040
  1074. #define COMP_ELEM_SIZE_HEIGHT 0x00000080
  1075. #define COMP_ELEM_POS_ZINDEX 0x00000100
  1076. #define COMP_ELEM_SOURCE 0x00000200
  1077. #define COMP_ELEM_FRIENDLYNAME 0x00000400
  1078. #define COMP_ELEM_SUBSCRIBEDURL 0x00000800
  1079. #define COMP_ELEM_ORIGINAL_CSI 0x00001000
  1080. #define COMP_ELEM_RESTORED_CSI 0x00002000
  1081. #define COMP_ELEM_CURITEMSTATE 0x00004000
  1082. #define COMP_ELEM_ALL (COMP_ELEM_TYPE | COMP_ELEM_CHECKED | COMP_ELEM_DIRTY | COMP_ELEM_NOSCROLL | COMP_ELEM_POS_LEFT | COMP_ELEM_SIZE_WIDTH | COMP_ELEM_SIZE_HEIGHT | COMP_ELEM_POS_ZINDEX | COMP_ELEM_SOURCE | COMP_ELEM_FRIENDLYNAME | COMP_ELEM_POS_TOP | COMP_ELEM_SUBSCRIBEDURL | COMP_ELEM_ORIGINAL_CSI | COMP_ELEM_RESTORED_CSI | COMP_ELEM_CURITEMSTATE)
  1083. typedef enum tagDTI_ADTIWUI {
  1084. DTI_ADDUI_DEFAULT = 0x0,
  1085. DTI_ADDUI_DISPSUBWIZARD = 0x1,
  1086. DTI_ADDUI_POSITIONITEM = 0x2
  1087. };
  1088. #define ADDURL_SILENT 0x1
  1089. #define COMPONENT_DEFAULT_LEFT (0xffff)
  1090. #define COMPONENT_DEFAULT_TOP (0xffff)
  1091. #undef INTERFACE
  1092. #define INTERFACE IActiveDesktop
  1093. DECLARE_INTERFACE_IID_ (IActiveDesktop, IUnknown, "f490eb00-1240-11d1-9888-006097deacf9") {
  1094. STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
  1095. STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  1096. STDMETHOD_(ULONG, Release) (THIS) PURE;
  1097. STDMETHOD(ApplyChanges) (THIS_ DWORD dwFlags) PURE;
  1098. STDMETHOD(GetWallpaper) (THIS_ PWSTR pwszWallpaper, UINT cchWallpaper, DWORD dwFlags) PURE;
  1099. STDMETHOD(SetWallpaper) (THIS_ PCWSTR pwszWallpaper, DWORD dwReserved) PURE;
  1100. STDMETHOD(GetWallpaperOptions) (THIS_ LPWALLPAPEROPT pwpo, DWORD dwReserved) PURE;
  1101. STDMETHOD(SetWallpaperOptions) (THIS_ LPCWALLPAPEROPT pwpo, DWORD dwReserved) PURE;
  1102. STDMETHOD(GetPattern) (THIS_ PWSTR pwszPattern, UINT cchPattern, DWORD dwReserved) PURE;
  1103. STDMETHOD(SetPattern) (THIS_ PCWSTR pwszPattern, DWORD dwReserved) PURE;
  1104. STDMETHOD(GetDesktopItemOptions) (THIS_ LPCOMPONENTSOPT pco, DWORD dwReserved) PURE;
  1105. STDMETHOD(SetDesktopItemOptions) (THIS_ LPCCOMPONENTSOPT pco, DWORD dwReserved) PURE;
  1106. STDMETHOD(AddDesktopItem) (THIS_ LPCCOMPONENT pcomp, DWORD dwReserved) PURE;
  1107. STDMETHOD(AddDesktopItemWithUI) (THIS_ HWND hwnd, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
  1108. STDMETHOD(ModifyDesktopItem) (THIS_ LPCCOMPONENT pcomp, DWORD dwFlags) PURE;
  1109. STDMETHOD(RemoveDesktopItem) (THIS_ LPCCOMPONENT pcomp, DWORD dwReserved) PURE;
  1110. STDMETHOD(GetDesktopItemCount) (THIS_ int *pcItems, DWORD dwReserved) PURE;
  1111. STDMETHOD(GetDesktopItem) (THIS_ int nComponent, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
  1112. STDMETHOD(GetDesktopItemByID) (THIS_ ULONG_PTR dwID, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
  1113. STDMETHOD(GenerateDesktopItemHtml) (THIS_ PCWSTR pwszFileName, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
  1114. STDMETHOD(AddUrl) (THIS_ HWND hwnd, PCWSTR pszSource, LPCOMPONENT pcomp, DWORD dwFlags) PURE;
  1115. STDMETHOD(GetDesktopItemBySource) (THIS_ PCWSTR pwszSource, LPCOMPONENT pcomp, DWORD dwReserved) PURE;
  1116. };
  1117. typedef IActiveDesktop *LPACTIVEDESKTOP;
  1118. #define SSM_CLEAR 0x0000
  1119. #define SSM_SET 0x0001
  1120. #define SSM_REFRESH 0x0002
  1121. #define SSM_UPDATE 0x0004
  1122. #define SCHEME_DISPLAY 0x0001
  1123. #define SCHEME_EDIT 0x0002
  1124. #define SCHEME_LOCAL 0x0004
  1125. #define SCHEME_GLOBAL 0x0008
  1126. #define SCHEME_REFRESH 0x0010
  1127. #define SCHEME_UPDATE 0x0020
  1128. #define SCHEME_DONOTUSE 0x0040
  1129. #define SCHEME_CREATE 0x0080
  1130. #undef INTERFACE
  1131. #define INTERFACE IActiveDesktopP
  1132. DECLARE_INTERFACE_IID_ (IActiveDesktopP, IUnknown, "52502EE0-EC80-11D0-89AB-00C04FC2972D") {
  1133. STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
  1134. STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  1135. STDMETHOD_(ULONG, Release) (THIS) PURE;
  1136. STDMETHOD(SetSafeMode) (THIS_ DWORD dwFlags) PURE;
  1137. STDMETHOD(EnsureUpdateHTML) (THIS) PURE;
  1138. STDMETHOD(SetScheme) (THIS_ PCWSTR pwszSchemeName, DWORD dwFlags) PURE;
  1139. STDMETHOD(GetScheme) (THIS_ PWSTR pwszSchemeName, DWORD *pdwcchBuffer, DWORD dwFlags) PURE;
  1140. };
  1141. typedef IActiveDesktopP *LPACTIVEDESKTOPP;
  1142. #define GADOF_DIRTY 0x00000001
  1143. #undef INTERFACE
  1144. #define INTERFACE IADesktopP2
  1145. DECLARE_INTERFACE_IID_ (IADesktopP2, IUnknown, "B22754E2-4574-11d1-9888-006097DEACF9") {
  1146. STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
  1147. STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  1148. STDMETHOD_(ULONG, Release) (THIS) PURE;
  1149. STDMETHOD(ReReadWallpaper) (THIS) PURE;
  1150. STDMETHOD(GetADObjectFlags) (THIS_ DWORD *pdwFlags, DWORD dwMask) PURE;
  1151. STDMETHOD(UpdateAllDesktopSubscriptions) (THIS) PURE;
  1152. STDMETHOD(MakeDynamicChanges) (THIS_ IOleObject *pOleObj) PURE;
  1153. };
  1154. typedef IADesktopP2 *LPADESKTOPP2;
  1155. #endif
  1156. #define MAX_COLUMN_NAME_LEN 80
  1157. #define MAX_COLUMN_DESC_LEN 128
  1158. #include <pshpack1.h>
  1159. typedef struct {
  1160. SHCOLUMNID scid;
  1161. VARTYPE vt;
  1162. DWORD fmt;
  1163. UINT cChars;
  1164. DWORD csFlags;
  1165. WCHAR wszTitle[MAX_COLUMN_NAME_LEN];
  1166. WCHAR wszDescription[MAX_COLUMN_DESC_LEN];
  1167. } SHCOLUMNINFO,*LPSHCOLUMNINFO;
  1168. typedef const SHCOLUMNINFO *LPCSHCOLUMNINFO;
  1169. #include <poppack.h>
  1170. #include <pshpack8.h>
  1171. typedef struct {
  1172. ULONG dwFlags;
  1173. ULONG dwReserved;
  1174. WCHAR wszFolder[MAX_PATH];
  1175. } SHCOLUMNINIT,*LPSHCOLUMNINIT;
  1176. typedef const SHCOLUMNINIT *LPCSHCOLUMNINIT;
  1177. #define SHCDF_UPDATEITEM 0x00000001
  1178. typedef struct {
  1179. ULONG dwFlags;
  1180. DWORD dwFileAttributes;
  1181. ULONG dwReserved;
  1182. WCHAR *pwszExt;
  1183. WCHAR wszFile[MAX_PATH];
  1184. } SHCOLUMNDATA,*LPSHCOLUMNDATA;
  1185. typedef const SHCOLUMNDATA *LPCSHCOLUMNDATA;
  1186. #include <poppack.h>
  1187. #undef INTERFACE
  1188. #define INTERFACE IColumnProvider
  1189. DECLARE_INTERFACE_IID_ (IColumnProvider, IUnknown, "E8025004-1C42-11d2-BE2C-00A0C9A83DA1") {
  1190. STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
  1191. STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  1192. STDMETHOD_(ULONG, Release) (THIS) PURE;
  1193. STDMETHOD(Initialize) (THIS_ LPCSHCOLUMNINIT psci) PURE;
  1194. STDMETHOD(GetColumnInfo) (THIS_ DWORD dwIndex, SHCOLUMNINFO *psci) PURE;
  1195. STDMETHOD(GetItemData) (THIS_ LPCSHCOLUMNID pscid, LPCSHCOLUMNDATA pscd, VARIANT *pvarData) PURE;
  1196. };
  1197. #define CFSTR_SHELLIDLIST TEXT ("Shell IDList Array")
  1198. #define CFSTR_SHELLIDLISTOFFSET TEXT ("Shell Object Offsets")
  1199. #define CFSTR_NETRESOURCES TEXT ("Net Resource")
  1200. #define CFSTR_FILEDESCRIPTORA TEXT ("FileGroupDescriptor")
  1201. #define CFSTR_FILEDESCRIPTORW TEXT ("FileGroupDescriptorW")
  1202. #define CFSTR_FILECONTENTS TEXT ("FileContents")
  1203. #define CFSTR_FILENAMEA TEXT ("FileName")
  1204. #define CFSTR_FILENAMEW TEXT ("FileNameW")
  1205. #define CFSTR_PRINTERGROUP TEXT ("PrinterFriendlyName")
  1206. #define CFSTR_FILENAMEMAPA TEXT ("FileNameMap")
  1207. #define CFSTR_FILENAMEMAPW TEXT ("FileNameMapW")
  1208. #define CFSTR_SHELLURL TEXT ("UniformResourceLocator")
  1209. #define CFSTR_INETURLA CFSTR_SHELLURL
  1210. #define CFSTR_INETURLW TEXT ("UniformResourceLocatorW")
  1211. #define CFSTR_PREFERREDDROPEFFECT TEXT ("Preferred DropEffect")
  1212. #define CFSTR_PERFORMEDDROPEFFECT TEXT ("Performed DropEffect")
  1213. #define CFSTR_PASTESUCCEEDED TEXT ("Paste Succeeded")
  1214. #define CFSTR_INDRAGLOOP TEXT ("InShellDragLoop")
  1215. #define CFSTR_MOUNTEDVOLUME TEXT ("MountedVolume")
  1216. #define CFSTR_PERSISTEDDATAOBJECT TEXT ("PersistedDataObject")
  1217. #define CFSTR_TARGETCLSID TEXT ("TargetCLSID")
  1218. #define CFSTR_LOGICALPERFORMEDDROPEFFECT TEXT ("Logical Performed DropEffect")
  1219. #define CFSTR_AUTOPLAY_SHELLIDLISTS TEXT ("Autoplay Enumerated IDList Array")
  1220. #define CFSTR_UNTRUSTEDDRAGDROP TEXT ("UntrustedDragDrop")
  1221. #define CFSTR_FILE_ATTRIBUTES_ARRAY TEXT ("File Attributes Array")
  1222. #define CFSTR_INVOKECOMMAND_DROPPARAM TEXT ("InvokeCommand DropParam")
  1223. #define CFSTR_SHELLDROPHANDLER TEXT ("DropHandlerCLSID")
  1224. #define CFSTR_DROPDESCRIPTION TEXT ("DropDescription")
  1225. #define CFSTR_ZONEIDENTIFIER TEXT ("ZoneIdentifier")
  1226. #define CFSTR_FILEDESCRIPTOR __MINGW_NAME_AW(CFSTR_FILEDESCRIPTOR)
  1227. #define CFSTR_FILENAME __MINGW_NAME_AW(CFSTR_FILENAME)
  1228. #define CFSTR_FILENAMEMAP __MINGW_NAME_AW(CFSTR_FILENAMEMAP)
  1229. #define CFSTR_INETURL __MINGW_NAME_AW(CFSTR_INETURL)
  1230. #define DVASPECT_SHORTNAME 2
  1231. #define DVASPECT_COPY 3
  1232. #define DVASPECT_LINK 4
  1233. #include <pshpack8.h>
  1234. typedef struct _NRESARRAY {
  1235. UINT cItems;
  1236. NETRESOURCE nr[1];
  1237. } NRESARRAY,*LPNRESARRAY;
  1238. #include <poppack.h>
  1239. typedef struct _IDA {
  1240. UINT cidl;
  1241. UINT aoffset[1];
  1242. } CIDA,*LPIDA;
  1243. typedef enum {
  1244. FD_CLSID = 0x1,
  1245. FD_SIZEPOINT = 0x2,
  1246. FD_ATTRIBUTES = 0x4,
  1247. FD_CREATETIME = 0x8,
  1248. FD_ACCESSTIME = 0x10,
  1249. FD_WRITESTIME = 0x20,
  1250. FD_FILESIZE = 0x40,
  1251. FD_PROGRESSUI = 0x4000,
  1252. FD_LINKUI = 0x8000
  1253. #if NTDDI_VERSION >= 0x06000000
  1254. , FD_UNICODE = (int) 0x80000000
  1255. #endif
  1256. } FD_FLAGS;
  1257. typedef struct _FILEDESCRIPTORA {
  1258. DWORD dwFlags;
  1259. CLSID clsid;
  1260. SIZEL sizel;
  1261. POINTL pointl;
  1262. DWORD dwFileAttributes;
  1263. FILETIME ftCreationTime;
  1264. FILETIME ftLastAccessTime;
  1265. FILETIME ftLastWriteTime;
  1266. DWORD nFileSizeHigh;
  1267. DWORD nFileSizeLow;
  1268. CHAR cFileName[MAX_PATH];
  1269. } FILEDESCRIPTORA,*LPFILEDESCRIPTORA;
  1270. typedef struct _FILEDESCRIPTORW {
  1271. DWORD dwFlags;
  1272. CLSID clsid;
  1273. SIZEL sizel;
  1274. POINTL pointl;
  1275. DWORD dwFileAttributes;
  1276. FILETIME ftCreationTime;
  1277. FILETIME ftLastAccessTime;
  1278. FILETIME ftLastWriteTime;
  1279. DWORD nFileSizeHigh;
  1280. DWORD nFileSizeLow;
  1281. WCHAR cFileName[MAX_PATH];
  1282. } FILEDESCRIPTORW,*LPFILEDESCRIPTORW;
  1283. #define FILEDESCRIPTOR __MINGW_NAME_AW(FILEDESCRIPTOR)
  1284. #define LPFILEDESCRIPTOR __MINGW_NAME_AW(LPFILEDESCRIPTOR)
  1285. typedef struct _FILEGROUPDESCRIPTORA {
  1286. UINT cItems;
  1287. FILEDESCRIPTORA fgd[1];
  1288. } FILEGROUPDESCRIPTORA,*LPFILEGROUPDESCRIPTORA;
  1289. typedef struct _FILEGROUPDESCRIPTORW {
  1290. UINT cItems;
  1291. FILEDESCRIPTORW fgd[1];
  1292. } FILEGROUPDESCRIPTORW,*LPFILEGROUPDESCRIPTORW;
  1293. #define FILEGROUPDESCRIPTOR __MINGW_NAME_AW(FILEGROUPDESCRIPTOR)
  1294. #define LPFILEGROUPDESCRIPTOR __MINGW_NAME_AW(LPFILEGROUPDESCRIPTOR)
  1295. typedef struct _DROPFILES {
  1296. DWORD pFiles;
  1297. POINT pt;
  1298. WINBOOL fNC;
  1299. WINBOOL fWide;
  1300. } DROPFILES,*LPDROPFILES;
  1301. #if NTDDI_VERSION >= 0x06000000
  1302. typedef struct {
  1303. UINT cItems;
  1304. DWORD dwSumFileAttributes;
  1305. DWORD dwProductFileAttributes;
  1306. DWORD rgdwFileAttributes[1];
  1307. } FILE_ATTRIBUTES_ARRAY;
  1308. #endif
  1309. #if NTDDI_VERSION >= 0x06000000
  1310. typedef enum {
  1311. DROPIMAGE_INVALID = -1,
  1312. DROPIMAGE_NONE = 0,
  1313. DROPIMAGE_COPY = DROPEFFECT_COPY,
  1314. DROPIMAGE_MOVE = DROPEFFECT_MOVE,
  1315. DROPIMAGE_LINK = DROPEFFECT_LINK,
  1316. DROPIMAGE_LABEL = 6,
  1317. DROPIMAGE_WARNING = 7,
  1318. DROPIMAGE_NOIMAGE = 8,
  1319. } DROPIMAGETYPE;
  1320. typedef struct {
  1321. DROPIMAGETYPE type;
  1322. WCHAR szMessage[MAX_PATH];
  1323. WCHAR szInsert[MAX_PATH];
  1324. } DROPDESCRIPTION;
  1325. #endif
  1326. typedef struct _SHChangeNotifyEntry {
  1327. PCIDLIST_ABSOLUTE pidl;
  1328. WINBOOL fRecursive;
  1329. } SHChangeNotifyEntry;
  1330. #define SHCNRF_InterruptLevel 0x0001
  1331. #define SHCNRF_ShellLevel 0x0002
  1332. #define SHCNRF_RecursiveInterrupt 0x1000
  1333. #define SHCNRF_NewDelivery 0x8000
  1334. #define SHCNE_RENAMEITEM __MSABI_LONG(0x00000001)
  1335. #define SHCNE_CREATE __MSABI_LONG(0x00000002)
  1336. #define SHCNE_DELETE __MSABI_LONG(0x00000004)
  1337. #define SHCNE_MKDIR __MSABI_LONG(0x00000008)
  1338. #define SHCNE_RMDIR __MSABI_LONG(0x00000010)
  1339. #define SHCNE_MEDIAINSERTED __MSABI_LONG(0x00000020)
  1340. #define SHCNE_MEDIAREMOVED __MSABI_LONG(0x00000040)
  1341. #define SHCNE_DRIVEREMOVED __MSABI_LONG(0x00000080)
  1342. #define SHCNE_DRIVEADD __MSABI_LONG(0x00000100)
  1343. #define SHCNE_NETSHARE __MSABI_LONG(0x00000200)
  1344. #define SHCNE_NETUNSHARE __MSABI_LONG(0x00000400)
  1345. #define SHCNE_ATTRIBUTES __MSABI_LONG(0x00000800)
  1346. #define SHCNE_UPDATEDIR __MSABI_LONG(0x00001000)
  1347. #define SHCNE_UPDATEITEM __MSABI_LONG(0x00002000)
  1348. #define SHCNE_SERVERDISCONNECT __MSABI_LONG(0x00004000)
  1349. #define SHCNE_UPDATEIMAGE __MSABI_LONG(0x00008000)
  1350. #define SHCNE_DRIVEADDGUI __MSABI_LONG(0x00010000)
  1351. #define SHCNE_RENAMEFOLDER __MSABI_LONG(0x00020000)
  1352. #define SHCNE_FREESPACE __MSABI_LONG(0x00040000)
  1353. #define SHCNE_EXTENDED_EVENT __MSABI_LONG(0x04000000)
  1354. #define SHCNE_ASSOCCHANGED __MSABI_LONG(0x08000000)
  1355. #define SHCNE_DISKEVENTS __MSABI_LONG(0x0002381f)
  1356. #define SHCNE_GLOBALEVENTS __MSABI_LONG(0x0c0581e0)
  1357. #define SHCNE_ALLEVENTS __MSABI_LONG(0x7fffffff)
  1358. #define SHCNE_INTERRUPT __MSABI_LONG(0x80000000)
  1359. #define SHCNEE_ORDERCHANGED __MSABI_LONG(2)
  1360. #define SHCNEE_MSI_CHANGE __MSABI_LONG(4)
  1361. #define SHCNEE_MSI_UNINSTALL __MSABI_LONG(5)
  1362. #define SHCNF_IDLIST 0x0000
  1363. #define SHCNF_PATHA 0x0001
  1364. #define SHCNF_PRINTERA 0x0002
  1365. #define SHCNF_DWORD 0x0003
  1366. #define SHCNF_PATHW 0x0005
  1367. #define SHCNF_PRINTERW 0x0006
  1368. #define SHCNF_TYPE 0x00ff
  1369. #define SHCNF_FLUSH 0x1000
  1370. #define SHCNF_FLUSHNOWAIT 0x3000
  1371. #define SHCNF_NOTIFYRECURSIVE 0x10000
  1372. #define SHCNF_PATH __MINGW_NAME_AW(SHCNF_PATH)
  1373. #define SHCNF_PRINTER __MINGW_NAME_AW(SHCNF_PRINTER)
  1374. SHSTDAPI_(void) SHChangeNotify (LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
  1375. #undef INTERFACE
  1376. #define INTERFACE IShellChangeNotify
  1377. DECLARE_INTERFACE_IID_ (IShellChangeNotify, IUnknown, "D82BE2B1-5764-11D0-A96E-00C04FD705A2") {
  1378. STDMETHOD(OnChange) (THIS_ LONG lEvent, PCIDLIST_ABSOLUTE pidl1, PCIDLIST_ABSOLUTE pidl2) PURE;
  1379. };
  1380. #undef INTERFACE
  1381. #define INTERFACE IQueryInfo
  1382. DECLARE_INTERFACE_IID_ (IQueryInfo, IUnknown, "00021500-0000-0000-c000-000000000046") {
  1383. STDMETHOD(GetInfoTip) (THIS_ DWORD dwFlags, PWSTR *ppwszTip) PURE;
  1384. STDMETHOD(GetInfoFlags) (THIS_ DWORD *pdwFlags) PURE;
  1385. };
  1386. #define QITIPF_DEFAULT 0x00000000
  1387. #define QITIPF_USENAME 0x00000001
  1388. #define QITIPF_LINKNOTARGET 0x00000002
  1389. #define QITIPF_LINKUSETARGET 0x00000004
  1390. #define QITIPF_USESLOWTIP 0x00000008
  1391. #if NTDDI_VERSION >= 0x06000000
  1392. #define QITIPF_SINGLELINE 0x00000010
  1393. #endif
  1394. #define QIF_CACHED 0x00000001
  1395. #define QIF_DONTEXPANDFOLDER 0x00000002
  1396. typedef enum {
  1397. SHARD_PIDL = __MSABI_LONG(0x00000001),
  1398. SHARD_PATHA = __MSABI_LONG(0x00000002),
  1399. SHARD_PATHW = __MSABI_LONG(0x00000003)
  1400. #if NTDDI_VERSION >= 0x06010000
  1401. , SHARD_APPIDINFO = __MSABI_LONG(0x00000004),
  1402. SHARD_APPIDINFOIDLIST = __MSABI_LONG(0x00000005),
  1403. SHARD_LINK = __MSABI_LONG(0x00000006),
  1404. SHARD_APPIDINFOLINK = __MSABI_LONG(0x00000007),
  1405. SHARD_SHELLITEM = __MSABI_LONG(0x00000008)
  1406. #endif
  1407. } SHARD;
  1408. #if NTDDI_VERSION >= 0x06010000
  1409. typedef struct SHARDAPPIDINFO {
  1410. IShellItem *psi;
  1411. PCWSTR pszAppID;
  1412. } SHARDAPPIDINFO;
  1413. typedef struct SHARDAPPIDINFOIDLIST {
  1414. PCIDLIST_ABSOLUTE pidl;
  1415. PCWSTR pszAppID;
  1416. } SHARDAPPIDINFOIDLIST;
  1417. typedef struct SHARDAPPIDINFOLINK {
  1418. IShellLink *psl;
  1419. PCWSTR pszAppID;
  1420. } SHARDAPPIDINFOLINK;
  1421. #endif
  1422. #define SHARD_PATH __MINGW_NAME_AW(SHARD_PATH)
  1423. SHSTDAPI_(void) SHAddToRecentDocs (UINT uFlags, LPCVOID pv);
  1424. typedef struct _SHChangeDWORDAsIDList {
  1425. USHORT cb;
  1426. DWORD dwItem1;
  1427. DWORD dwItem2;
  1428. USHORT cbZero;
  1429. } SHChangeDWORDAsIDList,*LPSHChangeDWORDAsIDList;
  1430. typedef struct _SHChangeUpdateImageIDList {
  1431. USHORT cb;
  1432. int iIconIndex;
  1433. int iCurIndex;
  1434. UINT uFlags;
  1435. DWORD dwProcessID;
  1436. WCHAR szName[MAX_PATH];
  1437. USHORT cbZero;
  1438. } SHChangeUpdateImageIDList,*LPSHChangeUpdateImageIDList;
  1439. SHSTDAPI_(int) SHHandleUpdateImage (PCIDLIST_ABSOLUTE pidlExtra);
  1440. typedef struct _SHChangeProductKeyAsIDList {
  1441. USHORT cb;
  1442. WCHAR wszProductKey[39];
  1443. USHORT cbZero;
  1444. } SHChangeProductKeyAsIDList,*LPSHChangeProductKeyAsIDList;
  1445. SHSTDAPI_(void) SHUpdateImageA (LPCSTR pszHashItem, int iIndex, UINT uFlags, int iImageIndex);
  1446. SHSTDAPI_(void) SHUpdateImageW (LPCWSTR pszHashItem, int iIndex, UINT uFlags, int iImageIndex);
  1447. #define SHUpdateImage __MINGW_NAME_AW(SHUpdateImage)
  1448. SHSTDAPI_(ULONG) SHChangeNotifyRegister (HWND hwnd, int fSources, LONG fEvents, UINT wMsg, int cEntries, const SHChangeNotifyEntry *pshcne);
  1449. SHSTDAPI_(WINBOOL) SHChangeNotifyDeregister (ULONG ulID);
  1450. typedef enum {
  1451. SCNRT_ENABLE = 0,
  1452. SCNRT_DISABLE = 1
  1453. } SCNRT_STATUS;
  1454. #if NTDDI_VERSION >= 0x06000000
  1455. STDAPI_ (void) SHChangeNotifyRegisterThread (SCNRT_STATUS status);
  1456. #endif
  1457. SHSTDAPI_(HANDLE) SHChangeNotification_Lock (HANDLE hChange, DWORD dwProcId, PIDLIST_ABSOLUTE **pppidl, LONG *plEvent);
  1458. SHSTDAPI_(WINBOOL) SHChangeNotification_Unlock (HANDLE hLock);
  1459. SHSTDAPI SHGetRealIDL (IShellFolder *psf, PCUITEMID_CHILD pidlSimple, PITEMID_CHILD *ppidlReal);
  1460. SHSTDAPI SHGetInstanceExplorer (IUnknown **ppunk);
  1461. #define SHGDFIL_FINDDATA 1
  1462. #define SHGDFIL_NETRESOURCE 2
  1463. #define SHGDFIL_DESCRIPTIONID 3
  1464. #define SHDID_ROOT_REGITEM 1
  1465. #define SHDID_FS_FILE 2
  1466. #define SHDID_FS_DIRECTORY 3
  1467. #define SHDID_FS_OTHER 4
  1468. #define SHDID_COMPUTER_DRIVE35 5
  1469. #define SHDID_COMPUTER_DRIVE525 6
  1470. #define SHDID_COMPUTER_REMOVABLE 7
  1471. #define SHDID_COMPUTER_FIXED 8
  1472. #define SHDID_COMPUTER_NETDRIVE 9
  1473. #define SHDID_COMPUTER_CDROM 10
  1474. #define SHDID_COMPUTER_RAMDISK 11
  1475. #define SHDID_COMPUTER_OTHER 12
  1476. #define SHDID_NET_DOMAIN 13
  1477. #define SHDID_NET_SERVER 14
  1478. #define SHDID_NET_SHARE 15
  1479. #define SHDID_NET_RESTOFNET 16
  1480. #define SHDID_NET_OTHER 17
  1481. #define SHDID_COMPUTER_IMAGING 18
  1482. #define SHDID_COMPUTER_AUDIO 19
  1483. #define SHDID_COMPUTER_SHAREDDOCS 20
  1484. #if NTDDI_VERSION >= 0x06000000
  1485. #define SHDID_MOBILE_DEVICE 21
  1486. #endif
  1487. #include <pshpack8.h>
  1488. typedef struct _SHDESCRIPTIONID {
  1489. DWORD dwDescriptionId;
  1490. CLSID clsid;
  1491. } SHDESCRIPTIONID,*LPSHDESCRIPTIONID;
  1492. #include <poppack.h>
  1493. SHSTDAPI SHGetDataFromIDListA (IShellFolder *psf, PCUITEMID_CHILD pidl, int nFormat, void *pv, int cb);
  1494. SHSTDAPI SHGetDataFromIDListW (IShellFolder *psf, PCUITEMID_CHILD pidl, int nFormat, void *pv, int cb);
  1495. #define SHGetDataFromIDList __MINGW_NAME_AW(SHGetDataFromIDList)
  1496. #define PRF_VERIFYEXISTS 0x1
  1497. #define PRF_TRYPROGRAMEXTENSIONS (0x2 | PRF_VERIFYEXISTS)
  1498. #define PRF_FIRSTDIRDEF 0x4
  1499. #define PRF_DONTFINDLNK 0x8
  1500. #define PRF_REQUIREABSOLUTE 0x10
  1501. SHSTDAPI_(int) RestartDialog (HWND hwnd, PCWSTR pszPrompt, DWORD dwReturn);
  1502. SHSTDAPI_(int) RestartDialogEx (HWND hwnd, PCWSTR pszPrompt, DWORD dwReturn, DWORD dwReasonCode);
  1503. SHSTDAPI SHCoCreateInstance (PCWSTR pszCLSID, const CLSID *pclsid, IUnknown *pUnkOuter, REFIID riid, void **ppv);
  1504. #if NTDDI_VERSION >= 0x06000000
  1505. SHSTDAPI SHCreateDataObject (PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IDataObject *pdtInner, REFIID riid, void **ppv);
  1506. #endif
  1507. SHSTDAPI CIDLData_CreateFromIDArray (PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUIDLIST_RELATIVE_ARRAY apidl, IDataObject **ppdtobj);
  1508. SHSTDAPI SHCreateStdEnumFmtEtc (UINT cfmt, const FORMATETC afmt[], IEnumFORMATETC **ppenumFormatEtc);
  1509. SHSTDAPI SHDoDragDrop (HWND hwnd, IDataObject *pdata, IDropSource *pdsrc, DWORD dwEffect, DWORD *pdwEffect);
  1510. #define NUM_POINTS 3
  1511. typedef struct {
  1512. int iNextSample;
  1513. DWORD dwLastScroll;
  1514. WINBOOL bFull;
  1515. POINT pts[NUM_POINTS];
  1516. DWORD dwTimes[NUM_POINTS];
  1517. } AUTO_SCROLL_DATA;
  1518. SHSTDAPI_(WINBOOL) DAD_SetDragImage (HIMAGELIST him, POINT *pptOffset);
  1519. SHSTDAPI_(WINBOOL) DAD_DragEnterEx (HWND hwndTarget, const POINT ptStart);
  1520. SHSTDAPI_(WINBOOL) DAD_DragEnterEx2 (HWND hwndTarget, const POINT ptStart, IDataObject *pdtObject);
  1521. SHSTDAPI_(WINBOOL) DAD_ShowDragImage (WINBOOL fShow);
  1522. SHSTDAPI_(WINBOOL) DAD_DragMove (POINT pt);
  1523. SHSTDAPI_(WINBOOL) DAD_DragLeave (void);
  1524. SHSTDAPI_(WINBOOL) DAD_AutoScroll (HWND hwnd, AUTO_SCROLL_DATA *pad, const POINT *pptNow);
  1525. typedef struct {
  1526. WORD cLength;
  1527. WORD nVersion;
  1528. WINBOOL fFullPathTitle : 1;
  1529. WINBOOL fSaveLocalView : 1;
  1530. WINBOOL fNotShell : 1;
  1531. WINBOOL fSimpleDefault : 1;
  1532. WINBOOL fDontShowDescBar : 1;
  1533. WINBOOL fNewWindowMode : 1;
  1534. WINBOOL fShowCompColor : 1;
  1535. WINBOOL fDontPrettyNames : 1;
  1536. WINBOOL fAdminsCreateCommonGroups : 1;
  1537. UINT fUnusedFlags : 7;
  1538. UINT fMenuEnumFilter;
  1539. } CABINETSTATE,*LPCABINETSTATE;
  1540. #define CABINETSTATE_VERSION 2
  1541. SHSTDAPI_(WINBOOL) ReadCabinetState (CABINETSTATE *pcs, int cLength);
  1542. SHSTDAPI_(WINBOOL) WriteCabinetState (CABINETSTATE *pcs);
  1543. SHSTDAPI_(WINBOOL) PathMakeUniqueName (PWSTR pszUniqueName, UINT cchMax, PCWSTR pszTemplate, PCWSTR pszLongPlate, PCWSTR pszDir);
  1544. SHSTDAPI_(void) PathQualify (PWSTR psz);
  1545. SHSTDAPI_(WINBOOL) PathIsExe (PCWSTR pszPath);
  1546. SHSTDAPI_(WINBOOL) PathIsSlowA (LPCSTR pszFile, DWORD dwAttr);
  1547. SHSTDAPI_(WINBOOL) PathIsSlowW (LPCWSTR pszFile, DWORD dwAttr);
  1548. #define PathIsSlow __MINGW_NAME_AW(PathIsSlow)
  1549. #define PCS_FATAL 0x80000000
  1550. #define PCS_REPLACEDCHAR 0x00000001
  1551. #define PCS_REMOVEDCHAR 0x00000002
  1552. #define PCS_TRUNCATED 0x00000004
  1553. #define PCS_PATHTOOLONG 0x00000008
  1554. SHSTDAPI_(int) PathCleanupSpec (PCWSTR pszDir, PWSTR pszSpec);
  1555. SHSTDAPI_(int) PathResolve (PWSTR pszPath, PZPCWSTR dirs, UINT fFlags);
  1556. SHSTDAPI_(WINBOOL) GetFileNameFromBrowse (HWND hwnd, PWSTR pszFilePath, UINT cchFilePath, PCWSTR pszWorkingDir, PCWSTR pszDefExt, PCWSTR pszFilters, PCWSTR pszTitle);
  1557. SHSTDAPI_(int) DriveType (int iDrive);
  1558. SHSTDAPI_(int) RealDriveType (int iDrive, WINBOOL fOKToHitNet);
  1559. SHSTDAPI_(int) IsNetDrive (int iDrive);
  1560. #define MM_ADDSEPARATOR __MSABI_LONG(0x00000001)
  1561. #define MM_SUBMENUSHAVEIDS __MSABI_LONG(0x00000002)
  1562. #define MM_DONTREMOVESEPS __MSABI_LONG(0x00000004)
  1563. SHSTDAPI_(UINT) Shell_MergeMenus (HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags);
  1564. SHSTDAPI_(WINBOOL) SHObjectProperties (HWND hwnd, DWORD shopObjectType, PCWSTR pszObjectName, PCWSTR pszPropertyPage);
  1565. #define SHOP_PRINTERNAME 0x00000001
  1566. #define SHOP_FILEPATH 0x00000002
  1567. #define SHOP_VOLUMEGUID 0x00000004
  1568. SHSTDAPI_(DWORD) SHFormatDrive (HWND hwnd, UINT drive, UINT fmtID, UINT options);
  1569. #define SHFMT_ID_DEFAULT 0xffff
  1570. #define SHFMT_OPT_FULL 0x0001
  1571. #define SHFMT_OPT_SYSONLY 0x0002
  1572. #define SHFMT_ERROR __MSABI_LONG(0xffffffff)
  1573. #define SHFMT_CANCEL __MSABI_LONG(0xfffffffe)
  1574. #define SHFMT_NOFORMAT __MSABI_LONG(0xfffffffd)
  1575. #ifndef HPSXA_DEFINED
  1576. #define HPSXA_DEFINED
  1577. DECLARE_HANDLE (HPSXA);
  1578. #endif
  1579. WINSHELLAPI HPSXA WINAPI SHCreatePropSheetExtArray (HKEY hKey, PCWSTR pszSubKey, UINT max_iface);
  1580. WINSHELLAPI void WINAPI SHDestroyPropSheetExtArray (HPSXA hpsxa);
  1581. WINSHELLAPI UINT WINAPI SHAddFromPropSheetExtArray (HPSXA hpsxa, LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
  1582. WINSHELLAPI UINT WINAPI SHReplaceFromPropSheetExtArray (HPSXA hpsxa, UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam);
  1583. #if (NTDDI_VERSION >= 0x05000000 && NTDDI_VERSION < 0x06000000)
  1584. #undef INTERFACE
  1585. #define INTERFACE IDefViewFrame
  1586. DECLARE_INTERFACE_IID_ (IDefViewFrame, IUnknown, "710EB7A0-45ED-11D0-924A-0020AFC7AC4D") {
  1587. STDMETHOD(GetWindowLV) (THIS_ HWND *phwnd) PURE;
  1588. STDMETHOD(ReleaseWindowLV) (THIS) PURE;
  1589. STDMETHOD(GetShellFolder) (THIS_ IShellFolder **ppsf) PURE;
  1590. };
  1591. #endif
  1592. typedef enum RESTRICTIONS {
  1593. REST_NONE = 0x00000000,
  1594. REST_NORUN = 0x00000001,
  1595. REST_NOCLOSE = 0x00000002,
  1596. REST_NOSAVESET = 0x00000004,
  1597. REST_NOFILEMENU = 0x00000008,
  1598. REST_NOSETFOLDERS = 0x00000010,
  1599. REST_NOSETTASKBAR = 0x00000020,
  1600. REST_NODESKTOP = 0x00000040,
  1601. REST_NOFIND = 0x00000080,
  1602. REST_NODRIVES = 0x00000100,
  1603. REST_NODRIVEAUTORUN = 0x00000200,
  1604. REST_NODRIVETYPEAUTORUN = 0x00000400,
  1605. REST_NONETHOOD = 0x00000800,
  1606. REST_STARTBANNER = 0x00001000,
  1607. REST_RESTRICTRUN = 0x00002000,
  1608. REST_NOPRINTERTABS = 0x00004000,
  1609. REST_NOPRINTERDELETE = 0x00008000,
  1610. REST_NOPRINTERADD = 0x00010000,
  1611. REST_NOSTARTMENUSUBFOLDERS = 0x00020000,
  1612. REST_MYDOCSONNET = 0x00040000,
  1613. REST_NOEXITTODOS = 0x00080000,
  1614. REST_ENFORCESHELLEXTSECURITY = 0x00100000,
  1615. REST_LINKRESOLVEIGNORELINKINFO = 0x00200000,
  1616. REST_NOCOMMONGROUPS = 0x00400000,
  1617. REST_SEPARATEDESKTOPPROCESS = 0x00800000,
  1618. REST_NOWEB = 0x01000000,
  1619. REST_NOTRAYCONTEXTMENU = 0x02000000,
  1620. REST_NOVIEWCONTEXTMENU = 0x04000000,
  1621. REST_NONETCONNECTDISCONNECT = 0x08000000,
  1622. REST_STARTMENULOGOFF = 0x10000000,
  1623. REST_NOSETTINGSASSIST = 0x20000000,
  1624. REST_NOINTERNETICON = 0x40000001,
  1625. REST_NORECENTDOCSHISTORY = 0x40000002,
  1626. REST_NORECENTDOCSMENU = 0x40000003,
  1627. REST_NOACTIVEDESKTOP = 0x40000004,
  1628. REST_NOACTIVEDESKTOPCHANGES = 0x40000005,
  1629. REST_NOFAVORITESMENU = 0x40000006,
  1630. REST_CLEARRECENTDOCSONEXIT = 0x40000007,
  1631. REST_CLASSICSHELL = 0x40000008,
  1632. REST_NOCUSTOMIZEWEBVIEW = 0x40000009,
  1633. REST_NOHTMLWALLPAPER = 0x40000010,
  1634. REST_NOCHANGINGWALLPAPER = 0x40000011,
  1635. REST_NODESKCOMP = 0x40000012,
  1636. REST_NOADDDESKCOMP = 0x40000013,
  1637. REST_NODELDESKCOMP = 0x40000014,
  1638. REST_NOCLOSEDESKCOMP = 0x40000015,
  1639. REST_NOCLOSE_DRAGDROPBAND = 0x40000016,
  1640. REST_NOMOVINGBAND = 0x40000017,
  1641. REST_NOEDITDESKCOMP = 0x40000018,
  1642. REST_NORESOLVESEARCH = 0x40000019,
  1643. REST_NORESOLVETRACK = 0x4000001a,
  1644. REST_FORCECOPYACLWITHFILE = 0x4000001b,
  1645. #if NTDDI_VERSION < 0x06000000
  1646. REST_NOLOGO3CHANNELNOTIFY = 0x4000001c,
  1647. #endif
  1648. REST_NOFORGETSOFTWAREUPDATE = 0x4000001d,
  1649. REST_NOSETACTIVEDESKTOP = 0x4000001e,
  1650. REST_NOUPDATEWINDOWS = 0x4000001f,
  1651. REST_NOCHANGESTARMENU = 0x40000020,
  1652. REST_NOFOLDEROPTIONS = 0x40000021,
  1653. REST_HASFINDCOMPUTERS = 0x40000022,
  1654. REST_INTELLIMENUS = 0x40000023,
  1655. REST_RUNDLGMEMCHECKBOX = 0x40000024,
  1656. REST_ARP_ShowPostSetup = 0x40000025,
  1657. REST_NOCSC = 0x40000026,
  1658. REST_NOCONTROLPANEL = 0x40000027,
  1659. REST_ENUMWORKGROUP = 0x40000028,
  1660. REST_ARP_NOARP = 0x40000029,
  1661. REST_ARP_NOREMOVEPAGE = 0x4000002a,
  1662. REST_ARP_NOADDPAGE = 0x4000002b,
  1663. REST_ARP_NOWINSETUPPAGE = 0x4000002c,
  1664. REST_GREYMSIADS = 0x4000002d,
  1665. REST_NOCHANGEMAPPEDDRIVELABEL = 0x4000002e,
  1666. REST_NOCHANGEMAPPEDDRIVECOMMENT = 0x4000002f,
  1667. REST_MaxRecentDocs = 0x40000030,
  1668. REST_NONETWORKCONNECTIONS = 0x40000031,
  1669. REST_FORCESTARTMENULOGOFF = 0x40000032,
  1670. REST_NOWEBVIEW = 0x40000033,
  1671. REST_NOCUSTOMIZETHISFOLDER = 0x40000034,
  1672. REST_NOENCRYPTION = 0x40000035,
  1673. REST_DONTSHOWSUPERHIDDEN = 0x40000037,
  1674. REST_NOSHELLSEARCHBUTTON = 0x40000038,
  1675. REST_NOHARDWARETAB = 0x40000039,
  1676. REST_NORUNASINSTALLPROMPT = 0x4000003a,
  1677. REST_PROMPTRUNASINSTALLNETPATH = 0x4000003b,
  1678. REST_NOMANAGEMYCOMPUTERVERB = 0x4000003c,
  1679. REST_DISALLOWRUN = 0x4000003e,
  1680. REST_NOWELCOMESCREEN = 0x4000003f,
  1681. REST_RESTRICTCPL = 0x40000040,
  1682. REST_DISALLOWCPL = 0x40000041,
  1683. REST_NOSMBALLOONTIP = 0x40000042,
  1684. REST_NOSMHELP = 0x40000043,
  1685. REST_NOWINKEYS = 0x40000044,
  1686. REST_NOENCRYPTONMOVE = 0x40000045,
  1687. REST_NOLOCALMACHINERUN = 0x40000046,
  1688. REST_NOCURRENTUSERRUN = 0x40000047,
  1689. REST_NOLOCALMACHINERUNONCE = 0x40000048,
  1690. REST_NOCURRENTUSERRUNONCE = 0x40000049,
  1691. REST_FORCEACTIVEDESKTOPON = 0x4000004a,
  1692. REST_NOVIEWONDRIVE = 0x4000004c,
  1693. REST_NONETCRAWL = 0x4000004d,
  1694. REST_NOSHAREDDOCUMENTS = 0x4000004e,
  1695. REST_NOSMMYDOCS = 0x4000004f,
  1696. REST_NOSMMYPICS = 0x40000050,
  1697. REST_ALLOWBITBUCKDRIVES = 0x40000051,
  1698. REST_NONLEGACYSHELLMODE = 0x40000052,
  1699. REST_NOCONTROLPANELBARRICADE = 0x40000053,
  1700. REST_NOSTARTPAGE = 0x40000054,
  1701. REST_NOAUTOTRAYNOTIFY = 0x40000055,
  1702. REST_NOTASKGROUPING = 0x40000056,
  1703. REST_NOCDBURNING = 0x40000057,
  1704. REST_MYCOMPNOPROP = 0x40000058,
  1705. REST_MYDOCSNOPROP = 0x40000059,
  1706. REST_NOSTARTPANEL = 0x4000005a,
  1707. REST_NODISPLAYAPPEARANCEPAGE = 0x4000005b,
  1708. REST_NOTHEMESTAB = 0x4000005c,
  1709. REST_NOVISUALSTYLECHOICE = 0x4000005d,
  1710. REST_NOSIZECHOICE = 0x4000005e,
  1711. REST_NOCOLORCHOICE = 0x4000005f,
  1712. REST_SETVISUALSTYLE = 0x40000060,
  1713. REST_STARTRUNNOHOMEPATH = 0x40000061,
  1714. REST_NOUSERNAMEINSTARTPANEL = 0x40000062,
  1715. REST_NOMYCOMPUTERICON = 0x40000063,
  1716. REST_NOSMNETWORKPLACES = 0x40000064,
  1717. REST_NOSMPINNEDLIST = 0x40000065,
  1718. REST_NOSMMYMUSIC = 0x40000066,
  1719. REST_NOSMEJECTPC = 0x40000067,
  1720. REST_NOSMMOREPROGRAMS = 0x40000068,
  1721. REST_NOSMMFUPROGRAMS = 0x40000069,
  1722. REST_NOTRAYITEMSDISPLAY = 0x4000006a,
  1723. REST_NOTOOLBARSONTASKBAR = 0x4000006b,
  1724. REST_NOSMCONFIGUREPROGRAMS = 0x4000006f,
  1725. REST_HIDECLOCK = 0x40000070,
  1726. REST_NOLOWDISKSPACECHECKS = 0x40000071,
  1727. REST_NOENTIRENETWORK = 0x40000072,
  1728. REST_NODESKTOPCLEANUP = 0x40000073,
  1729. REST_BITBUCKNUKEONDELETE = 0x40000074,
  1730. REST_BITBUCKCONFIRMDELETE = 0x40000075,
  1731. REST_BITBUCKNOPROP = 0x40000076,
  1732. REST_NODISPBACKGROUND = 0x40000077,
  1733. REST_NODISPSCREENSAVEPG = 0x40000078,
  1734. REST_NODISPSETTINGSPG = 0x40000079,
  1735. REST_NODISPSCREENSAVEPREVIEW = 0x4000007a,
  1736. REST_NODISPLAYCPL = 0x4000007b,
  1737. REST_HIDERUNASVERB = 0x4000007c,
  1738. REST_NOTHUMBNAILCACHE = 0x4000007d,
  1739. REST_NOSTRCMPLOGICAL = 0x4000007e,
  1740. REST_NOPUBLISHWIZARD = 0x4000007f,
  1741. REST_NOONLINEPRINTSWIZARD = 0x40000080,
  1742. REST_NOWEBSERVICES = 0x40000081,
  1743. REST_ALLOWUNHASHEDWEBVIEW = 0x40000082,
  1744. REST_ALLOWLEGACYWEBVIEW = 0x40000083,
  1745. REST_REVERTWEBVIEWSECURITY = 0x40000084,
  1746. REST_INHERITCONSOLEHANDLES = 0x40000086,
  1747. #if NTDDI_VERSION < 0x06000000
  1748. REST_SORTMAXITEMCOUNT = 0x40000087,
  1749. #endif
  1750. REST_NOREMOTERECURSIVEEVENTS = 0x40000089,
  1751. REST_NOREMOTECHANGENOTIFY = 0x40000091,
  1752. #if NTDDI_VERSION < 0x06000000
  1753. REST_NOSIMPLENETIDLIST = 0x40000092,
  1754. #endif
  1755. REST_NOENUMENTIRENETWORK = 0x40000093,
  1756. #if NTDDI_VERSION < 0x06000000
  1757. REST_NODETAILSTHUMBNAILONNETWORK= 0x40000094,
  1758. #endif
  1759. REST_NOINTERNETOPENWITH = 0x40000095,
  1760. REST_DONTRETRYBADNETNAME = 0x4000009b,
  1761. REST_ALLOWFILECLSIDJUNCTIONS = 0x4000009c,
  1762. REST_NOUPNPINSTALL = 0x4000009d,
  1763. REST_ARP_DONTGROUPPATCHES = 0x400000ac,
  1764. REST_ARP_NOCHOOSEPROGRAMSPAGE = 0x400000ad,
  1765. REST_NODISCONNECT = 0x41000001,
  1766. REST_NOSECURITY = 0x41000002,
  1767. REST_NOFILEASSOCIATE = 0x41000003,
  1768. REST_ALLOWCOMMENTTOGGLE = 0x41000004
  1769. #if NTDDI_VERSION < 0x06000000
  1770. , REST_USEDESKTOPINICACHE = 0x41000005
  1771. #endif
  1772. } RESTRICTIONS;
  1773. SHSTDAPI_(IStream *) OpenRegStream (HKEY hkey, PCWSTR pszSubkey, PCWSTR pszValue, DWORD grfMode);
  1774. SHSTDAPI_(WINBOOL) SHFindFiles (PCIDLIST_ABSOLUTE pidlFolder, PCIDLIST_ABSOLUTE pidlSaveFile);
  1775. SHSTDAPI_(void) PathGetShortPath (PWSTR pszLongPath);
  1776. SHSTDAPI_(WINBOOL) PathYetAnotherMakeUniqueName (PWSTR pszUniqueName, PCWSTR pszPath, PCWSTR pszShort, PCWSTR pszFileSpec);
  1777. SHSTDAPI_(WINBOOL) Win32DeleteFile (PCWSTR pszPath);
  1778. #if NTDDI_VERSION < 0x06000000
  1779. #define PPCF_ADDQUOTES 0x00000001
  1780. #define PPCF_ADDARGUMENTS 0x00000003
  1781. #define PPCF_NODIRECTORIES 0x00000010
  1782. #define PPCF_FORCEQUALIFY 0x00000040
  1783. #define PPCF_LONGESTPOSSIBLE 0x00000080
  1784. SHSTDAPI_(LONG) PathProcessCommand (PCWSTR pszSrc, PWSTR pszDest, int cchDest, DWORD dwFlags);
  1785. #endif
  1786. SHSTDAPI_(DWORD) SHRestricted (RESTRICTIONS rest);
  1787. SHSTDAPI_(WINBOOL) SignalFileOpen (PCIDLIST_ABSOLUTE pidl);
  1788. #if NTDDI_VERSION >= 0x06000000
  1789. SHSTDAPI AssocGetDetailsOfPropKey (IShellFolder *psf, PCUITEMID_CHILD pidl, const PROPERTYKEY *pkey, VARIANT *pv, WINBOOL *pfFoundPropKey);
  1790. #endif
  1791. #if NTDDI_VERSION < 0x06000000
  1792. SHSTDAPI SHLoadOLE (LPARAM lParam);
  1793. #endif
  1794. SHSTDAPI SHStartNetConnectionDialogA (HWND hwnd, LPCSTR pszRemoteName, DWORD dwType);
  1795. SHSTDAPI SHStartNetConnectionDialogW (HWND hwnd, LPCWSTR pszRemoteName, DWORD dwType);
  1796. SHSTDAPI SHDefExtractIconA (LPCSTR pszIconFile, int iIndex, UINT uFlags, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
  1797. SHSTDAPI SHDefExtractIconW (LPCWSTR pszIconFile, int iIndex, UINT uFlags, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
  1798. #define SHStartNetConnectionDialog __MINGW_NAME_AW(SHStartNetConnectionDialog)
  1799. #define SHDefExtractIcon __MINGW_NAME_AW(SHDefExtractIcon)
  1800. enum tagOPEN_AS_INFO_FLAGS {
  1801. OAIF_ALLOW_REGISTRATION = 0x1,
  1802. OAIF_REGISTER_EXT = 0x2,
  1803. OAIF_EXEC = 0x4,
  1804. OAIF_FORCE_REGISTRATION = 0x8
  1805. #if NTDDI_VERSION >= 0x06000000
  1806. , OAIF_HIDE_REGISTRATION = 0x20,
  1807. OAIF_URL_PROTOCOL = 0x40
  1808. #endif
  1809. #if NTDDI_VERSION >= 0x06020000
  1810. , OAIF_FILE_IS_URI = 0x80
  1811. #endif
  1812. };
  1813. typedef int OPEN_AS_INFO_FLAGS;
  1814. #include <pshpack8.h>
  1815. typedef struct _openasinfo {
  1816. LPCWSTR pcszFile;
  1817. LPCWSTR pcszClass;
  1818. OPEN_AS_INFO_FLAGS oaifInFlags;
  1819. } OPENASINFO,*POPENASINFO;
  1820. #include <poppack.h>
  1821. #if NTDDI_VERSION >= 0x06000000
  1822. SHSTDAPI SHOpenWithDialog (HWND hwndParent, const OPENASINFO *poainfo);
  1823. #endif
  1824. SHSTDAPI_(WINBOOL) Shell_GetImageLists (HIMAGELIST *phiml, HIMAGELIST *phimlSmall);
  1825. SHSTDAPI_(int) Shell_GetCachedImageIndex (PCWSTR pwszIconPath, int iIconIndex, UINT uIconFlags);
  1826. #if NTDDI_VERSION >= 0x06000000
  1827. SHSTDAPI_(int) Shell_GetCachedImageIndexA (LPCSTR pszIconPath, int iIconIndex, UINT uIconFlags);
  1828. SHSTDAPI_(int) Shell_GetCachedImageIndexW (LPCWSTR pszIconPath, int iIconIndex, UINT uIconFlags);
  1829. #define Shell_GetCachedImageIndex __MINGW_NAME_AW(Shell_GetCachedImageIndex)
  1830. #endif
  1831. #undef INTERFACE
  1832. #define INTERFACE IDocViewSite
  1833. DECLARE_INTERFACE_IID_ (IDocViewSite, IUnknown, "87D605E0-C511-11CF-89A9-00A0C9054129") {
  1834. STDMETHOD(OnSetTitle) (THIS_ VARIANTARG *pvTitle) PURE;
  1835. };
  1836. #define VALIDATEUNC_CONNECT 0x0001
  1837. #define VALIDATEUNC_NOUI 0x0002
  1838. #define VALIDATEUNC_PRINT 0x0004
  1839. #if NTDDI_VERSION >= 0x06000000
  1840. #define VALIDATEUNC_PERSIST 0x0008
  1841. #define VALIDATEUNC_VALID 0x000f
  1842. #else
  1843. #define VALIDATEUNC_VALID 0x0007
  1844. #endif
  1845. SHSTDAPI_(WINBOOL) SHValidateUNC (HWND hwndOwner, PWSTR pszFile, UINT fConnect);
  1846. #define OPENPROPS_NONE 0x0000
  1847. #define OPENPROPS_INHIBITPIF 0x8000
  1848. #define GETPROPS_NONE 0x0000
  1849. #define SETPROPS_NONE 0x0000
  1850. #define CLOSEPROPS_NONE 0x0000
  1851. #define CLOSEPROPS_DISCARD 0x0001
  1852. #define PIFNAMESIZE 30
  1853. #define PIFSTARTLOCSIZE 63
  1854. #define PIFDEFPATHSIZE 64
  1855. #define PIFPARAMSSIZE 64
  1856. #define PIFSHPROGSIZE 64
  1857. #define PIFSHDATASIZE 64
  1858. #define PIFDEFFILESIZE 80
  1859. #define PIFMAXFILEPATH 260
  1860. typedef struct PROPPRG {
  1861. WORD flPrg;
  1862. WORD flPrgInit;
  1863. CHAR achTitle[PIFNAMESIZE];
  1864. CHAR achCmdLine[PIFSTARTLOCSIZE+PIFPARAMSSIZE+1];
  1865. CHAR achWorkDir[PIFDEFPATHSIZE];
  1866. WORD wHotKey;
  1867. CHAR achIconFile[PIFDEFFILESIZE];
  1868. WORD wIconIndex;
  1869. DWORD dwEnhModeFlags;
  1870. DWORD dwRealModeFlags;
  1871. CHAR achOtherFile[PIFDEFFILESIZE];
  1872. CHAR achPIFFile[PIFMAXFILEPATH];
  1873. } PROPPRG;
  1874. typedef UNALIGNED PROPPRG *PPROPPRG;
  1875. typedef UNALIGNED PROPPRG *LPPROPPRG;
  1876. typedef const UNALIGNED PROPPRG *LPCPROPPRG;
  1877. SHSTDAPI_(HANDLE) PifMgr_OpenProperties (PCWSTR pszApp, PCWSTR pszPIF, UINT hInf, UINT flOpt);
  1878. SHSTDAPI_(int) PifMgr_GetProperties (HANDLE hProps, PCSTR pszGroup, void *lpProps, int cbProps, UINT flOpt);
  1879. SHSTDAPI_(int) PifMgr_SetProperties (HANDLE hProps, PCSTR pszGroup, const void *lpProps, int cbProps, UINT flOpt);
  1880. SHSTDAPI_(HANDLE) PifMgr_CloseProperties (HANDLE hProps, UINT flOpt);
  1881. SHSTDAPI_(void) SHSetInstanceExplorer (IUnknown *punk);
  1882. SHSTDAPI_(WINBOOL) IsUserAnAdmin (void);
  1883. #undef INTERFACE
  1884. #define INTERFACE IInitializeObject
  1885. DECLARE_INTERFACE_IID_ (IInitializeObject, IUnknown, "4622AD16-FF23-11d0-8D34-00A0C90F2719") {
  1886. STDMETHOD(Initialize) (THIS) PURE;
  1887. };
  1888. enum {
  1889. BMICON_LARGE = 0,
  1890. BMICON_SMALL
  1891. };
  1892. #undef INTERFACE
  1893. #define INTERFACE IBanneredBar
  1894. DECLARE_INTERFACE_IID_ (IBanneredBar, IUnknown, "596A9A94-013E-11d1-8D34-00A0C90F2719") {
  1895. STDMETHOD(SetIconSize) (THIS_ DWORD iIcon) PURE;
  1896. STDMETHOD(GetIconSize) (THIS_ DWORD *piIcon) PURE;
  1897. STDMETHOD(SetBitmap) (THIS_ HBITMAP hBitmap) PURE;
  1898. STDMETHOD(GetBitmap) (THIS_ HBITMAP *phBitmap) PURE;
  1899. };
  1900. SHSTDAPI_(LRESULT) SHShellFolderView_Message (HWND hwndMain, UINT uMsg, LPARAM lParam);
  1901. #undef INTERFACE
  1902. #define INTERFACE IShellFolderViewCB
  1903. DECLARE_INTERFACE_IID_ (IShellFolderViewCB, IUnknown, "2047E320-F2A9-11CE-AE65-08002B2E1262") {
  1904. STDMETHOD(MessageSFVCB) (THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE;
  1905. };
  1906. #include <pshpack8.h>
  1907. #define QCMINFO_PLACE_BEFORE 0
  1908. #define QCMINFO_PLACE_AFTER 1
  1909. typedef struct _QCMINFO_IDMAP_PLACEMENT {
  1910. UINT id;
  1911. UINT fFlags;
  1912. } QCMINFO_IDMAP_PLACEMENT;
  1913. typedef struct _QCMINFO_IDMAP {
  1914. UINT nMaxIds;
  1915. QCMINFO_IDMAP_PLACEMENT pIdList[1];
  1916. } QCMINFO_IDMAP;
  1917. typedef struct _QCMINFO {
  1918. HMENU hmenu;
  1919. UINT indexMenu;
  1920. UINT idCmdFirst;
  1921. UINT idCmdLast;
  1922. QCMINFO_IDMAP const *pIdMap;
  1923. } QCMINFO;
  1924. typedef QCMINFO *LPQCMINFO;
  1925. #define TBIF_APPEND 0
  1926. #define TBIF_PREPEND 1
  1927. #define TBIF_REPLACE 2
  1928. #define TBIF_DEFAULT 0x00000000
  1929. #define TBIF_INTERNETBAR 0x00010000
  1930. #define TBIF_STANDARDTOOLBAR 0x00020000
  1931. #define TBIF_NOTOOLBAR 0x00030000
  1932. typedef struct _TBINFO {
  1933. UINT cbuttons;
  1934. UINT uFlags;
  1935. } TBINFO;
  1936. typedef TBINFO *LPTBINFO;
  1937. typedef struct _DETAILSINFO {
  1938. PCUITEMID_CHILD pidl;
  1939. int fmt;
  1940. int cxChar;
  1941. STRRET str;
  1942. int iImage;
  1943. } DETAILSINFO;
  1944. typedef DETAILSINFO *PDETAILSINFO;
  1945. typedef struct _SFVM_PROPPAGE_DATA {
  1946. DWORD dwReserved;
  1947. LPFNADDPROPSHEETPAGE pfn;
  1948. LPARAM lParam;
  1949. } SFVM_PROPPAGE_DATA;
  1950. typedef struct _SFVM_HELPTOPIC_DATA {
  1951. WCHAR wszHelpFile[MAX_PATH];
  1952. WCHAR wszHelpTopic[MAX_PATH];
  1953. } SFVM_HELPTOPIC_DATA;
  1954. #define SFVM_MERGEMENU 1
  1955. #define SFVM_INVOKECOMMAND 2
  1956. #define SFVM_GETHELPTEXT 3
  1957. #define SFVM_GETTOOLTIPTEXT 4
  1958. #define SFVM_GETBUTTONINFO 5
  1959. #define SFVM_GETBUTTONS 6
  1960. #define SFVM_INITMENUPOPUP 7
  1961. #define SFVM_FSNOTIFY 14
  1962. #define SFVM_WINDOWCREATED 15
  1963. #define SFVM_GETDETAILSOF 23
  1964. #define SFVM_COLUMNCLICK 24
  1965. #define SFVM_QUERYFSNOTIFY 25
  1966. #define SFVM_DEFITEMCOUNT 26
  1967. #define SFVM_DEFVIEWMODE 27
  1968. #define SFVM_UNMERGEMENU 28
  1969. #define SFVM_UPDATESTATUSBAR 31
  1970. #define SFVM_BACKGROUNDENUM 32
  1971. #define SFVM_DIDDRAGDROP 36
  1972. #define SFVM_SETISFV 39
  1973. #define SFVM_THISIDLIST 41
  1974. #define SFVM_ADDPROPERTYPAGES 47
  1975. #define SFVM_BACKGROUNDENUMDONE 48
  1976. #define SFVM_GETNOTIFY 49
  1977. #define SFVM_GETSORTDEFAULTS 53
  1978. #define SFVM_SIZE 57
  1979. #define SFVM_GETZONE 58
  1980. #define SFVM_GETPANE 59
  1981. #define SFVM_GETHELPTOPIC 63
  1982. #define SFVM_GETANIMATION 68
  1983. typedef struct _ITEMSPACING {
  1984. int cxSmall;
  1985. int cySmall;
  1986. int cxLarge;
  1987. int cyLarge;
  1988. } ITEMSPACING;
  1989. #define SFVSOC_INVALIDATE_ALL 0x00000001
  1990. #define SFVSOC_NOSCROLL LVSICF_NOSCROLL
  1991. #define SFVS_SELECT_NONE 0x0
  1992. #define SFVS_SELECT_ALLITEMS 0x1
  1993. #define SFVS_SELECT_INVERT 0x2
  1994. #undef INTERFACE
  1995. #define INTERFACE IShellFolderView
  1996. DECLARE_INTERFACE_IID_ (IShellFolderView, IUnknown, "37A378C0-F82D-11CE-AE65-08002B2E1262") {
  1997. STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE;
  1998. STDMETHOD(GetArrangeParam) (THIS_ LPARAM *plParamSort) PURE;
  1999. STDMETHOD(ArrangeGrid) (THIS) PURE;
  2000. STDMETHOD(AutoArrange) (THIS) PURE;
  2001. STDMETHOD(GetAutoArrange) (THIS) PURE;
  2002. STDMETHOD(AddObject) (THIS_ PUITEMID_CHILD pidl, UINT *puItem) PURE;
  2003. STDMETHOD(GetObject) (THIS_ PITEMID_CHILD *ppidl, UINT uItem) PURE;
  2004. STDMETHOD(RemoveObject) (THIS_ PUITEMID_CHILD pidl, UINT *puItem) PURE;
  2005. STDMETHOD(GetObjectCount) (THIS_ UINT *puCount) PURE;
  2006. STDMETHOD(SetObjectCount) (THIS_ UINT uCount, UINT dwFlags) PURE;
  2007. STDMETHOD(UpdateObject) (THIS_ PUITEMID_CHILD pidlOld, PUITEMID_CHILD pidlNew, UINT *puItem) PURE;
  2008. STDMETHOD(RefreshObject) (THIS_ PUITEMID_CHILD pidl, UINT *puItem) PURE;
  2009. STDMETHOD(SetRedraw) (THIS_ WINBOOL bRedraw) PURE;
  2010. STDMETHOD(GetSelectedCount) (THIS_ UINT *puSelected) PURE;
  2011. STDMETHOD(GetSelectedObjects) (THIS_ PCUITEMID_CHILD **pppidl, UINT *puItems) PURE;
  2012. STDMETHOD(IsDropOnSource) (THIS_ IDropTarget *pDropTarget) PURE;
  2013. STDMETHOD(GetDragPoint) (THIS_ POINT *ppt) PURE;
  2014. STDMETHOD(GetDropPoint) (THIS_ POINT *ppt) PURE;
  2015. STDMETHOD(MoveIcons) (THIS_ IDataObject *pDataObject) PURE;
  2016. STDMETHOD(SetItemPos) (THIS_ PCUITEMID_CHILD pidl, POINT *ppt) PURE;
  2017. STDMETHOD(IsBkDropTarget) (THIS_ IDropTarget *pDropTarget) PURE;
  2018. STDMETHOD(SetClipboard) (THIS_ WINBOOL bMove) PURE;
  2019. STDMETHOD(SetPoints) (THIS_ IDataObject *pDataObject) PURE;
  2020. STDMETHOD(GetItemSpacing) (THIS_ ITEMSPACING *pSpacing) PURE;
  2021. STDMETHOD(SetCallback) (THIS_ IShellFolderViewCB *pNewCB, IShellFolderViewCB **ppOldCB) PURE;
  2022. STDMETHOD(Select) (THIS_ UINT dwFlags) PURE;
  2023. STDMETHOD(QuerySupport) (THIS_ UINT *pdwSupport) PURE;
  2024. STDMETHOD(SetAutomationObject) (THIS_ IDispatch *pdisp) PURE;
  2025. };
  2026. typedef struct _SFV_CREATE {
  2027. UINT cbSize;
  2028. IShellFolder *pshf;
  2029. IShellView *psvOuter;
  2030. IShellFolderViewCB *psfvcb;
  2031. } SFV_CREATE;
  2032. SHSTDAPI SHCreateShellFolderView (const SFV_CREATE *pcsfv, IShellView **ppsv);
  2033. typedef HRESULT (CALLBACK *LPFNDFMCALLBACK) (IShellFolder *psf, HWND hwnd, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam);
  2034. SHSTDAPI CDefFolderMenu_Create2 (PCIDLIST_ABSOLUTE pidlFolder, HWND hwnd, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IShellFolder *psf, LPFNDFMCALLBACK pfn, UINT nKeys, const HKEY *ahkeys, IContextMenu **ppcm);
  2035. typedef struct {
  2036. HWND hwnd;
  2037. IContextMenuCB *pcmcb;
  2038. PCIDLIST_ABSOLUTE pidlFolder;
  2039. IShellFolder *psf;
  2040. UINT cidl;
  2041. PCUITEMID_CHILD_ARRAY apidl;
  2042. IUnknown *punkAssociationInfo;
  2043. UINT cKeys;
  2044. const HKEY *aKeys;
  2045. } DEFCONTEXTMENU;
  2046. #if NTDDI_VERSION >= 0x06000000
  2047. SHSTDAPI SHCreateDefaultContextMenu (const DEFCONTEXTMENU *pdcm, REFIID riid, void **ppv);
  2048. #endif
  2049. SHSTDAPI_(WINBOOL) SHOpenPropSheetA (LPCSTR pszCaption, HKEY ahkeys[], UINT ckeys, const CLSID *pclsidDefault, IDataObject *pdtobj, IShellBrowser *psb, LPCSTR pStartPage);
  2050. SHSTDAPI_(WINBOOL) SHOpenPropSheetW (LPCWSTR pszCaption, HKEY ahkeys[], UINT ckeys, const CLSID *pclsidDefault, IDataObject *pdtobj, IShellBrowser *psb, LPCWSTR pStartPage);
  2051. #define SHOpenPropSheet __MINGW_NAME_AW(SHOpenPropSheet)
  2052. typedef struct {
  2053. DWORD cbSize;
  2054. DWORD fMask;
  2055. LPARAM lParam;
  2056. UINT idCmdFirst;
  2057. UINT idDefMax;
  2058. LPCMINVOKECOMMANDINFO pici;
  2059. #if NTDDI_VERSION >= 0x06000000
  2060. IUnknown *punkSite;
  2061. #endif
  2062. } DFMICS,*PDFMICS;
  2063. #define DFM_MERGECONTEXTMENU 1
  2064. #define DFM_INVOKECOMMAND 2
  2065. #define DFM_GETHELPTEXT 5
  2066. #define DFM_WM_MEASUREITEM 6
  2067. #define DFM_WM_DRAWITEM 7
  2068. #define DFM_WM_INITMENUPOPUP 8
  2069. #define DFM_VALIDATECMD 9
  2070. #define DFM_MERGECONTEXTMENU_TOP 10
  2071. #define DFM_GETHELPTEXTW 11
  2072. #define DFM_INVOKECOMMANDEX 12
  2073. #define DFM_MAPCOMMANDNAME 13
  2074. #define DFM_GETDEFSTATICID 14
  2075. #define DFM_GETVERBW 15
  2076. #define DFM_GETVERBA 16
  2077. #define DFM_MERGECONTEXTMENU_BOTTOM 17
  2078. #define DFM_MODIFYQCMFLAGS 18
  2079. #define DFM_CMD_DELETE ((UINT)-1)
  2080. #define DFM_CMD_MOVE ((UINT)-2)
  2081. #define DFM_CMD_COPY ((UINT)-3)
  2082. #define DFM_CMD_LINK ((UINT)-4)
  2083. #define DFM_CMD_PROPERTIES ((UINT)-5)
  2084. #define DFM_CMD_NEWFOLDER ((UINT)-6)
  2085. #define DFM_CMD_PASTE ((UINT)-7)
  2086. #define DFM_CMD_VIEWLIST ((UINT)-8)
  2087. #define DFM_CMD_VIEWDETAILS ((UINT)-9)
  2088. #define DFM_CMD_PASTELINK ((UINT)-10)
  2089. #define DFM_CMD_PASTESPECIAL ((UINT)-11)
  2090. #define DFM_CMD_MODALPROP ((UINT)-12)
  2091. #define DFM_CMD_RENAME ((UINT)-13)
  2092. typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK) (IShellView *psvOuter, IShellFolder *psf, HWND hwndMain, UINT uMsg, WPARAM wParam, LPARAM lParam);
  2093. typedef struct _CSFV {
  2094. UINT cbSize;
  2095. IShellFolder *pshf;
  2096. IShellView *psvOuter;
  2097. PCIDLIST_ABSOLUTE pidl;
  2098. LONG lEvents;
  2099. LPFNVIEWCALLBACK pfnCallback;
  2100. FOLDERVIEWMODE fvm;
  2101. } CSFV,*LPCSFV;
  2102. #define SFVM_REARRANGE 0x00000001
  2103. #define SFVM_ADDOBJECT 0x00000003
  2104. #define SFVM_REMOVEOBJECT 0x00000006
  2105. #define SFVM_UPDATEOBJECT 0x00000007
  2106. #define SFVM_GETSELECTEDOBJECTS 0x00000009
  2107. #define SFVM_SETITEMPOS 0x0000000e
  2108. #define SFVM_SETCLIPBOARD 0x00000010
  2109. #define SFVM_SETPOINTS 0x00000017
  2110. #define ShellFolderView_ReArrange(_hwnd, _lparam) (WINBOOL)SHShellFolderView_Message (_hwnd, SFVM_REARRANGE, _lparam)
  2111. #define ShellFolderView_AddObject(_hwnd, _pidl) (LPARAM)SHShellFolderView_Message (_hwnd, SFVM_ADDOBJECT,(LPARAM) (_pidl))
  2112. #define ShellFolderView_RemoveObject(_hwnd, _pidl) (LPARAM)SHShellFolderView_Message (_hwnd, SFVM_REMOVEOBJECT,(LPARAM) (_pidl))
  2113. #define ShellFolderView_UpdateObject(_hwnd, _ppidl) (LPARAM)SHShellFolderView_Message (_hwnd, SFVM_UPDATEOBJECT,(LPARAM) (_ppidl))
  2114. #define ShellFolderView_GetSelectedObjects(_hwnd, ppidl) (LPARAM)SHShellFolderView_Message (_hwnd, SFVM_GETSELECTEDOBJECTS,(LPARAM) (ppidl))
  2115. #define ShellFolderView_SetItemPos(_hwnd, _pidl, _x, _y) { SFV_SETITEMPOS _sip = {_pidl, { _x, _y } }; SHShellFolderView_Message (_hwnd, SFVM_SETITEMPOS,(LPARAM) (LPSFV_SETITEMPOS) & _sip); }
  2116. #define ShellFolderView_SetClipboard(_hwnd, _dwEffect) (void)SHShellFolderView_Message (_hwnd, SFVM_SETCLIPBOARD,(LPARAM) (DWORD) (_dwEffect))
  2117. #define ShellFolderView_SetPoints(_hwnd, _pdtobj) (void)SHShellFolderView_Message (_hwnd, SFVM_SETPOINTS,(LPARAM) (_pdtobj))
  2118. typedef struct _SFV_SETITEMPOS {
  2119. PCUITEMID_CHILD pidl;
  2120. POINT pt;
  2121. } SFV_SETITEMPOS;
  2122. typedef SFV_SETITEMPOS *LPSFV_SETITEMPOS;
  2123. typedef const SFV_SETITEMPOS *PCSFV_SETITEMPOS;
  2124. #include <poppack.h>
  2125. SHSTDAPI_(IContextMenu *) SHFind_InitMenuPopup (HMENU hmenu, HWND hwndOwner, UINT idCmdFirst, UINT idCmdLast);
  2126. SHSTDAPI SHCreateShellFolderViewEx (CSFV *pcsfv, IShellView **ppsv);
  2127. #define PID_IS_URL 2
  2128. #define PID_IS_NAME 4
  2129. #define PID_IS_WORKINGDIR 5
  2130. #define PID_IS_HOTKEY 6
  2131. #define PID_IS_SHOWCMD 7
  2132. #define PID_IS_ICONINDEX 8
  2133. #define PID_IS_ICONFILE 9
  2134. #define PID_IS_WHATSNEW 10
  2135. #define PID_IS_AUTHOR 11
  2136. #define PID_IS_DESCRIPTION 12
  2137. #define PID_IS_COMMENT 13
  2138. #define PID_IS_ROAMED 15
  2139. #define PID_INTSITE_WHATSNEW 2
  2140. #define PID_INTSITE_AUTHOR 3
  2141. #define PID_INTSITE_LASTVISIT 4
  2142. #define PID_INTSITE_LASTMOD 5
  2143. #define PID_INTSITE_VISITCOUNT 6
  2144. #define PID_INTSITE_DESCRIPTION 7
  2145. #define PID_INTSITE_COMMENT 8
  2146. #define PID_INTSITE_FLAGS 9
  2147. #define PID_INTSITE_CONTENTLEN 10
  2148. #define PID_INTSITE_CONTENTCODE 11
  2149. #define PID_INTSITE_RECURSE 12
  2150. #define PID_INTSITE_WATCH 13
  2151. #define PID_INTSITE_SUBSCRIPTION 14
  2152. #define PID_INTSITE_URL 15
  2153. #define PID_INTSITE_TITLE 16
  2154. #define PID_INTSITE_CODEPAGE 18
  2155. #define PID_INTSITE_TRACKING 19
  2156. #define PID_INTSITE_ICONINDEX 20
  2157. #define PID_INTSITE_ICONFILE 21
  2158. #define PID_INTSITE_ROAMED 34
  2159. #define PIDISF_RECENTLYCHANGED 0x00000001
  2160. #define PIDISF_CACHEDSTICKY 0x00000002
  2161. #define PIDISF_CACHEIMAGES 0x00000010
  2162. #define PIDISF_FOLLOWALLLINKS 0x00000020
  2163. #define PIDISM_GLOBAL 0
  2164. #define PIDISM_WATCH 1
  2165. #define PIDISM_DONTWATCH 2
  2166. #define PIDISR_UP_TO_DATE 0
  2167. #define PIDISR_NEEDS_ADD 1
  2168. #define PIDISR_NEEDS_UPDATE 2
  2169. #define PIDISR_NEEDS_DELETE 3
  2170. typedef struct {
  2171. WINBOOL fShowAllObjects : 1;
  2172. WINBOOL fShowExtensions : 1;
  2173. WINBOOL fNoConfirmRecycle : 1;
  2174. WINBOOL fShowSysFiles : 1;
  2175. WINBOOL fShowCompColor : 1;
  2176. WINBOOL fDoubleClickInWebView : 1;
  2177. WINBOOL fDesktopHTML : 1;
  2178. WINBOOL fWin95Classic : 1;
  2179. WINBOOL fDontPrettyPath : 1;
  2180. WINBOOL fShowAttribCol : 1;
  2181. WINBOOL fMapNetDrvBtn : 1;
  2182. WINBOOL fShowInfoTip : 1;
  2183. WINBOOL fHideIcons : 1;
  2184. WINBOOL fWebView : 1;
  2185. WINBOOL fFilter : 1;
  2186. WINBOOL fShowSuperHidden : 1;
  2187. WINBOOL fNoNetCrawling : 1;
  2188. DWORD dwWin95Unused;
  2189. UINT uWin95Unused;
  2190. LONG lParamSort;
  2191. int iSortDirection;
  2192. UINT version;
  2193. UINT uNotUsed;
  2194. WINBOOL fSepProcess: 1;
  2195. WINBOOL fStartPanelOn: 1;
  2196. WINBOOL fShowStartPage: 1;
  2197. WINBOOL fAutoCheckSelect: 1;
  2198. WINBOOL fIconsOnly: 1;
  2199. WINBOOL fShowTypeOverlay: 1;
  2200. WINBOOL fShowStatusBar : 1;
  2201. UINT fSpareFlags : 9;
  2202. } SHELLSTATEA,*LPSHELLSTATEA;
  2203. typedef struct {
  2204. WINBOOL fShowAllObjects : 1;
  2205. WINBOOL fShowExtensions : 1;
  2206. WINBOOL fNoConfirmRecycle : 1;
  2207. WINBOOL fShowSysFiles : 1;
  2208. WINBOOL fShowCompColor : 1;
  2209. WINBOOL fDoubleClickInWebView : 1;
  2210. WINBOOL fDesktopHTML : 1;
  2211. WINBOOL fWin95Classic : 1;
  2212. WINBOOL fDontPrettyPath : 1;
  2213. WINBOOL fShowAttribCol : 1;
  2214. WINBOOL fMapNetDrvBtn : 1;
  2215. WINBOOL fShowInfoTip : 1;
  2216. WINBOOL fHideIcons : 1;
  2217. WINBOOL fWebView : 1;
  2218. WINBOOL fFilter : 1;
  2219. WINBOOL fShowSuperHidden : 1;
  2220. WINBOOL fNoNetCrawling : 1;
  2221. DWORD dwWin95Unused;
  2222. UINT uWin95Unused;
  2223. LONG lParamSort;
  2224. int iSortDirection;
  2225. UINT version;
  2226. UINT uNotUsed;
  2227. WINBOOL fSepProcess: 1;
  2228. WINBOOL fStartPanelOn: 1;
  2229. WINBOOL fShowStartPage: 1;
  2230. WINBOOL fAutoCheckSelect: 1;
  2231. WINBOOL fIconsOnly: 1;
  2232. WINBOOL fShowTypeOverlay: 1;
  2233. WINBOOL fShowStatusBar : 1;
  2234. UINT fSpareFlags : 9;
  2235. } SHELLSTATEW,*LPSHELLSTATEW;
  2236. #define SHELLSTATEVERSION_IE4 9
  2237. #define SHELLSTATEVERSION_WIN2K 10
  2238. #define SHELLSTATE __MINGW_NAME_AW(SHELLSTATE)
  2239. #define LPSHELLSTATE __MINGW_NAME_AW(LPSHELLSTATE)
  2240. #define SHELLSTATE_SIZE_WIN95 FIELD_OFFSET (SHELLSTATE, lParamSort)
  2241. #define SHELLSTATE_SIZE_NT4 FIELD_OFFSET (SHELLSTATE, version)
  2242. #define SHELLSTATE_SIZE_IE4 FIELD_OFFSET (SHELLSTATE, uNotUsed)
  2243. #define SHELLSTATE_SIZE_WIN2K sizeof (SHELLSTATE)
  2244. SHSTDAPI_(void) SHGetSetSettings (LPSHELLSTATE lpss, DWORD dwMask, WINBOOL bSet);
  2245. typedef struct {
  2246. WINBOOL fShowAllObjects : 1;
  2247. WINBOOL fShowExtensions : 1;
  2248. WINBOOL fNoConfirmRecycle : 1;
  2249. WINBOOL fShowSysFiles : 1;
  2250. WINBOOL fShowCompColor : 1;
  2251. WINBOOL fDoubleClickInWebView : 1;
  2252. WINBOOL fDesktopHTML : 1;
  2253. WINBOOL fWin95Classic : 1;
  2254. WINBOOL fDontPrettyPath : 1;
  2255. WINBOOL fShowAttribCol : 1;
  2256. WINBOOL fMapNetDrvBtn : 1;
  2257. WINBOOL fShowInfoTip : 1;
  2258. WINBOOL fHideIcons : 1;
  2259. #if NTDDI_VERSION >= 0x06000000
  2260. WINBOOL fAutoCheckSelect: 1;
  2261. WINBOOL fIconsOnly: 1;
  2262. UINT fRestFlags : 1;
  2263. #else
  2264. UINT fRestFlags : 3;
  2265. #endif
  2266. } SHELLFLAGSTATE,*LPSHELLFLAGSTATE;
  2267. #define SSF_SHOWALLOBJECTS 0x00000001
  2268. #define SSF_SHOWEXTENSIONS 0x00000002
  2269. #define SSF_HIDDENFILEEXTS 0x00000004
  2270. #define SSF_SERVERADMINUI 0x00000004
  2271. #define SSF_SHOWCOMPCOLOR 0x00000008
  2272. #define SSF_SORTCOLUMNS 0x00000010
  2273. #define SSF_SHOWSYSFILES 0x00000020
  2274. #define SSF_DOUBLECLICKINWEBVIEW 0x00000080
  2275. #define SSF_SHOWATTRIBCOL 0x00000100
  2276. #define SSF_DESKTOPHTML 0x00000200
  2277. #define SSF_WIN95CLASSIC 0x00000400
  2278. #define SSF_DONTPRETTYPATH 0x00000800
  2279. #define SSF_SHOWINFOTIP 0x00002000
  2280. #define SSF_MAPNETDRVBUTTON 0x00001000
  2281. #define SSF_NOCONFIRMRECYCLE 0x00008000
  2282. #define SSF_HIDEICONS 0x00004000
  2283. #define SSF_FILTER 0x00010000
  2284. #define SSF_WEBVIEW 0x00020000
  2285. #define SSF_SHOWSUPERHIDDEN 0x00040000
  2286. #define SSF_SEPPROCESS 0x00080000
  2287. #define SSF_NONETCRAWLING 0x00100000
  2288. #define SSF_STARTPANELON 0x00200000
  2289. #define SSF_SHOWSTARTPAGE 0x00400000
  2290. #if NTDDI_VERSION >= 0x06000000
  2291. #define SSF_AUTOCHECKSELECT 0x00800000
  2292. #define SSF_ICONSONLY 0x01000000
  2293. #define SSF_SHOWTYPEOVERLAY 0x02000000
  2294. #endif
  2295. #if NTDDI_VERSION >= 0x06020000
  2296. #define SSF_SHOWSTATUSBAR 0x04000000
  2297. #endif
  2298. SHSTDAPI_(void) SHGetSettings (SHELLFLAGSTATE *psfs, DWORD dwMask);
  2299. SHSTDAPI SHBindToParent (PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv, PCUITEMID_CHILD *ppidlLast);
  2300. #if NTDDI_VERSION >= 0x06000000
  2301. SHSTDAPI SHBindToFolderIDListParent (IShellFolder *psfRoot, PCUIDLIST_RELATIVE pidl, REFIID riid, void **ppv, PCUITEMID_CHILD *ppidlLast);
  2302. SHSTDAPI SHBindToFolderIDListParentEx (IShellFolder *psfRoot, PCUIDLIST_RELATIVE pidl, IBindCtx *ppbc, REFIID riid, void **ppv, PCUITEMID_CHILD *ppidlLast);
  2303. SHSTDAPI SHBindToObject (IShellFolder *psf, PCUIDLIST_RELATIVE pidl, IBindCtx *pbc, REFIID riid, void **ppv);
  2304. #endif
  2305. __forceinline WINBOOL IDListContainerIsConsistent(PCUIDLIST_RELATIVE p, UINT sz) {
  2306. UINT c = sizeof (p->mkid.cb);
  2307. while (c <= sz && p->mkid.cb >= sizeof (p->mkid.cb) && p->mkid.cb <= (sz - c)) {
  2308. c += p->mkid.cb;
  2309. p = ILNext(p);
  2310. }
  2311. return c <= sz && p->mkid.cb == 0;
  2312. }
  2313. SHSTDAPI SHParseDisplayName (PCWSTR pszName, IBindCtx *pbc, PIDLIST_ABSOLUTE *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut);
  2314. #define SHPPFW_NONE 0x00000000
  2315. #define SHPPFW_DEFAULT SHPPFW_DIRCREATE
  2316. #define SHPPFW_DIRCREATE 0x00000001
  2317. #define SHPPFW_ASKDIRCREATE 0x00000002
  2318. #define SHPPFW_IGNOREFILENAME 0x00000004
  2319. #define SHPPFW_NOWRITECHECK 0x00000008
  2320. #define SHPPFW_MEDIACHECKONLY 0x00000010
  2321. SHSTDAPI SHPathPrepareForWriteA (HWND hwnd, IUnknown *punkEnableModless, LPCSTR pszPath, DWORD dwFlags);
  2322. SHSTDAPI SHPathPrepareForWriteW (HWND hwnd, IUnknown *punkEnableModless, LPCWSTR pszPath, DWORD dwFlags);
  2323. #define SHPathPrepareForWrite __MINGW_NAME_AW(SHPathPrepareForWrite)
  2324. #undef INTERFACE
  2325. #define INTERFACE INamedPropertyBag
  2326. DECLARE_INTERFACE_IID_ (INamedPropertyBag, IUnknown, "FB700430-952C-11d1-946F-000000000000") {
  2327. STDMETHOD(ReadPropertyNPB) (THIS_ PCWSTR pszBagname, PCWSTR pszPropName, PROPVARIANT *pVar) PURE;
  2328. STDMETHOD(WritePropertyNPB) (THIS_ PCWSTR pszBagname, PCWSTR pszPropName, PROPVARIANT *pVar) PURE;
  2329. STDMETHOD(RemovePropertyNPB) (THIS_ PCWSTR pszBagname, PCWSTR pszPropName) PURE;
  2330. };
  2331. #ifdef __urlmon_h__
  2332. SHDOCAPI_(DWORD) SoftwareUpdateMessageBox (HWND hWnd, PCWSTR pszDistUnit, DWORD dwFlags, LPSOFTDISTINFO psdi);
  2333. #endif
  2334. SHSTDAPI SHPropStgCreate (IPropertySetStorage *psstg, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD grfMode, DWORD dwDisposition, IPropertyStorage **ppstg, UINT *puCodePage);
  2335. SHSTDAPI SHPropStgReadMultiple (IPropertyStorage *pps, UINT uCodePage, ULONG cpspec, PROPSPEC const rgpspec[], PROPVARIANT rgvar[]);
  2336. SHSTDAPI SHPropStgWriteMultiple (IPropertyStorage *pps, UINT *puCodePage, ULONG cpspec, PROPSPEC const rgpspec[], PROPVARIANT rgvar[], PROPID propidNameFirst);
  2337. SHSTDAPI SHCreateFileExtractIconA (LPCSTR pszFile, DWORD dwFileAttributes, REFIID riid, void **ppv);
  2338. SHSTDAPI SHCreateFileExtractIconW (LPCWSTR pszFile, DWORD dwFileAttributes, REFIID riid, void **ppv);
  2339. #define SHCreateFileExtractIcon __MINGW_NAME_AW(SHCreateFileExtractIcon)
  2340. SHSTDAPI SHLimitInputEdit (HWND hwndEdit, IShellFolder *psf);
  2341. STDAPI SHGetAttributesFromDataObject (IDataObject *pdo, DWORD dwAttributeMask, DWORD *pdwAttributes, UINT *pcItems);
  2342. SHSTDAPI SHMultiFileProperties (IDataObject *pdtobj, DWORD dwFlags);
  2343. SHSTDAPI_(int) SHMapPIDLToSystemImageListIndex (IShellFolder *pshf, PCUITEMID_CHILD pidl, int *piIndexSel);
  2344. SHSTDAPI SHCLSIDFromString (PCWSTR psz, CLSID *pclsid);
  2345. SHSTDAPI SHCreateQueryCancelAutoPlayMoniker (IMoniker **ppmoniker);
  2346. STDAPI_ (void) PerUserInit (void);
  2347. SHSTDAPI_(WINBOOL)SHRunControlPanel (PCWSTR lpcszCmdLine, HWND hwndMsgParent);
  2348. SHSTDAPI_(int) PickIconDlg (HWND hwnd, PWSTR pszIconPath, UINT cchIconPath, int *piIconIndex);
  2349. #include <pshpack8.h>
  2350. typedef struct tagAAMENUFILENAME {
  2351. SHORT cbTotal;
  2352. BYTE rgbReserved[12];
  2353. WCHAR szFileName[1];
  2354. } AASHELLMENUFILENAME,*LPAASHELLMENUFILENAME;
  2355. typedef struct tagAASHELLMENUITEM {
  2356. void *lpReserved1;
  2357. int iReserved;
  2358. UINT uiReserved;
  2359. LPAASHELLMENUFILENAME lpName;
  2360. LPWSTR psz;
  2361. } AASHELLMENUITEM,*LPAASHELLMENUITEM;
  2362. #include <poppack.h>
  2363. #if NTDDI_VERSION >= 0x06010000
  2364. STDAPI StgMakeUniqueName (IStorage *pstgParent, PCWSTR pszFileSpec, DWORD grfMode, REFIID riid, void **ppv);
  2365. #endif
  2366. #if _WIN32_IE >= 0x0700
  2367. typedef enum tagIESHORTCUTFLAGS {
  2368. IESHORTCUT_NEWBROWSER = 0x01,
  2369. IESHORTCUT_OPENNEWTAB = 0x02,
  2370. IESHORTCUT_FORCENAVIGATE = 0x04,
  2371. IESHORTCUT_BACKGROUNDTAB = 0x08,
  2372. } IESHORTCUTFLAGS;
  2373. #endif
  2374. #if _WIN32_IE >= 0x0600
  2375. SHDOCAPI_(WINBOOL) ImportPrivacySettings (PCWSTR pszFilename, WINBOOL *pfParsePrivacyPreferences, WINBOOL *pfParsePerSiteRules);
  2376. #ifndef IEnumPrivacyRecords
  2377. typedef interface IEnumPrivacyRecords IEnumPrivacyRecords;
  2378. #endif
  2379. SHDOCAPI DoPrivacyDlg (HWND hwndOwner, PCWSTR pszUrl, IEnumPrivacyRecords *pPrivacyEnum, WINBOOL fReportAllSites);
  2380. #endif
  2381. #include <poppack.h>
  2382. #ifdef __cplusplus
  2383. }
  2384. #endif
  2385. #endif
  2386. #endif