41623a08c85c915b1ce2ab3d55009b2c4310cc01
[reactos.git] / sdk / include / psdk / shellapi.h
1 #ifndef _SHELLAPI_H
2 #define _SHELLAPI_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 #ifdef _MSC_VER
8 #pragma warning(push)
9 #pragma warning(disable:4201)
10 #endif
11
12 #if !defined(_WIN64)
13 #include <pshpack1.h>
14 #endif
15
16 #define WINSHELLAPI DECLSPEC_IMPORT
17 #define ABE_LEFT 0
18 #define ABE_TOP 1
19 #define ABE_RIGHT 2
20 #define ABE_BOTTOM 3
21 #define ABS_AUTOHIDE 1
22 #define ABS_ALWAYSONTOP 2
23
24 #define SEE_MASK_DEFAULT 0x00000000
25 #define SEE_MASK_CLASSNAME 0x00000001
26 #define SEE_MASK_CLASSKEY 0x00000003
27 #define SEE_MASK_IDLIST 0x00000004
28 #define SEE_MASK_INVOKEIDLIST 0x0000000C
29 #define SEE_MASK_ICON 0x00000010
30 #define SEE_MASK_HOTKEY 0x00000020
31 #define SEE_MASK_NOCLOSEPROCESS 0x00000040
32 #define SEE_MASK_CONNECTNETDRV 0x00000080
33 #define SEE_MASK_NOASYNC 0x00000100
34 #define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
35 #define SEE_MASK_DOENVSUBST 0x00000200
36 #define SEE_MASK_FLAG_NO_UI 0x00000400
37 #define SEE_MASK_UNICODE 0x00004000
38 #define SEE_MASK_NO_CONSOLE 0x00008000
39 /*
40 * NOTE: The following three flags are undocumented and are not present in the
41 * official Windows SDK. However they are used in shobjidl.idl to define some
42 * CMIC_MASK_* flags, these ones being mentioned in the MSDN documentation of
43 * the CMINVOKECOMMANDINFOEX structure.
44 * I affect them this range of values which seems to be strangely empty. Of
45 * course their values may differ from the real ones, however I have no way
46 * of discovering them. If somebody else can verify them, it would be great.
47 */
48 #define SEE_MASK_HASLINKNAME 0x00010000
49 #define SEE_MASK_HASTITLE 0x00020000
50 #define SEE_MASK_FLAG_SEPVDM 0x00040000
51 /* END NOTE */
52 #define SEE_MASK_ASYNCOK 0x00100000
53 #define SEE_MASK_HMONITOR 0x00200000
54 #define SEE_MASK_NOZONECHECKS 0x00800000
55 #define SEE_MASK_NOQUERYCLASSSTORE 0x01000000
56 #define SEE_MASK_WAITFORINPUTIDLE 0x02000000
57 #define SEE_MASK_FLAG_LOG_USAGE 0x04000000
58
59 #define ABM_NEW 0
60 #define ABM_REMOVE 1
61 #define ABM_QUERYPOS 2
62 #define ABM_SETPOS 3
63 #define ABM_GETSTATE 4
64 #define ABM_GETTASKBARPOS 5
65 #define ABM_ACTIVATE 6
66 #define ABM_GETAUTOHIDEBAR 7
67 #define ABM_SETAUTOHIDEBAR 8
68 #define ABM_WINDOWPOSCHANGED 9
69 #define ABN_STATECHANGE 0
70 #define ABN_POSCHANGED 1
71 #define ABN_FULLSCREENAPP 2
72 #define ABN_WINDOWARRANGE 3
73
74 #if (_WIN32_IE >= 0x0500)
75 #define NIN_SELECT (WM_USER + 0)
76 #define NINF_KEY 1
77 #define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
78 #endif
79
80 #if (_WIN32_IE >= 0x0501)
81 #define NIN_BALLOONSHOW (WM_USER + 2)
82 #define NIN_BALLOONHIDE (WM_USER + 3)
83 #define NIN_BALLOONTIMEOUT (WM_USER + 4)
84 #define NIN_BALLOONUSERCLICK (WM_USER + 5)
85 #endif
86 #if (NTDDI_VERSION >= NTDDI_VISTA)
87 #define NIN_POPUPOPEN (WM_USER + 6)
88 #define NIN_POPUPCLOSE (WM_USER + 7)
89 #endif
90
91 #define NIM_ADD 0
92 #define NIM_MODIFY 1
93 #define NIM_DELETE 2
94 #if _WIN32_IE >= 0x0500
95 #define NIM_SETFOCUS 3
96 #define NIM_SETVERSION 4
97 #define NOTIFYICON_VERSION 3
98 #if (NTDDI_VERSION >= NTDDI_VISTA)
99 #define NOTIFYICON_VERSION_4 4
100 #endif
101 #endif
102 #define NIF_MESSAGE 1
103 #define NIF_ICON 2
104 #define NIF_TIP 4
105 #if _WIN32_IE >= 0x0500
106 #define NIF_STATE 8
107 #define NIF_INFO 16
108 #define NIS_HIDDEN 1
109 #define NIS_SHAREDICON 2
110 #define NIIF_NONE 0
111 #define NIIF_INFO 1
112 #define NIIF_WARNING 2
113 #define NIIF_ERROR 3
114 #define NIIF_USER 4
115 #if _WIN32_IE >= 0x0600
116 #define NIF_GUID 32
117 #define NIIF_ICON_MASK 0xf
118 #define NIIF_NOSOUND 0x10
119 #endif /* _WIN32_IE >= 0x0600 */
120 #endif /* _WIN32_IE >= 0x0500 */
121
122 #define SE_ERR_FNF 2
123 #define SE_ERR_PNF 3
124 #define SE_ERR_ACCESSDENIED 5
125 #define SE_ERR_OOM 8
126 #define SE_ERR_DLLNOTFOUND 32
127 #define SE_ERR_SHARE 26
128 #define SE_ERR_ASSOCINCOMPLETE 27
129 #define SE_ERR_DDETIMEOUT 28
130 #define SE_ERR_DDEFAIL 29
131 #define SE_ERR_DDEBUSY 30
132 #define SE_ERR_NOASSOC 31
133 #define FO_MOVE 1
134 #define FO_COPY 2
135 #define FO_DELETE 3
136 #define FO_RENAME 4
137
138 #define FOF_MULTIDESTFILES 0x0001
139 #define FOF_CONFIRMMOUSE 0x0002
140 #define FOF_SILENT 0x0004
141 #define FOF_RENAMEONCOLLISION 0x0008
142 #define FOF_NOCONFIRMATION 0x0010
143 #define FOF_WANTMAPPINGHANDLE 0x0020
144 #define FOF_ALLOWUNDO 0x0040
145 #define FOF_FILESONLY 0x0080
146 #define FOF_SIMPLEPROGRESS 0x0100
147 #define FOF_NOCONFIRMMKDIR 0x0200
148 #define FOF_NOERRORUI 0x0400
149 #define FOF_NOCOPYSECURITYATTRIBS 0x0800
150 #define FOF_NORECURSION 0x1000 /* don't do recursion into directories */
151 #define FOF_NO_CONNECTED_ELEMENTS 0x2000 /* don't do connected files */
152 #define FOF_WANTNUKEWARNING 0x4000 /* during delete operation, warn if delete instead
153 of recycling (even if FOF_NOCONFIRMATION) */
154 #define FOF_NORECURSEREPARSE 0x8000 /* don't do recursion into reparse points */
155
156 #define PO_DELETE 19
157 #define PO_RENAME 20
158 #define PO_PORTCHANGE 32
159 #define PO_REN_PORT 52
160 #define SHGFI_ADDOVERLAYS 32
161 #define SHGFI_OVERLAYINDEX 64
162 #define SHGFI_ICON 256
163 #define SHGFI_DISPLAYNAME 512
164 #define SHGFI_TYPENAME 1024
165 #define SHGFI_ATTRIBUTES 2048
166 #define SHGFI_ICONLOCATION 4096
167 #define SHGFI_EXETYPE 8192
168 #define SHGFI_SYSICONINDEX 16384
169 #define SHGFI_LINKOVERLAY 32768
170 #define SHGFI_SELECTED 65536
171 #define SHGFI_ATTR_SPECIFIED 131072
172 #define SHGFI_LARGEICON 0
173 #define SHGFI_SMALLICON 1
174 #define SHGFI_OPENICON 2
175 #define SHGFI_SHELLICONSIZE 4
176 #define SHGFI_PIDL 8
177 #define SHGFI_USEFILEATTRIBUTES 16
178
179 #if (NTDDI_VERSION >= NTDDI_WINXP)
180 #define SHIL_LARGE 0x0
181 #define SHIL_SMALL 0x1
182 #define SHIL_EXTRALARGE 0x2
183 #define SHIL_SYSSMALL 0x3
184 #if (NTDDI_VERSION >= NTDDI_VISTA)
185 #define SHIL_JUMBO 0x4
186 #define SHIL_LAST SHIL_JUMBO
187 #else
188 #define SHIL_LAST SHIL_SYSSMALL
189 #endif
190 #endif
191
192 typedef struct _SHCREATEPROCESSINFOW
193 {
194 DWORD cbSize;
195 ULONG fMask;
196 HWND hwnd;
197 LPCWSTR pszFile;
198 LPCWSTR pszParameters;
199 LPCWSTR pszCurrentDirectory;
200 IN HANDLE hUserToken;
201 IN LPSECURITY_ATTRIBUTES lpProcessAttributes;
202 IN LPSECURITY_ATTRIBUTES lpThreadAttributes;
203 IN BOOL bInheritHandles;
204 IN DWORD dwCreationFlags;
205 IN LPSTARTUPINFOW lpStartupInfo;
206 OUT LPPROCESS_INFORMATION lpProcessInformation;
207 } SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
208
209 typedef WORD FILEOP_FLAGS;
210 typedef WORD PRINTEROP_FLAGS;
211
212 typedef struct _AppBarData {
213 DWORD cbSize;
214 HWND hWnd;
215 UINT uCallbackMessage;
216 UINT uEdge;
217 RECT rc;
218 LPARAM lParam;
219 } APPBARDATA,*PAPPBARDATA;
220 DECLARE_HANDLE(HDROP);
221
222 typedef struct _NOTIFYICONDATAA {
223 DWORD cbSize;
224 HWND hWnd;
225 UINT uID;
226 UINT uFlags;
227 UINT uCallbackMessage;
228 HICON hIcon;
229 #if (NTDDI_VERSION < NTDDI_WIN2K)
230 CHAR szTip[64];
231 #endif
232 #if (NTDDI_VERSION >= NTDDI_WIN2K)
233 CHAR szTip[128];
234 DWORD dwState;
235 DWORD dwStateMask;
236 CHAR szInfo[256];
237 _ANONYMOUS_UNION union {
238 UINT uTimeout;
239 UINT uVersion;
240 } DUMMYUNIONNAME;
241 CHAR szInfoTitle[64];
242 DWORD dwInfoFlags;
243 #endif
244 #if (NTDDI_VERSION >= NTDDI_WINXP)
245 GUID guidItem;
246 #endif
247 #if (NTDDI_VERSION >= NTDDI_VISTA)
248 HICON hBalloonIcon;
249 #endif
250 } NOTIFYICONDATAA,*PNOTIFYICONDATAA;
251
252 typedef struct _NOTIFYICONDATAW {
253 DWORD cbSize;
254 HWND hWnd;
255 UINT uID;
256 UINT uFlags;
257 UINT uCallbackMessage;
258 HICON hIcon;
259 #if (NTDDI_VERSION < NTDDI_WIN2K)
260 WCHAR szTip[64];
261 #endif
262 #if (NTDDI_VERSION >= NTDDI_WIN2K)
263 WCHAR szTip[128];
264 DWORD dwState;
265 DWORD dwStateMask;
266 WCHAR szInfo[256];
267 _ANONYMOUS_UNION union {
268 UINT uTimeout;
269 UINT uVersion;
270 } DUMMYUNIONNAME;
271 WCHAR szInfoTitle[64];
272 DWORD dwInfoFlags;
273 #endif
274 #if (NTDDI_VERSION >= NTDDI_WINXP)
275 GUID guidItem;
276 #endif
277 #if (NTDDI_VERSION >= NTDDI_VISTA)
278 HICON hBalloonIcon;
279 #endif
280 } NOTIFYICONDATAW,*PNOTIFYICONDATAW;
281
282 #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
283 #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
284 #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
285 #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
286 #define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAA, hBalloonIcon)
287 #define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAW, hBalloonIcon)
288
289 #if WINVER >= 0x400
290 typedef struct _DRAGINFOA {
291 UINT uSize;
292 POINT pt;
293 BOOL fNC;
294 LPSTR lpFileList;
295 DWORD grfKeyState;
296 } DRAGINFOA,*LPDRAGINFOA;
297 typedef struct _DRAGINFOW {
298 UINT uSize;
299 POINT pt;
300 BOOL fNC;
301 LPWSTR lpFileList;
302 DWORD grfKeyState;
303 } DRAGINFOW,*LPDRAGINFOW;
304 #endif
305
306 typedef struct _SHELLEXECUTEINFOA {
307 DWORD cbSize;
308 ULONG fMask;
309 HWND hwnd;
310 LPCSTR lpVerb;
311 LPCSTR lpFile;
312 LPCSTR lpParameters;
313 LPCSTR lpDirectory;
314 int nShow;
315 HINSTANCE hInstApp;
316 PVOID lpIDList;
317 LPCSTR lpClass;
318 HKEY hkeyClass;
319 DWORD dwHotKey;
320 HANDLE hIcon;
321 HANDLE hProcess;
322 } SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
323 typedef struct _SHELLEXECUTEINFOW {
324 DWORD cbSize;
325 ULONG fMask;
326 HWND hwnd;
327 LPCWSTR lpVerb;
328 LPCWSTR lpFile;
329 LPCWSTR lpParameters;
330 LPCWSTR lpDirectory;
331 int nShow;
332 HINSTANCE hInstApp;
333 PVOID lpIDList;
334 LPCWSTR lpClass;
335 HKEY hkeyClass;
336 DWORD dwHotKey;
337 HANDLE hIcon;
338 HANDLE hProcess;
339 } SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
340 typedef struct _SHFILEOPSTRUCTA {
341 HWND hwnd;
342 UINT wFunc;
343 LPCSTR pFrom;
344 LPCSTR pTo;
345 FILEOP_FLAGS fFlags;
346 BOOL fAnyOperationsAborted;
347 PVOID hNameMappings;
348 LPCSTR lpszProgressTitle;
349 } SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
350 typedef struct _SHFILEOPSTRUCTW {
351 HWND hwnd;
352 UINT wFunc;
353 LPCWSTR pFrom;
354 LPCWSTR pTo;
355 FILEOP_FLAGS fFlags;
356 BOOL fAnyOperationsAborted;
357 PVOID hNameMappings;
358 LPCWSTR lpszProgressTitle;
359 } SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
360 typedef struct _SHFILEINFOA {
361 HICON hIcon;
362 int iIcon;
363 DWORD dwAttributes;
364 CHAR szDisplayName[MAX_PATH];
365 CHAR szTypeName[80];
366 } SHFILEINFOA;
367 typedef struct _SHFILEINFOW {
368 HICON hIcon;
369 int iIcon;
370 DWORD dwAttributes;
371 WCHAR szDisplayName[MAX_PATH];
372 WCHAR szTypeName[80];
373 } SHFILEINFOW;
374 typedef struct _SHQUERYRBINFO {
375 DWORD cbSize;
376 __int64 i64Size;
377 __int64 i64NumItems;
378 } SHQUERYRBINFO, *LPSHQUERYRBINFO;
379 typedef struct _SHNAMEMAPPINGA {
380 LPSTR pszOldPath;
381 LPSTR pszNewPath;
382 int cchOldPath;
383 int cchNewPath;
384 } SHNAMEMAPPINGA, *LPSHNAMEMAPPINGA;
385 typedef struct _SHNAMEMAPPINGW {
386 LPWSTR pszOldPath;
387 LPWSTR pszNewPath;
388 int cchOldPath;
389 int cchNewPath;
390 } SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW;
391
392 #define SHERB_NOCONFIRMATION 0x1
393 #define SHERB_NOPROGRESSUI 0x2
394 #define SHERB_NOSOUND 0x4
395
396 /******************************************
397 * Links
398 */
399
400 #define SHGNLI_PIDL 0x01
401 #define SHGNLI_PREFIXNAME 0x02
402 #define SHGNLI_NOUNIQUE 0x04
403 #define SHGNLI_NOLNK 0x08
404
405 LPWSTR * WINAPI CommandLineToArgvW(_In_ LPCWSTR, _Out_ int*);
406 void WINAPI DragAcceptFiles(_In_ HWND, _In_ BOOL);
407 void WINAPI DragFinish(_In_ HDROP);
408
409 _Success_(return != 0)
410 UINT
411 WINAPI
412 DragQueryFileA(
413 _In_ HDROP hDrop,
414 _In_ UINT iFile,
415 _Out_writes_opt_(cch) LPSTR lpszFile,
416 _In_ UINT cch);
417
418 _Success_(return != 0)
419 UINT
420 WINAPI
421 DragQueryFileW(
422 _In_ HDROP hDrop,
423 _In_ UINT iFile,
424 _Out_writes_opt_(cch) LPWSTR lpszFile,
425 _In_ UINT cch);
426
427 BOOL WINAPI DragQueryPoint(_In_ HDROP, _Out_ LPPOINT);
428
429 HICON
430 WINAPI
431 ExtractAssociatedIconA(
432 _Reserved_ HINSTANCE hInst,
433 _Inout_updates_(128) LPSTR pszIconPath,
434 _Inout_ WORD *piIcon);
435
436 HICON
437 WINAPI
438 ExtractAssociatedIconW(
439 _Reserved_ HINSTANCE hInst,
440 _Inout_updates_(128) LPWSTR pszIconPath,
441 _Inout_ WORD *piIcon);
442
443 HICON
444 WINAPI
445 ExtractIconA(
446 _Reserved_ HINSTANCE hInst,
447 _In_ LPCSTR pszExeFileName,
448 UINT nIconIndex);
449
450 HICON
451 WINAPI
452 ExtractIconW(
453 _Reserved_ HINSTANCE hInst,
454 _In_ LPCWSTR pszExeFileName,
455 UINT nIconIndex);
456
457 UINT
458 WINAPI
459 ExtractIconExA(
460 _In_ LPCSTR lpszFile,
461 _In_ int nIconIndex,
462 _Out_writes_opt_(nIcons) HICON *phiconLarge,
463 _Out_writes_opt_(nIcons) HICON *phiconSmall,
464 _In_ UINT nIcons);
465
466 UINT
467 WINAPI
468 ExtractIconExW(
469 _In_ LPCWSTR lpszFile,
470 _In_ int nIconIndex,
471 _Out_writes_opt_(nIcons) HICON *phiconLarge,
472 _Out_writes_opt_(nIcons) HICON *phiconSmall,
473 _In_ UINT nIcons);
474
475 _Success_(return > 32)
476 HINSTANCE
477 WINAPI
478 FindExecutableA(
479 _In_ LPCSTR lpFile,
480 _In_opt_ LPCSTR lpDirectory,
481 _Out_writes_(MAX_PATH) LPSTR lpResult);
482
483 _Success_(return > 32)
484 HINSTANCE
485 WINAPI
486 FindExecutableW(
487 _In_ LPCWSTR lpFile,
488 _In_opt_ LPCWSTR lpDirectory,
489 _Out_writes_(MAX_PATH) LPWSTR lpResult);
490
491 UINT_PTR WINAPI SHAppBarMessage(_In_ DWORD, _Inout_ PAPPBARDATA);
492 BOOL WINAPI Shell_NotifyIconA(_In_ DWORD, _In_ PNOTIFYICONDATAA);
493 BOOL WINAPI Shell_NotifyIconW(_In_ DWORD, _In_ PNOTIFYICONDATAW);
494
495 int
496 WINAPI
497 ShellAboutA(
498 _In_opt_ HWND hWnd,
499 _In_ LPCSTR szApp,
500 _In_opt_ LPCSTR szOtherStuff,
501 _In_opt_ HICON hIcon);
502
503 int
504 WINAPI
505 ShellAboutW(
506 _In_opt_ HWND hWnd,
507 _In_ LPCWSTR szApp,
508 _In_opt_ LPCWSTR szOtherStuff,
509 _In_opt_ HICON hIcon);
510
511 int
512 ShellMessageBoxA(
513 _In_opt_ HINSTANCE hAppInst,
514 _In_opt_ HWND hWnd,
515 _In_ LPCSTR lpcText,
516 _In_opt_ LPCSTR lpcTitle,
517 _In_ UINT fuStyle,
518 ...);
519
520 int
521 ShellMessageBoxW(
522 _In_opt_ HINSTANCE hAppInst,
523 _In_opt_ HWND hWnd,
524 _In_ LPCWSTR lpcText,
525 _In_opt_ LPCWSTR lpcTitle,
526 _In_ UINT fuStyle,
527 ...);
528
529 HINSTANCE
530 WINAPI
531 ShellExecuteA(
532 _In_opt_ HWND hwnd,
533 _In_opt_ LPCSTR lpOperation,
534 _In_ LPCSTR lpFile,
535 _In_opt_ LPCSTR lpParameters,
536 _In_opt_ LPCSTR lpDirectory,
537 _In_ INT nShowCmd);
538
539 HINSTANCE
540 WINAPI
541 ShellExecuteW(
542 _In_opt_ HWND hwnd,
543 _In_opt_ LPCWSTR lpOperation,
544 _In_ LPCWSTR lpFile,
545 _In_opt_ LPCWSTR lpParameters,
546 _In_opt_ LPCWSTR lpDirectory,
547 _In_ INT nShowCmd);
548
549 BOOL WINAPI ShellExecuteExA(_Inout_ LPSHELLEXECUTEINFOA);
550 BOOL WINAPI ShellExecuteExW(_Inout_ LPSHELLEXECUTEINFOW);
551 int WINAPI SHFileOperationA(_Inout_ LPSHFILEOPSTRUCTA);
552 int WINAPI SHFileOperationW(_Inout_ LPSHFILEOPSTRUCTW);
553 void WINAPI SHFreeNameMappings(_In_opt_ HANDLE);
554
555 DWORD_PTR
556 WINAPI
557 SHGetFileInfoA(
558 _In_ LPCSTR pszPath,
559 DWORD dwFileAttributes,
560 _Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOA *psfi,
561 UINT cbFileInfo,
562 UINT uFlags);
563
564 DWORD_PTR
565 WINAPI
566 SHGetFileInfoW(
567 _In_ LPCWSTR pszPath,
568 DWORD dwFileAttributes,
569 _Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOW *psfi,
570 UINT cbFileInfo,
571 UINT uFlags);
572
573 _Success_(return != 0)
574 BOOL
575 WINAPI
576 SHGetNewLinkInfoA(
577 _In_ LPCSTR pszLinkTo,
578 _In_ LPCSTR pszDir,
579 _Out_writes_(MAX_PATH) LPSTR pszName,
580 _Out_ BOOL *pfMustCopy,
581 _In_ UINT uFlags);
582
583 _Success_(return != 0)
584 BOOL
585 WINAPI
586 SHGetNewLinkInfoW(
587 _In_ LPCWSTR pszLinkTo,
588 _In_ LPCWSTR pszDir,
589 _Out_writes_(MAX_PATH) LPWSTR pszName,
590 _Out_ BOOL *pfMustCopy,
591 _In_ UINT uFlags);
592
593 HRESULT
594 WINAPI
595 SHQueryRecycleBinA(
596 _In_opt_ LPCSTR pszRootPath,
597 _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
598
599 HRESULT
600 WINAPI
601 SHQueryRecycleBinW(
602 _In_opt_ LPCWSTR pszRootPath,
603 _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
604
605 HRESULT
606 WINAPI
607 SHEmptyRecycleBinA(
608 _In_opt_ HWND hwnd,
609 _In_opt_ LPCSTR pszRootPath,
610 DWORD dwFlags);
611
612 HRESULT
613 WINAPI
614 SHEmptyRecycleBinW(
615 _In_opt_ HWND hwnd,
616 _In_opt_ LPCWSTR pszRootPath,
617 DWORD dwFlags);
618
619 BOOL WINAPI SHCreateProcessAsUserW(_Inout_ PSHCREATEPROCESSINFOW);
620
621 DWORD
622 WINAPI
623 DoEnvironmentSubstA(
624 _Inout_updates_(cchSrc) LPSTR pszSrc,
625 UINT cchSrc);
626
627 DWORD
628 WINAPI
629 DoEnvironmentSubstW(
630 _Inout_updates_(cchSrc) LPWSTR pszSrc,
631 UINT cchSrc);
632
633 #ifdef UNICODE
634 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
635 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
636 #define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAW_V3_SIZE
637 typedef NOTIFYICONDATAW NOTIFYICONDATA,*PNOTIFYICONDATA;
638 typedef DRAGINFOW DRAGINFO,*LPDRAGINFO;
639 typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
640 typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
641 typedef SHFILEINFOW SHFILEINFO;
642 typedef SHNAMEMAPPINGW SHNAMEMAPPING;
643 typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
644 #define DragQueryFile DragQueryFileW
645 #define ExtractAssociatedIcon ExtractAssociatedIconW
646 #define ExtractIcon ExtractIconW
647 #define ExtractIconEx ExtractIconExW
648 #define FindExecutable FindExecutableW
649 #define Shell_NotifyIcon Shell_NotifyIconW
650 #define ShellAbout ShellAboutW
651 #define ShellExecute ShellExecuteW
652 #define ShellExecuteEx ShellExecuteExW
653 #define ShellMessageBox ShellMessageBoxW
654 #define SHFileOperation SHFileOperationW
655 #define SHGetFileInfo SHGetFileInfoW
656 #define SHQueryRecycleBin SHQueryRecycleBinW
657 #define SHEmptyRecycleBin SHEmptyRecycleBinW
658 #define SHGetNewLinkInfo SHGetNewLinkInfoW
659 #define DoEnvironmentSubst DoEnvironmentSubstW
660
661 #else
662 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
663 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
664 #define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAA_V3_SIZE
665 typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA;
666 typedef DRAGINFOA DRAGINFO,*LPDRAGINFO;
667 typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
668 typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
669 typedef SHFILEINFOA SHFILEINFO;
670 typedef SHNAMEMAPPINGA SHNAMEMAPPING;
671 typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
672 #define DragQueryFile DragQueryFileA
673 #define ExtractAssociatedIcon ExtractAssociatedIconA
674 #define ExtractIcon ExtractIconA
675 #define ExtractIconEx ExtractIconExA
676 #define FindExecutable FindExecutableA
677 #define Shell_NotifyIcon Shell_NotifyIconA
678 #define ShellAbout ShellAboutA
679 #define ShellExecute ShellExecuteA
680 #define ShellExecuteEx ShellExecuteExA
681 #define ShellMessageBox ShellMessageBoxA
682 #define SHFileOperation SHFileOperationA
683 #define SHGetFileInfo SHGetFileInfoA
684 #define SHQueryRecycleBin SHQueryRecycleBinA
685 #define SHEmptyRecycleBin SHEmptyRecycleBinA
686 #define SHGetNewLinkInfo SHGetNewLinkInfoA
687 #define DoEnvironmentSubst DoEnvironmentSubstA
688 #endif
689
690 #if (NTDDI_VERSION >= NTDDI_VISTA)
691
692 typedef struct _SHSTOCKICONINFO {
693 DWORD cbSize;
694 HICON hIcon;
695 int iSysImageIndex;
696 int iIcon;
697 WCHAR szPath[MAX_PATH];
698 } SHSTOCKICONINFO;
699
700 #define SHGSI_ICONLOCATION 0
701
702 typedef enum SHSTOCKICONID
703 {
704 SIID_INVALID=-1,
705 SIID_DOCNOASSOC,
706 SIID_DOCASSOC,
707 SIID_APPLICATION,
708 SIID_FOLDER,
709 SIID_FOLDEROPEN,
710 SIID_DRIVE525,
711 SIID_DRIVE35,
712 SIID_DRIVERREMOVE,
713 SIID_DRIVERFIXED,
714 SIID_DRIVERNET,
715 SIID_DRIVERNETDISABLE,
716 SIID_DRIVERCD,
717 SIID_DRIVERRAM,
718 SIID_WORLD,
719 /* Missing: 14 */
720 SIID_SERVER = 15,
721 SIID_PRINTER,
722 SIID_MYNETWORK,
723 /* Missing: 18 - 21 */
724 SIID_FIND = 22,
725 SIID_HELP,
726 /* Missing: 24 - 27 */
727 SIID_SHARE = 28,
728 SIID_LINK,
729 SIID_SLOWFILE,
730 SIID_RECYCLER,
731 SIID_RECYCLERFULL,
732 /* Missing: 33 - 39 */
733 SIID_MEDIACDAUDIO = 40,
734 /* Missing: 41 - 46 */
735 SIID_LOCK = 47,
736 /* Missing: 48 */
737 SIID_AUTOLIST = 49,
738 SIID_PRINTERNET,
739 SIID_SERVERSHARE,
740 SIID_PRINTERFAX,
741 SIID_PRINTERFAXNET,
742 SIID_PRINTERFILE,
743 SIID_STACK,
744 SIID_MEDIASVCD,
745 SIID_STUFFEDFOLDER,
746 SIID_DRIVEUNKNOWN,
747 SIID_DRIVEDVD,
748 SIID_MEDIADVD,
749 SIID_MEDIADVDRAM,
750 SIID_MEDIADVDRW,
751 SIID_MEDIADVDR,
752 SIID_MEDIADVDROM,
753 SIID_MEDIACDAUDIOPLUS,
754 SIID_MEDIACDRW,
755 SIID_MEDIACDR,
756 SIID_MEDIACDBURN,
757 SIID_MEDIABLANKCD,
758 SIID_MEDIACDROM,
759 SIID_AUDIOFILES,
760 SIID_IMAGEFILES,
761 SIID_VIDEOFILES,
762 SIID_MIXEDFILES,
763 SIID_FOLDERBACK,
764 SIID_FOLDERFRONT,
765 SIID_SHIELD,
766 SIID_WARNING,
767 SIID_INFO,
768 SIID_ERROR,
769 SIID_KEY,
770 SIID_SOFTWARE,
771 SIID_RENAME,
772 SIID_DELETE,
773 SIID_MEDIAAUDIODVD,
774 SIID_MEDIAMOVIEDVD,
775 SIID_MEDIAENHANCEDCD,
776 SIID_MEDIAENHANCEDDVD,
777 SIID_MEDIAHDDVD,
778 SIID_MEDIABLUERAY,
779 SIID_MEDIAVCD,
780 SIID_MEDIADVDPLUSR,
781 SIID_MEDIADVDPLUSRW,
782 SIID_DESKTOPPC,
783 SIID_MOBILEPC,
784 SIID_USERS,
785 SIID_MEDIASMARTMEDIA,
786 SIID_MEDIACOMPACTFLASH,
787 SIID_DEVICECELLPHONE,
788 SIID_DEVICECAMERA,
789 SIID_DEVICEVIDEOCAMERA,
790 SIID_DEVICEAUDIOPLAYER,
791 SIID_NETWORKCONNECT,
792 SIID_INTERNET,
793 SIID_ZIPFILE,
794 SIID_SETTINGS,
795 /* Missing: 107 - 131 */
796 SIID_DRIVEHDDVD = 132,
797 SIID_DRIVEBD,
798 SIID_MEDIAHDDVDROM,
799 SIID_MEDIAHDDVDR,
800 SIID_MEDIAHDDVDRAM,
801 SIID_MEDIABDROM,
802 SIID_MEDIABDR,
803 SIID_MEDIABDRE,
804 SIID_CLUSTEREDDRIVE,
805 /* Missing: 141 - 174 */
806 SIID_MAX_ICONS = 175
807 } SHSTOCKICONID;
808
809 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
810
811 #if !defined(_WIN64)
812 #include <poppack.h>
813 #endif
814
815 #ifdef _MSC_VER
816 #pragma warning(pop)
817 #endif
818 #ifdef __cplusplus
819 }
820 #endif
821 #endif