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