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