* Sync up to trunk HEAD (r62975).
[reactos.git] / 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 _WIN32_IE >= 0x0500
207 CHAR szTip[128];
208 DWORD dwState;
209 DWORD dwStateMask;
210 CHAR szInfo[256];
211 _ANONYMOUS_UNION union {
212 UINT uTimeout;
213 UINT uVersion;
214 } DUMMYUNIONNAME;
215 CHAR szInfoTitle[64];
216 DWORD dwInfoFlags;
217 #else
218 CHAR szTip[64];
219 #endif
220 #if _WIN32_IE >= 0x600
221 GUID guidItem;
222 #endif
223 } NOTIFYICONDATAA,*PNOTIFYICONDATAA;
224
225 typedef struct _NOTIFYICONDATAW {
226 DWORD cbSize;
227 HWND hWnd;
228 UINT uID;
229 UINT uFlags;
230 UINT uCallbackMessage;
231 HICON hIcon;
232 #if _WIN32_IE >= 0x0500
233 WCHAR szTip[128];
234 DWORD dwState;
235 DWORD dwStateMask;
236 WCHAR szInfo[256];
237 _ANONYMOUS_UNION union {
238 UINT uTimeout;
239 UINT uVersion;
240 } DUMMYUNIONNAME;
241 WCHAR szInfoTitle[64];
242 DWORD dwInfoFlags;
243 #else
244 WCHAR szTip[64];
245 #endif
246 #if _WIN32_IE >= 0x600
247 GUID guidItem;
248 #endif
249 } NOTIFYICONDATAW,*PNOTIFYICONDATAW;
250
251 #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
252 #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
253 #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
254 #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
255
256 #if WINVER >= 0x400
257 typedef struct _DRAGINFOA {
258 UINT uSize;
259 POINT pt;
260 BOOL fNC;
261 LPSTR lpFileList;
262 DWORD grfKeyState;
263 } DRAGINFOA,*LPDRAGINFOA;
264 typedef struct _DRAGINFOW {
265 UINT uSize;
266 POINT pt;
267 BOOL fNC;
268 LPWSTR lpFileList;
269 DWORD grfKeyState;
270 } DRAGINFOW,*LPDRAGINFOW;
271 #endif
272
273 typedef struct _SHELLEXECUTEINFOA {
274 DWORD cbSize;
275 ULONG fMask;
276 HWND hwnd;
277 LPCSTR lpVerb;
278 LPCSTR lpFile;
279 LPCSTR lpParameters;
280 LPCSTR lpDirectory;
281 int nShow;
282 HINSTANCE hInstApp;
283 PVOID lpIDList;
284 LPCSTR lpClass;
285 HKEY hkeyClass;
286 DWORD dwHotKey;
287 HANDLE hIcon;
288 HANDLE hProcess;
289 } SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
290 typedef struct _SHELLEXECUTEINFOW {
291 DWORD cbSize;
292 ULONG fMask;
293 HWND hwnd;
294 LPCWSTR lpVerb;
295 LPCWSTR lpFile;
296 LPCWSTR lpParameters;
297 LPCWSTR lpDirectory;
298 int nShow;
299 HINSTANCE hInstApp;
300 PVOID lpIDList;
301 LPCWSTR lpClass;
302 HKEY hkeyClass;
303 DWORD dwHotKey;
304 HANDLE hIcon;
305 HANDLE hProcess;
306 } SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
307 typedef struct _SHFILEOPSTRUCTA {
308 HWND hwnd;
309 UINT wFunc;
310 LPCSTR pFrom;
311 LPCSTR pTo;
312 FILEOP_FLAGS fFlags;
313 BOOL fAnyOperationsAborted;
314 PVOID hNameMappings;
315 LPCSTR lpszProgressTitle;
316 } SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
317 typedef struct _SHFILEOPSTRUCTW {
318 HWND hwnd;
319 UINT wFunc;
320 LPCWSTR pFrom;
321 LPCWSTR pTo;
322 FILEOP_FLAGS fFlags;
323 BOOL fAnyOperationsAborted;
324 PVOID hNameMappings;
325 LPCWSTR lpszProgressTitle;
326 } SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
327 typedef struct _SHFILEINFOA {
328 HICON hIcon;
329 int iIcon;
330 DWORD dwAttributes;
331 CHAR szDisplayName[MAX_PATH];
332 CHAR szTypeName[80];
333 } SHFILEINFOA;
334 typedef struct _SHFILEINFOW {
335 HICON hIcon;
336 int iIcon;
337 DWORD dwAttributes;
338 WCHAR szDisplayName[MAX_PATH];
339 WCHAR szTypeName[80];
340 } SHFILEINFOW;
341 typedef struct _SHQUERYRBINFO {
342 DWORD cbSize;
343 __int64 i64Size;
344 __int64 i64NumItems;
345 } SHQUERYRBINFO, *LPSHQUERYRBINFO;
346 typedef struct _SHNAMEMAPPINGA {
347 LPSTR pszOldPath;
348 LPSTR pszNewPath;
349 int cchOldPath;
350 int cchNewPath;
351 } SHNAMEMAPPINGA, *LPSHNAMEMAPPINGA;
352 typedef struct _SHNAMEMAPPINGW {
353 LPWSTR pszOldPath;
354 LPWSTR pszNewPath;
355 int cchOldPath;
356 int cchNewPath;
357 } SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW;
358
359 #define SHERB_NOCONFIRMATION 0x1
360 #define SHERB_NOPROGRESSUI 0x2
361 #define SHERB_NOSOUND 0x4
362
363 /******************************************
364 * Links
365 */
366
367 #define SHGNLI_PIDL 0x01
368 #define SHGNLI_PREFIXNAME 0x02
369 #define SHGNLI_NOUNIQUE 0x04
370 #define SHGNLI_NOLNK 0x08
371
372 LPWSTR * WINAPI CommandLineToArgvW(_In_ LPCWSTR, _Out_ int*);
373 void WINAPI DragAcceptFiles(_In_ HWND, _In_ BOOL);
374 void WINAPI DragFinish(_In_ HDROP);
375
376 _Success_(return != 0)
377 UINT
378 WINAPI
379 DragQueryFileA(
380 _In_ HDROP hDrop,
381 _In_ UINT iFile,
382 _Out_writes_opt_(cch) LPSTR lpszFile,
383 _In_ UINT cch);
384
385 _Success_(return != 0)
386 UINT
387 WINAPI
388 DragQueryFileW(
389 _In_ HDROP hDrop,
390 _In_ UINT iFile,
391 _Out_writes_opt_(cch) LPWSTR lpszFile,
392 _In_ UINT cch);
393
394 BOOL WINAPI DragQueryPoint(_In_ HDROP, _Out_ LPPOINT);
395
396 HICON
397 WINAPI
398 ExtractAssociatedIconA(
399 _Reserved_ HINSTANCE hInst,
400 _Inout_updates_(128) LPSTR pszIconPath,
401 _Inout_ WORD *piIcon);
402
403 HICON
404 WINAPI
405 ExtractAssociatedIconW(
406 _Reserved_ HINSTANCE hInst,
407 _Inout_updates_(128) LPWSTR pszIconPath,
408 _Inout_ WORD *piIcon);
409
410 HICON
411 WINAPI
412 ExtractIconA(
413 _Reserved_ HINSTANCE hInst,
414 _In_ LPCSTR pszExeFileName,
415 UINT nIconIndex);
416
417 HICON
418 WINAPI
419 ExtractIconW(
420 _Reserved_ HINSTANCE hInst,
421 _In_ LPCWSTR pszExeFileName,
422 UINT nIconIndex);
423
424 UINT
425 WINAPI
426 ExtractIconExA(
427 _In_ LPCSTR lpszFile,
428 _In_ int nIconIndex,
429 _Out_writes_opt_(nIcons) HICON *phiconLarge,
430 _Out_writes_opt_(nIcons) HICON *phiconSmall,
431 _In_ UINT nIcons);
432
433 UINT
434 WINAPI
435 ExtractIconExW(
436 _In_ LPCWSTR lpszFile,
437 _In_ int nIconIndex,
438 _Out_writes_opt_(nIcons) HICON *phiconLarge,
439 _Out_writes_opt_(nIcons) HICON *phiconSmall,
440 _In_ UINT nIcons);
441
442 _Success_(return > 32)
443 HINSTANCE
444 WINAPI
445 FindExecutableA(
446 _In_ LPCSTR lpFile,
447 _In_opt_ LPCSTR lpDirectory,
448 _Out_writes_(MAX_PATH) LPSTR lpResult);
449
450 _Success_(return > 32)
451 HINSTANCE
452 WINAPI
453 FindExecutableW(
454 _In_ LPCWSTR lpFile,
455 _In_opt_ LPCWSTR lpDirectory,
456 _Out_writes_(MAX_PATH) LPWSTR lpResult);
457
458 UINT_PTR WINAPI SHAppBarMessage(_In_ DWORD, _Inout_ PAPPBARDATA);
459 BOOL WINAPI Shell_NotifyIconA(_In_ DWORD, _In_ PNOTIFYICONDATAA);
460 BOOL WINAPI Shell_NotifyIconW(_In_ DWORD, _In_ PNOTIFYICONDATAW);
461
462 int
463 WINAPI
464 ShellAboutA(
465 _In_opt_ HWND hWnd,
466 _In_ LPCSTR szApp,
467 _In_opt_ LPCSTR szOtherStuff,
468 _In_opt_ HICON hIcon);
469
470 int
471 WINAPI
472 ShellAboutW(
473 _In_opt_ HWND hWnd,
474 _In_ LPCWSTR szApp,
475 _In_opt_ LPCWSTR szOtherStuff,
476 _In_opt_ HICON hIcon);
477
478 int
479 ShellMessageBoxA(
480 _In_opt_ HINSTANCE hAppInst,
481 _In_opt_ HWND hWnd,
482 _In_ LPCSTR lpcText,
483 _In_opt_ LPCSTR lpcTitle,
484 _In_ UINT fuStyle,
485 ...);
486
487 int
488 ShellMessageBoxW(
489 _In_opt_ HINSTANCE hAppInst,
490 _In_opt_ HWND hWnd,
491 _In_ LPCWSTR lpcText,
492 _In_opt_ LPCWSTR lpcTitle,
493 _In_ UINT fuStyle,
494 ...);
495
496 HINSTANCE
497 WINAPI
498 ShellExecuteA(
499 _In_opt_ HWND hwnd,
500 _In_opt_ LPCSTR lpOperation,
501 _In_ LPCSTR lpFile,
502 _In_opt_ LPCSTR lpParameters,
503 _In_opt_ LPCSTR lpDirectory,
504 _In_ INT nShowCmd);
505
506 HINSTANCE
507 WINAPI
508 ShellExecuteW(
509 _In_opt_ HWND hwnd,
510 _In_opt_ LPCWSTR lpOperation,
511 _In_ LPCWSTR lpFile,
512 _In_opt_ LPCWSTR lpParameters,
513 _In_opt_ LPCWSTR lpDirectory,
514 _In_ INT nShowCmd);
515
516 BOOL WINAPI ShellExecuteExA(_Inout_ LPSHELLEXECUTEINFOA);
517 BOOL WINAPI ShellExecuteExW(_Inout_ LPSHELLEXECUTEINFOW);
518 int WINAPI SHFileOperationA(_Inout_ LPSHFILEOPSTRUCTA);
519 int WINAPI SHFileOperationW(_Inout_ LPSHFILEOPSTRUCTW);
520 void WINAPI SHFreeNameMappings(_In_opt_ HANDLE);
521
522 DWORD_PTR
523 WINAPI
524 SHGetFileInfoA(
525 _In_ LPCSTR pszPath,
526 DWORD dwFileAttributes,
527 _Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOA *psfi,
528 UINT cbFileInfo,
529 UINT uFlags);
530
531 DWORD_PTR
532 WINAPI
533 SHGetFileInfoW(
534 _In_ LPCWSTR pszPath,
535 DWORD dwFileAttributes,
536 _Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOW *psfi,
537 UINT cbFileInfo,
538 UINT uFlags);
539
540 _Success_(return != 0)
541 BOOL
542 WINAPI
543 SHGetNewLinkInfoA(
544 _In_ LPCSTR pszLinkTo,
545 _In_ LPCSTR pszDir,
546 _Out_writes_(MAX_PATH) LPSTR pszName,
547 _Out_ BOOL *pfMustCopy,
548 _In_ UINT uFlags);
549
550 _Success_(return != 0)
551 BOOL
552 WINAPI
553 SHGetNewLinkInfoW(
554 _In_ LPCWSTR pszLinkTo,
555 _In_ LPCWSTR pszDir,
556 _Out_writes_(MAX_PATH) LPWSTR pszName,
557 _Out_ BOOL *pfMustCopy,
558 _In_ UINT uFlags);
559
560 HRESULT
561 WINAPI
562 SHQueryRecycleBinA(
563 _In_opt_ LPCSTR pszRootPath,
564 _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
565
566 HRESULT
567 WINAPI
568 SHQueryRecycleBinW(
569 _In_opt_ LPCWSTR pszRootPath,
570 _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
571
572 HRESULT
573 WINAPI
574 SHEmptyRecycleBinA(
575 _In_opt_ HWND hwnd,
576 _In_opt_ LPCSTR pszRootPath,
577 DWORD dwFlags);
578
579 HRESULT
580 WINAPI
581 SHEmptyRecycleBinW(
582 _In_opt_ HWND hwnd,
583 _In_opt_ LPCWSTR pszRootPath,
584 DWORD dwFlags);
585
586 BOOL WINAPI SHCreateProcessAsUserW(_Inout_ PSHCREATEPROCESSINFOW);
587
588 DWORD
589 WINAPI
590 DoEnvironmentSubstA(
591 _Inout_updates_(cchSrc) LPSTR pszSrc,
592 UINT cchSrc);
593
594 DWORD
595 WINAPI
596 DoEnvironmentSubstW(
597 _Inout_updates_(cchSrc) LPWSTR pszSrc,
598 UINT cchSrc);
599
600 #ifdef UNICODE
601 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
602 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
603 typedef NOTIFYICONDATAW NOTIFYICONDATA,*PNOTIFYICONDATA;
604 typedef DRAGINFOW DRAGINFO,*LPDRAGINFO;
605 typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
606 typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
607 typedef SHFILEINFOW SHFILEINFO;
608 typedef SHNAMEMAPPINGW SHNAMEMAPPING;
609 typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
610 #define DragQueryFile DragQueryFileW
611 #define ExtractAssociatedIcon ExtractAssociatedIconW
612 #define ExtractIcon ExtractIconW
613 #define ExtractIconEx ExtractIconExW
614 #define FindExecutable FindExecutableW
615 #define Shell_NotifyIcon Shell_NotifyIconW
616 #define ShellAbout ShellAboutW
617 #define ShellExecute ShellExecuteW
618 #define ShellExecuteEx ShellExecuteExW
619 #define ShellMessageBox ShellMessageBoxW
620 #define SHFileOperation SHFileOperationW
621 #define SHGetFileInfo SHGetFileInfoW
622 #define SHQueryRecycleBin SHQueryRecycleBinW
623 #define SHEmptyRecycleBin SHEmptyRecycleBinW
624 #define SHGetNewLinkInfo SHGetNewLinkInfoW
625 #define DoEnvironmentSubst DoEnvironmentSubstW
626
627 #else
628 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
629 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
630 typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA;
631 typedef DRAGINFOA DRAGINFO,*LPDRAGINFO;
632 typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
633 typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
634 typedef SHFILEINFOA SHFILEINFO;
635 typedef SHNAMEMAPPINGA SHNAMEMAPPING;
636 typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
637 #define DragQueryFile DragQueryFileA
638 #define ExtractAssociatedIcon ExtractAssociatedIconA
639 #define ExtractIcon ExtractIconA
640 #define ExtractIconEx ExtractIconExA
641 #define FindExecutable FindExecutableA
642 #define Shell_NotifyIcon Shell_NotifyIconA
643 #define ShellAbout ShellAboutA
644 #define ShellExecute ShellExecuteA
645 #define ShellExecuteEx ShellExecuteExA
646 #define ShellMessageBox ShellMessageBoxA
647 #define SHFileOperation SHFileOperationA
648 #define SHGetFileInfo SHGetFileInfoA
649 #define SHQueryRecycleBin SHQueryRecycleBinA
650 #define SHEmptyRecycleBin SHEmptyRecycleBinA
651 #define SHGetNewLinkInfo SHGetNewLinkInfoA
652 #define DoEnvironmentSubst DoEnvironmentSubstA
653 #endif
654
655 #if (NTDDI_VERSION >= NTDDI_VISTA)
656
657 typedef struct _SHSTOCKICONINFO {
658 DWORD cbSize;
659 HICON hIcon;
660 int iSysImageIndex;
661 int iIcon;
662 WCHAR szPath[MAX_PATH];
663 } SHSTOCKICONINFO;
664
665 #define SHGSI_ICONLOCATION 0
666
667 typedef enum SHSTOCKICONID
668 {
669 SIID_INVALID=-1,
670 SIID_DOCNOASSOC,
671 SIID_DOCASSOC,
672 SIID_APPLICATION,
673 SIID_FOLDER,
674 SIID_FOLDEROPEN,
675 SIID_DRIVE525,
676 SIID_DRIVE35,
677 SIID_DRIVERREMOVE,
678 SIID_DRIVERFIXED,
679 SIID_DRIVERNET,
680 SIID_DRIVERNETDISABLE,
681 SIID_DRIVERCD,
682 SIID_DRIVERRAM,
683 SIID_WORLD,
684 /* Missing: 14 */
685 SIID_SERVER = 15,
686 SIID_PRINTER,
687 SIID_MYNETWORK,
688 /* Missing: 18 - 21 */
689 SIID_FIND = 22,
690 SIID_HELP,
691 /* Missing: 24 - 27 */
692 SIID_SHARE = 28,
693 SIID_LINK,
694 SIID_SLOWFILE,
695 SIID_RECYCLER,
696 SIID_RECYCLERFULL,
697 /* Missing: 33 - 39 */
698 SIID_MEDIACDAUDIO = 40,
699 /* Missing: 41 - 46 */
700 SIID_LOCK = 47,
701 /* Missing: 48 */
702 SIID_AUTOLIST = 49,
703 SIID_PRINTERNET,
704 SIID_SERVERSHARE,
705 SIID_PRINTERFAX,
706 SIID_PRINTERFAXNET,
707 SIID_PRINTERFILE,
708 SIID_STACK,
709 SIID_MEDIASVCD,
710 SIID_STUFFEDFOLDER,
711 SIID_DRIVEUNKNOWN,
712 SIID_DRIVEDVD,
713 SIID_MEDIADVD,
714 SIID_MEDIADVDRAM,
715 SIID_MEDIADVDRW,
716 SIID_MEDIADVDR,
717 SIID_MEDIADVDROM,
718 SIID_MEDIACDAUDIOPLUS,
719 SIID_MEDIACDRW,
720 SIID_MEDIACDR,
721 SIID_MEDIACDBURN,
722 SIID_MEDIABLANKCD,
723 SIID_MEDIACDROM,
724 SIID_AUDIOFILES,
725 SIID_IMAGEFILES,
726 SIID_VIDEOFILES,
727 SIID_MIXEDFILES,
728 SIID_FOLDERBACK,
729 SIID_FOLDERFRONT,
730 SIID_SHIELD,
731 SIID_WARNING,
732 SIID_INFO,
733 SIID_ERROR,
734 SIID_KEY,
735 SIID_SOFTWARE,
736 SIID_RENAME,
737 SIID_DELETE,
738 SIID_MEDIAAUDIODVD,
739 SIID_MEDIAMOVIEDVD,
740 SIID_MEDIAENHANCEDCD,
741 SIID_MEDIAENHANCEDDVD,
742 SIID_MEDIAHDDVD,
743 SIID_MEDIABLUERAY,
744 SIID_MEDIAVCD,
745 SIID_MEDIADVDPLUSR,
746 SIID_MEDIADVDPLUSRW,
747 SIID_DESKTOPPC,
748 SIID_MOBILEPC,
749 SIID_USERS,
750 SIID_MEDIASMARTMEDIA,
751 SIID_MEDIACOMPACTFLASH,
752 SIID_DEVICECELLPHONE,
753 SIID_DEVICECAMERA,
754 SIID_DEVICEVIDEOCAMERA,
755 SIID_DEVICEAUDIOPLAYER,
756 SIID_NETWORKCONNECT,
757 SIID_INTERNET,
758 SIID_ZIPFILE,
759 SIID_SETTINGS,
760 /* Missing: 107 - 131 */
761 SIID_DRIVEHDDVD = 132,
762 SIID_DRIVEBD,
763 SIID_MEDIAHDDVDROM,
764 SIID_MEDIAHDDVDR,
765 SIID_MEDIAHDDVDRAM,
766 SIID_MEDIABDROM,
767 SIID_MEDIABDR,
768 SIID_MEDIABDRE,
769 SIID_CLUSTEREDDRIVE,
770 /* Missing: 141 - 174 */
771 SIID_MAX_ICONS = 175
772 } SHSTOCKICONID;
773
774 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
775
776 #if !defined(_WIN64)
777 #include <poppack.h>
778 #endif
779
780 #ifdef _MSC_VER
781 #pragma warning(pop)
782 #endif
783 #ifdef __cplusplus
784 }
785 #endif
786 #endif