comparison fuhtark_test/include/winapi/shlobj.h @ 1500:91c8c3b7cbf0

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