[shellapi.h]
[reactos.git] / reactos / 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 #define SEE_MASK_CLASSNAME 1
24 #define SEE_MASK_CLASSKEY 3
25 #define SEE_MASK_IDLIST 4
26 #define SEE_MASK_INVOKEIDLIST 12
27 #define SEE_MASK_ICON 0x10
28 #define SEE_MASK_HOTKEY 0x20
29 #define SEE_MASK_NOCLOSEPROCESS 0x40
30 #define SEE_MASK_CONNECTNETDRV 0x80
31 #define SEE_MASK_NOASYNC 0x00000100
32 #define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
33 #define SEE_MASK_DOENVSUBST 0x200
34 #define SEE_MASK_FLAG_NO_UI 0x400
35 #define SEE_MASK_NO_CONSOLE 0x8000
36 #define SEE_MASK_UNICODE 0x10000
37 #define SEE_MASK_ASYNCOK 0x100000
38 #define SEE_MASK_HMONITOR 0x200000
39 #define SEE_MASK_NOZONECHECKS 0x00800000
40 #define ABM_NEW 0
41 #define ABM_REMOVE 1
42 #define ABM_QUERYPOS 2
43 #define ABM_SETPOS 3
44 #define ABM_GETSTATE 4
45 #define ABM_GETTASKBARPOS 5
46 #define ABM_ACTIVATE 6
47 #define ABM_GETAUTOHIDEBAR 7
48 #define ABM_SETAUTOHIDEBAR 8
49 #define ABM_WINDOWPOSCHANGED 9
50 #define ABN_STATECHANGE 0
51 #define ABN_POSCHANGED 1
52 #define ABN_FULLSCREENAPP 2
53 #define ABN_WINDOWARRANGE 3
54 #define NIM_ADD 0
55 #define NIM_MODIFY 1
56 #define NIM_DELETE 2
57 #if _WIN32_IE >= 0x0500
58 #define NOTIFYICON_VERSION 3
59 #define NIM_SETFOCUS 3
60 #define NIM_SETVERSION 4
61 #endif
62 #define NIF_MESSAGE 1
63 #define NIF_ICON 2
64 #define NIF_TIP 4
65 #define NIF_STATE 8
66 #if _WIN32_IE >= 0x0500
67 #define NIF_INFO 16
68 #define NIS_HIDDEN 1
69 #define NIS_SHAREDICON 2
70 #define NIIF_NONE 0
71 #define NIIF_INFO 1
72 #define NIIF_WARNING 2
73 #define NIIF_ERROR 3
74 #if _WIN32_IE >= 0x0600
75 #define NIIF_ICON_MASK 0xf
76 #define NIIF_NOSOUND 0x10
77 #endif /* _WIN32_IE >= 0x0600 */
78 #endif /* _WIN32_IE >= 0x0500 */
79 #define SE_ERR_FNF 2
80 #define SE_ERR_PNF 3
81 #define SE_ERR_ACCESSDENIED 5
82 #define SE_ERR_OOM 8
83 #define SE_ERR_DLLNOTFOUND 32
84 #define SE_ERR_SHARE 26
85 #define SE_ERR_ASSOCINCOMPLETE 27
86 #define SE_ERR_DDETIMEOUT 28
87 #define SE_ERR_DDEFAIL 29
88 #define SE_ERR_DDEBUSY 30
89 #define SE_ERR_NOASSOC 31
90 #define FO_MOVE 1
91 #define FO_COPY 2
92 #define FO_DELETE 3
93 #define FO_RENAME 4
94
95 #define FOF_MULTIDESTFILES 0x0001
96 #define FOF_CONFIRMMOUSE 0x0002
97 #define FOF_SILENT 0x0004
98 #define FOF_RENAMEONCOLLISION 0x0008
99 #define FOF_NOCONFIRMATION 0x0010
100 #define FOF_WANTMAPPINGHANDLE 0x0020
101 #define FOF_ALLOWUNDO 0x0040
102 #define FOF_FILESONLY 0x0080
103 #define FOF_SIMPLEPROGRESS 0x0100
104 #define FOF_NOCONFIRMMKDIR 0x0200
105 #define FOF_NOERRORUI 0x0400
106 #define FOF_NOCOPYSECURITYATTRIBS 0x0800
107 #define FOF_NORECURSION 0x1000 /* don't do recursion into directories */
108 #define FOF_NO_CONNECTED_ELEMENTS 0x2000 /* don't do connected files */
109 #define FOF_WANTNUKEWARNING 0x4000 /* during delete operation, warn if delete instead
110 of recycling (even if FOF_NOCONFIRMATION) */
111 #define FOF_NORECURSEREPARSE 0x8000 /* don't do recursion into reparse points */
112
113 #define PO_DELETE 19
114 #define PO_RENAME 20
115 #define PO_PORTCHANGE 32
116 #define PO_REN_PORT 52
117 #define SHGFI_ADDOVERLAYS 32
118 #define SHGFI_OVERLAYINDEX 64
119 #define SHGFI_ICON 256
120 #define SHGFI_DISPLAYNAME 512
121 #define SHGFI_TYPENAME 1024
122 #define SHGFI_ATTRIBUTES 2048
123 #define SHGFI_ICONLOCATION 4096
124 #define SHGFI_EXETYPE 8192
125 #define SHGFI_SYSICONINDEX 16384
126 #define SHGFI_LINKOVERLAY 32768
127 #define SHGFI_SELECTED 65536
128 #define SHGFI_ATTR_SPECIFIED 131072
129 #define SHGFI_LARGEICON 0
130 #define SHGFI_SMALLICON 1
131 #define SHGFI_OPENICON 2
132 #define SHGFI_SHELLICONSIZE 4
133 #define SHGFI_PIDL 8
134 #define SHGFI_USEFILEATTRIBUTES 16
135
136 #if (NTDDI_VERSION >= NTDDI_WINXP)
137 #define SHIL_LARGE 0x0
138 #define SHIL_SMALL 0x1
139 #define SHIL_EXTRALARGE 0x2
140 #define SHIL_SYSSMALL 0x3
141 #if (NTDDI_VERSION >= NTDDI_VISTA)
142 #define SHIL_JUMBO 0x4
143 #define SHIL_LAST SHIL_JUMBO
144 #else
145 #define SHIL_LAST SHIL_SYSSMALL
146 #endif
147 #endif
148
149 typedef struct _SHCREATEPROCESSINFOW
150 {
151 DWORD cbSize;
152 ULONG fMask;
153 HWND hwnd;
154 LPCWSTR pszFile;
155 LPCWSTR pszParameters;
156 LPCWSTR pszCurrentDirectory;
157 IN HANDLE hUserToken;
158 IN LPSECURITY_ATTRIBUTES lpProcessAttributes;
159 IN LPSECURITY_ATTRIBUTES lpThreadAttributes;
160 IN BOOL bInheritHandles;
161 IN DWORD dwCreationFlags;
162 IN LPSTARTUPINFOW lpStartupInfo;
163 OUT LPPROCESS_INFORMATION lpProcessInformation;
164 } SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
165
166 typedef WORD FILEOP_FLAGS;
167 typedef WORD PRINTEROP_FLAGS;
168
169 typedef struct _AppBarData {
170 DWORD cbSize;
171 HWND hWnd;
172 UINT uCallbackMessage;
173 UINT uEdge;
174 RECT rc;
175 LPARAM lParam;
176 } APPBARDATA,*PAPPBARDATA;
177 DECLARE_HANDLE(HDROP);
178
179 typedef struct _NOTIFYICONDATAA {
180 DWORD cbSize;
181 HWND hWnd;
182 UINT uID;
183 UINT uFlags;
184 UINT uCallbackMessage;
185 HICON hIcon;
186 #if _WIN32_IE >= 0x0500
187 CHAR szTip[128];
188 DWORD dwState;
189 DWORD dwStateMask;
190 CHAR szInfo[256];
191 _ANONYMOUS_UNION union {
192 UINT uTimeout;
193 UINT uVersion;
194 } DUMMYUNIONNAME;
195 CHAR szInfoTitle[64];
196 DWORD dwInfoFlags;
197 #else
198 CHAR szTip[64];
199 #endif
200 #if _WIN32_IE >= 0x600
201 GUID guidItem;
202 #endif
203 } NOTIFYICONDATAA,*PNOTIFYICONDATAA;
204
205 typedef struct _NOTIFYICONDATAW {
206 DWORD cbSize;
207 HWND hWnd;
208 UINT uID;
209 UINT uFlags;
210 UINT uCallbackMessage;
211 HICON hIcon;
212 #if _WIN32_IE >= 0x0500
213 WCHAR szTip[128];
214 DWORD dwState;
215 DWORD dwStateMask;
216 WCHAR szInfo[256];
217 _ANONYMOUS_UNION union {
218 UINT uTimeout;
219 UINT uVersion;
220 } DUMMYUNIONNAME;
221 WCHAR szInfoTitle[64];
222 DWORD dwInfoFlags;
223 #else
224 WCHAR szTip[64];
225 #endif
226 #if _WIN32_IE >= 0x600
227 GUID guidItem;
228 #endif
229 } NOTIFYICONDATAW,*PNOTIFYICONDATAW;
230
231 #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
232 #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
233 #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
234 #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
235
236 #if WINVER >= 0x400
237 typedef struct _DRAGINFOA {
238 UINT uSize;
239 POINT pt;
240 BOOL fNC;
241 LPSTR lpFileList;
242 DWORD grfKeyState;
243 } DRAGINFOA,*LPDRAGINFOA;
244 typedef struct _DRAGINFOW {
245 UINT uSize;
246 POINT pt;
247 BOOL fNC;
248 LPWSTR lpFileList;
249 DWORD grfKeyState;
250 } DRAGINFOW,*LPDRAGINFOW;
251 #endif
252
253 typedef struct _SHELLEXECUTEINFOA {
254 DWORD cbSize;
255 ULONG fMask;
256 HWND hwnd;
257 LPCSTR lpVerb;
258 LPCSTR lpFile;
259 LPCSTR lpParameters;
260 LPCSTR lpDirectory;
261 int nShow;
262 HINSTANCE hInstApp;
263 PVOID lpIDList;
264 LPCSTR lpClass;
265 HKEY hkeyClass;
266 DWORD dwHotKey;
267 HANDLE hIcon;
268 HANDLE hProcess;
269 } SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
270 typedef struct _SHELLEXECUTEINFOW {
271 DWORD cbSize;
272 ULONG fMask;
273 HWND hwnd;
274 LPCWSTR lpVerb;
275 LPCWSTR lpFile;
276 LPCWSTR lpParameters;
277 LPCWSTR lpDirectory;
278 int nShow;
279 HINSTANCE hInstApp;
280 PVOID lpIDList;
281 LPCWSTR lpClass;
282 HKEY hkeyClass;
283 DWORD dwHotKey;
284 HANDLE hIcon;
285 HANDLE hProcess;
286 } SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
287 typedef struct _SHFILEOPSTRUCTA {
288 HWND hwnd;
289 UINT wFunc;
290 LPCSTR pFrom;
291 LPCSTR pTo;
292 FILEOP_FLAGS fFlags;
293 BOOL fAnyOperationsAborted;
294 PVOID hNameMappings;
295 LPCSTR lpszProgressTitle;
296 } SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
297 typedef struct _SHFILEOPSTRUCTW {
298 HWND hwnd;
299 UINT wFunc;
300 LPCWSTR pFrom;
301 LPCWSTR pTo;
302 FILEOP_FLAGS fFlags;
303 BOOL fAnyOperationsAborted;
304 PVOID hNameMappings;
305 LPCWSTR lpszProgressTitle;
306 } SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
307 typedef struct _SHFILEINFOA {
308 HICON hIcon;
309 int iIcon;
310 DWORD dwAttributes;
311 CHAR szDisplayName[MAX_PATH];
312 CHAR szTypeName[80];
313 } SHFILEINFOA;
314 typedef struct _SHFILEINFOW {
315 HICON hIcon;
316 int iIcon;
317 DWORD dwAttributes;
318 WCHAR szDisplayName[MAX_PATH];
319 WCHAR szTypeName[80];
320 } SHFILEINFOW;
321 typedef struct _SHQUERYRBINFO {
322 DWORD cbSize;
323 __int64 i64Size;
324 __int64 i64NumItems;
325 } SHQUERYRBINFO, *LPSHQUERYRBINFO;
326 typedef struct _SHNAMEMAPPINGA {
327 LPSTR pszOldPath;
328 LPSTR pszNewPath;
329 int cchOldPath;
330 int cchNewPath;
331 } SHNAMEMAPPINGA, *LPSHNAMEMAPPINGA;
332 typedef struct _SHNAMEMAPPINGW {
333 LPWSTR pszOldPath;
334 LPWSTR pszNewPath;
335 int cchOldPath;
336 int cchNewPath;
337 } SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW;
338
339 #define SHERB_NOCONFIRMATION 0x1
340 #define SHERB_NOPROGRESSUI 0x2
341 #define SHERB_NOSOUND 0x4
342
343 /******************************************
344 * Links
345 */
346
347 #define SHGNLI_PIDL 0x01
348 #define SHGNLI_PREFIXNAME 0x02
349 #define SHGNLI_NOUNIQUE 0x04
350 #define SHGNLI_NOLNK 0x08
351
352 BOOL WINAPI SHGetNewLinkInfoA(LPCSTR,LPCSTR,LPSTR,BOOL*,UINT);
353 BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR,LPCWSTR,LPWSTR,BOOL*,UINT);
354
355 LPWSTR * WINAPI CommandLineToArgvW(LPCWSTR,int*);
356 void WINAPI DragAcceptFiles(HWND,BOOL);
357 void WINAPI DragFinish(HDROP);
358 UINT WINAPI DragQueryFileA(HDROP,UINT,LPSTR,UINT);
359 UINT WINAPI DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
360 BOOL WINAPI DragQueryPoint(HDROP,LPPOINT);
361 HICON WINAPI ExtractAssociatedIconA(HINSTANCE,LPSTR,PWORD);
362 HICON WINAPI ExtractAssociatedIconW(HINSTANCE,LPWSTR,PWORD);
363 HICON WINAPI ExtractIconA(HINSTANCE,LPCSTR,UINT);
364 HICON WINAPI ExtractIconW(HINSTANCE,LPCWSTR,UINT);
365 UINT WINAPI ExtractIconExA(LPCSTR,int,HICON*,HICON*,UINT);
366 UINT WINAPI ExtractIconExW(LPCWSTR,int,HICON*,HICON*,UINT);
367 HINSTANCE WINAPI FindExecutableA(LPCSTR,LPCSTR,LPSTR);
368 HINSTANCE WINAPI FindExecutableW(LPCWSTR,LPCWSTR,LPWSTR);
369 UINT_PTR WINAPI SHAppBarMessage(DWORD,PAPPBARDATA);
370 BOOL WINAPI Shell_NotifyIconA(DWORD,PNOTIFYICONDATAA);
371 BOOL WINAPI Shell_NotifyIconW(DWORD,PNOTIFYICONDATAW);
372 int WINAPI ShellAboutA(HWND,LPCSTR,LPCSTR,HICON);
373 int WINAPI ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON);
374 int WINAPI ShellMessageBoxA(HINSTANCE,HWND,LPCSTR,LPCSTR,UINT,...);
375 int WINAPI ShellMessageBoxW(HINSTANCE,HWND,LPCWSTR,LPCWSTR,UINT,...);
376 HINSTANCE WINAPI ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT);
377 HINSTANCE WINAPI ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT);
378 BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA);
379 BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW);
380 int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA);
381 int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW);
382 void WINAPI SHFreeNameMappings(HANDLE);
383 DWORD_PTR WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
384 DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
385 BOOL WINAPI SHGetNewLinkInfoA(LPCSTR,LPCSTR,LPSTR,BOOL*,UINT);
386 BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR,LPCWSTR,LPWSTR,BOOL*,UINT);
387 HRESULT WINAPI SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO);
388 HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO);
389 HRESULT WINAPI SHEmptyRecycleBinA(HWND,LPCSTR,DWORD);
390 HRESULT WINAPI SHEmptyRecycleBinW(HWND,LPCWSTR,DWORD);
391 BOOL WINAPI SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW);
392
393 #ifdef UNICODE
394 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
395 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
396 typedef NOTIFYICONDATAW NOTIFYICONDATA,*PNOTIFYICONDATA;
397 typedef DRAGINFOW DRAGINFO,*LPDRAGINFO;
398 typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
399 typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
400 typedef SHFILEINFOW SHFILEINFO;
401 typedef SHNAMEMAPPINGW SHNAMEMAPPING;
402 typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
403 #define DragQueryFile DragQueryFileW
404 #define ExtractAssociatedIcon ExtractAssociatedIconW
405 #define ExtractIcon ExtractIconW
406 #define ExtractIconEx ExtractIconExW
407 #define FindExecutable FindExecutableW
408 #define Shell_NotifyIcon Shell_NotifyIconW
409 #define ShellAbout ShellAboutW
410 #define ShellExecute ShellExecuteW
411 #define ShellExecuteEx ShellExecuteExW
412 #define ShellMessageBox ShellMessageBoxW
413 #define SHFileOperation SHFileOperationW
414 #define SHGetFileInfo SHGetFileInfoW
415 #define SHGetNewLinkInfo SHGetNewLinkInfoW
416 #define SHQueryRecycleBin SHQueryRecycleBinW
417 #define SHEmptyRecycleBin SHEmptyRecycleBinW
418 #define SHGetNewLinkInfo SHGetNewLinkInfoW
419
420 #else
421 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
422 #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
423 typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA;
424 typedef DRAGINFOA DRAGINFO,*LPDRAGINFO;
425 typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
426 typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
427 typedef SHFILEINFOA SHFILEINFO;
428 typedef SHNAMEMAPPINGA SHNAMEMAPPING;
429 typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
430 #define DragQueryFile DragQueryFileA
431 #define ExtractAssociatedIcon ExtractAssociatedIconA
432 #define ExtractIcon ExtractIconA
433 #define ExtractIconEx ExtractIconExA
434 #define FindExecutable FindExecutableA
435 #define Shell_NotifyIcon Shell_NotifyIconA
436 #define ShellAbout ShellAboutA
437 #define ShellExecute ShellExecuteA
438 #define ShellExecuteEx ShellExecuteExA
439 #define ShellMessageBox ShellMessageBoxA
440 #define SHFileOperation SHFileOperationA
441 #define SHGetFileInfo SHGetFileInfoA
442 #define SHGetNewLinkInfo SHGetNewLinkInfoA
443 #define SHQueryRecycleBin SHQueryRecycleBinA
444 #define SHEmptyRecycleBin SHEmptyRecycleBinA
445 #define SHGetNewLinkInfo SHGetNewLinkInfoA
446 #endif
447
448 #if !defined(_WIN64)
449 #include <pshpack1.h>
450 #endif
451
452 #ifdef _MSC_VER
453 #pragma warning(pop)
454 #endif
455 #ifdef __cplusplus
456 }
457 #endif
458 #endif