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