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