Fix sublanguage IDs in .rc files:
[reactos.git] / reactos / w32api / include / shlobj.h
1 #ifndef _SHLOBJ_H
2 #define _SHLOBJ_H
3 #if __GNUC__ >= 3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #include <ole2.h>
12 #include <shlguid.h>
13 #include <shellapi.h>
14 #include <shtypes.h>
15 #include <commctrl.h>
16
17 #pragma pack(push,1)
18
19 #define BIF_RETURNONLYFSDIRS 1
20 #define BIF_DONTGOBELOWDOMAIN 2
21 #define BIF_STATUSTEXT 4
22 #define BIF_RETURNFSANCESTORS 8
23 #define BIF_EDITBOX 16
24 #define BIF_VALIDATE 32
25 #define BIF_NEWDIALOGSTYLE 64
26 #define BIF_BROWSEINCLUDEURLS 128
27 #define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE )
28 #define BIF_BROWSEFORCOMPUTER 0x1000
29 #define BIF_BROWSEFORPRINTER 0x2000
30 #define BIF_BROWSEINCLUDEFILES 0x4000
31 #define BIF_SHAREABLE 0x8000
32 #define BFFM_INITIALIZED 1
33 #define BFFM_SELCHANGED 2
34 #define BFFM_VALIDATEFAILEDA 3
35 #define BFFM_VALIDATEFAILEDW 4
36 #define BFFM_SETSTATUSTEXTA (WM_USER + 100)
37 #define BFFM_SETSTATUSTEXTW (WM_USER + 104)
38 #define BFFM_ENABLEOK (WM_USER + 101)
39 #define BFFM_SETSELECTIONA (WM_USER + 102)
40 #define BFFM_SETSELECTIONW (WM_USER + 103)
41 #define BFFM_SETOKTEXT (WM_USER + 105)
42 #define BFFM_SETEXPANDED (WM_USER + 106)
43 #ifdef UNICODE
44 #define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW
45 #define BFFM_SETSELECTION BFFM_SETSELECTIONW
46 #define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW
47 #else
48 #define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTA
49 #define BFFM_SETSELECTION BFFM_SETSELECTIONA
50 #define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA
51 #endif
52 #define DVASPECT_SHORTNAME 2
53 #define SHARD_PIDL 1
54 #define SHARD_PATHA 2
55 #define SHARD_PATHW 3
56 #ifdef UNICODE
57 #define SHARD_PATH SHARD_PATHW
58 #else
59 #define SHARD_PATH SHARD_PATHA
60 #endif
61 #define SHCNE_RENAMEITEM 1
62 #define SHCNE_CREATE 2
63 #define SHCNE_DELETE 4
64 #define SHCNE_MKDIR 8
65 #define SHCNE_RMDIR 16
66 #define SHCNE_MEDIAINSERTED 32
67 #define SHCNE_MEDIAREMOVED 64
68 #define SHCNE_DRIVEREMOVED 128
69 #define SHCNE_DRIVEADD 256
70 #define SHCNE_NETSHARE 512
71 #define SHCNE_NETUNSHARE 1024
72 #define SHCNE_ATTRIBUTES 2048
73 #define SHCNE_UPDATEDIR 4096
74 #define SHCNE_UPDATEITEM 8192
75 #define SHCNE_SERVERDISCONNECT 16384
76 #define SHCNE_UPDATEIMAGE 32768
77 #define SHCNE_DRIVEADDGUI 65536
78 #define SHCNE_RENAMEFOLDER 0x20000
79 #define SHCNE_FREESPACE 0x40000
80 #define SHCNE_ASSOCCHANGED 0x8000000
81 #define SHCNE_DISKEVENTS 0x2381F
82 #define SHCNE_GLOBALEVENTS 0xC0581E0
83 #define SHCNE_ALLEVENTS 0x7FFFFFFF
84 #define SHCNE_INTERRUPT 0x80000000
85 #define SHCNF_IDLIST 0
86 #define SHCNF_PATHA 1
87 #define SHCNF_PRINTERA 2
88 #define SHCNF_DWORD 3
89 #define SHCNF_PATHW 5
90 #define SHCNF_PRINTERW 6
91 #define SHCNF_TYPE 0xFF
92 #define SHCNF_FLUSH 0x1000
93 #define SHCNF_FLUSHNOWAIT 0x2000
94 #ifdef UNICODE
95 #define SHCNF_PATH SHCNF_PATHW
96 #define SHCNF_PRINTER SHCNF_PRINTERW
97 #else
98 #define SHCNF_PATH SHCNF_PATHA
99 #define SHCNF_PRINTER SHCNF_PRINTERA
100 #endif
101 #define SFGAO_CANCOPY DROPEFFECT_COPY
102 #define SFGAO_CANMOVE DROPEFFECT_MOVE
103 #define SFGAO_CANLINK DROPEFFECT_LINK
104 #define SFGAO_STORAGE 0x00000008L
105 #define SFGAO_CANRENAME 0x00000010L
106 #define SFGAO_CANDELETE 0x00000020L
107 #define SFGAO_HASPROPSHEET 0x00000040L
108 #define SFGAO_DROPTARGET 0x00000100L
109 #define SFGAO_CAPABILITYMASK 0x00000177L
110 #define SFGAO_ISSLOW 0x00004000L
111 #define SFGAO_GHOSTED 0x00008000L
112 #define SFGAO_LINK 0x00010000L
113 #define SFGAO_SHARE 0x00020000L
114 #define SFGAO_READONLY 0x00040000L
115 #define SFGAO_HIDDEN 0x00080000L
116 #define SFGAO_DISPLAYATTRMASK 0x000F0000L
117 #define SFGAO_FILESYSANCESTOR 0x10000000L
118 #define SFGAO_FOLDER 0x20000000L
119 #define SFGAO_FILESYSTEM 0x40000000L
120 #define SFGAO_HASSUBFOLDER 0x80000000L
121 #define SFGAO_CONTENTSMASK 0x80000000L
122 #define SFGAO_VALIDATE 0x01000000L
123 #define SFGAO_REMOVABLE 0x02000000L
124 #define SFGAO_COMPRESSED 0x04000000L
125 #define SFGAO_STORAGEANCESTOR 0x00800000L
126 #define STRRET_WSTR 0
127 #define STRRET_OFFSET 1
128 #define STRRET_CSTR 2
129 #define SHGDFIL_FINDDATA 1
130 #define SHGDFIL_NETRESOURCE 2
131 #define SHGDFIL_DESCRIPTIONID 3
132 #define SHDID_ROOT_REGITEM 1
133 #define SHDID_FS_FILE 2
134 #define SHDID_FS_DIRECTORY 3
135 #define SHDID_FS_OTHER 4
136 #define SHDID_COMPUTER_DRIVE35 5
137 #define SHDID_COMPUTER_DRIVE525 6
138 #define SHDID_COMPUTER_REMOVABLE 7
139 #define SHDID_COMPUTER_FIXED 8
140 #define SHDID_COMPUTER_NETDRIVE 9
141 #define SHDID_COMPUTER_CDROM 10
142 #define SHDID_COMPUTER_RAMDISK 11
143 #define SHDID_COMPUTER_OTHER 12
144 #define SHDID_NET_DOMAIN 13
145 #define SHDID_NET_SERVER 14
146 #define SHDID_NET_SHARE 15
147 #define SHDID_NET_RESTOFNET 16
148 #define SHDID_NET_OTHER 17
149 #ifndef REGSTR_PATH_EXPLORER
150 #define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
151 #endif
152 #define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
153
154 #define CSIDL_DESKTOP 0x0000
155 #define CSIDL_INTERNET 0x0001
156 #define CSIDL_PROGRAMS 0x0002
157 #define CSIDL_CONTROLS 0x0003
158 #define CSIDL_PRINTERS 0x0004
159 #define CSIDL_PERSONAL 0x0005
160 #define CSIDL_FAVORITES 0x0006
161 #define CSIDL_STARTUP 0x0007
162 #define CSIDL_RECENT 0x0008
163 #define CSIDL_SENDTO 0x0009
164 #define CSIDL_BITBUCKET 0x000a
165 #define CSIDL_STARTMENU 0x000b
166 #define CSIDL_MYDOCUMENTS 0x000c
167 #define CSIDL_MYMUSIC 0x000d
168 #define CSIDL_MYVIDEO 0x000e
169 #define CSIDL_DESKTOPDIRECTORY 0x0010
170 #define CSIDL_DRIVES 0x0011
171 #define CSIDL_NETWORK 0x0012
172 #define CSIDL_NETHOOD 0x0013
173 #define CSIDL_FONTS 0x0014
174 #define CSIDL_TEMPLATES 0x0015
175 #define CSIDL_COMMON_STARTMENU 0x0016
176 #define CSIDL_COMMON_PROGRAMS 0X0017
177 #define CSIDL_COMMON_STARTUP 0x0018
178 #define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
179 #define CSIDL_APPDATA 0x001a
180 #define CSIDL_PRINTHOOD 0x001b
181 #define CSIDL_LOCAL_APPDATA 0x001c
182 #define CSIDL_ALTSTARTUP 0x001d
183 #define CSIDL_COMMON_ALTSTARTUP 0x001e
184 #define CSIDL_COMMON_FAVORITES 0x001f
185 #define CSIDL_INTERNET_CACHE 0x0020
186 #define CSIDL_COOKIES 0x0021
187 #define CSIDL_HISTORY 0x0022
188 #define CSIDL_COMMON_APPDATA 0x0023
189 #define CSIDL_WINDOWS 0x0024
190 #define CSIDL_SYSTEM 0x0025
191 #define CSIDL_PROGRAM_FILES 0x0026
192 #define CSIDL_MYPICTURES 0x0027
193 #define CSIDL_PROFILE 0x0028
194 #define CSIDL_SYSTEMX86 0x0029
195 #define CSIDL_PROGRAM_FILESX86 0x002a
196 #define CSIDL_PROGRAM_FILES_COMMON 0x002b
197 #define CSIDL_PROGRAM_FILES_COMMONX86 0x002c
198 #define CSIDL_COMMON_TEMPLATES 0x002d
199 #define CSIDL_COMMON_DOCUMENTS 0x002e
200 #define CSIDL_COMMON_ADMINTOOLS 0x002f
201 #define CSIDL_ADMINTOOLS 0x0030
202 #define CSIDL_CONNECTIONS 0x0031
203 #define CSIDL_COMMON_MUSIC 0x0035
204 #define CSIDL_COMMON_PICTURES 0x0036
205 #define CSIDL_COMMON_VIDEO 0x0037
206 #define CSIDL_RESOURCES 0x0038
207 #define CSIDL_RESOURCES_LOCALIZED 0x0039
208 #define CSIDL_COMMON_OEM_LINKS 0x003a
209 #define CSIDL_CDBURN_AREA 0x003b
210 #define CSIDL_COMPUTERSNEARME 0x003d
211 #define CSIDL_PROFILES 0x003e
212 #define CSIDL_FOLDER_MASK 0x00ff
213 #define CSIDL_FLAG_PER_USER_INIT 0x0800
214 #define CSIDL_FLAG_NO_ALIAS 0x1000
215 #define CSIDL_FLAG_DONT_VERIFY 0x4000
216 #define CSIDL_FLAG_CREATE 0x8000
217 #define CSIDL_FLAG_MASK 0xff00
218
219 #define CFSTR_SHELLIDLIST TEXT("Shell IDList Array")
220 #define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets")
221 #define CFSTR_NETRESOURCES TEXT("Net Resource")
222 #define CFSTR_FILECONTENTS TEXT("FileContents")
223 #define CFSTR_FILENAMEA TEXT("FileName")
224 #define CFSTR_FILENAMEMAPA TEXT("FileNameMap")
225 #define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor")
226 #define CFSTR_INETURLA TEXT("UniformResourceLocator")
227 #define CFSTR_SHELLURL CFSTR_INETURLA
228 #define CFSTR_FILENAMEW TEXT("FileNameW")
229 #define CFSTR_FILENAMEMAPW TEXT("FileNameMapW")
230 #define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW")
231 #define CFSTR_INETURLW TEXT("UniformResourceLocatorW")
232 #ifdef UNICODE
233 #define CFSTR_FILENAME CFSTR_FILENAMEW
234 #define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPW
235 #define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORW
236 #define CFSTR_INETURL CFSTR_INETURLW
237 #else
238 #define CFSTR_FILENAME CFSTR_FILENAMEA
239 #define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPA
240 #define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORA
241 #define CFSTR_INETURL CFSTR_INETURLA
242 #endif
243 #define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName")
244 #define CFSTR_INDRAGLOOP TEXT("InShellDragLoop")
245 #define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded")
246 #define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect")
247 #define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect")
248 #define CMF_NORMAL 0
249 #define CMF_DEFAULTONLY 1
250 #define CMF_VERBSONLY 2
251 #define CMF_EXPLORE 4
252 #define CMF_NOVERBS 8
253 #define CMF_CANRENAME 16
254 #define CMF_NODEFAULT 32
255 #define CMF_INCLUDESTATIC 64
256 #define CMF_RESERVED 0xffff0000
257 #define GCS_VERBA 0
258 #define GCS_HELPTEXTA 1
259 #define GCS_VALIDATEA 2
260 #define GCS_VERBW 4
261 #define GCS_HELPTEXTW 5
262 #define GCS_VALIDATEW 6
263 #define GCS_UNICODE 4
264 #ifdef UNICODE
265 #define GCS_VERB GCS_VERBW
266 #define GCS_HELPTEXT GCS_HELPTEXTW
267 #define GCS_VALIDATE GCS_VALIDATEW
268 #else
269 #define GCS_VERB GCS_VERBA
270 #define GCS_HELPTEXT GCS_HELPTEXTA
271 #define GCS_VALIDATE GCS_VALIDATEA
272 #endif
273 #define CMDSTR_NEWFOLDERA "NewFolder"
274 #define CMDSTR_VIEWLISTA "ViewList"
275 #define CMDSTR_VIEWDETAILSA "ViewDetails"
276 #define CMDSTR_NEWFOLDERW L"NewFolder"
277 #define CMDSTR_VIEWLISTW L"ViewList"
278 #define CMDSTR_VIEWDETAILSW L"ViewDetails"
279 #ifdef UNICODE
280 #define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDERW
281 #define CMDSTR_VIEWLIST CMDSTR_VIEWLISTW
282 #define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSW
283 #else
284 #define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDER
285 #define CMDSTR_VIEWLIST CMDSTR_VIEWLIST
286 #define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILS
287 #endif
288 #define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY
289 #define CMIC_MASK_ICON SEE_MASK_ICON
290 #define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI
291 #define CMIC_MASK_UNICODE SEE_MASK_UNICODE
292 #define CMIC_MASK_MODAL 0x80000000
293 #define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS
294 #define GIL_OPENICON 1
295 #define GIL_FORSHELL 2
296 #define GIL_ASYNC 32
297 #define GIL_DEFAULTICON 64
298 #define GIL_FORSHORTCUT 128
299 #define GIL_SIMULATEDOC 1
300 #define GIL_PERINSTANCE 2
301 #define GIL_PERCLASS 4
302 #define GIL_NOTFILENAME 8
303 #define GIL_DONTCACHE 16
304 #define FVSIF_RECT 1
305 #define FVSIF_PINNED 2
306 #define FVSIF_NEWFAILED 0x8000000
307 #define FVSIF_NEWFILE 0x80000000
308 #define FVSIF_CANVIEWIT 0x40000000
309 #define CDBOSC_SETFOCUS 0
310 #define CDBOSC_KILLFOCUS 1
311 #define CDBOSC_SELCHANGE 2
312 #define CDBOSC_RENAME 3
313 #define FCIDM_SHVIEWFIRST 0
314 #define FCIDM_SHVIEWLAST 0x7fff
315 #define FCIDM_BROWSERFIRST 0xa000
316 #define FCIDM_BROWSERLAST 0xbf00
317 #define FCIDM_GLOBALFIRST 0x8000
318 #define FCIDM_GLOBALLAST 0x9fff
319 #define FCIDM_MENU_FILE FCIDM_GLOBALFIRST
320 #define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
321 #define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
322 #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
323 #define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
324 #define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
325 #define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
326 #define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
327 #define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
328 #define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170)
329 #define FCIDM_TOOLBAR FCIDM_BROWSERFIRST
330 #define FCIDM_STATUS (FCIDM_BROWSERFIRST+1)
331 #define SBSP_DEFBROWSER 0
332 #define SBSP_SAMEBROWSER 1
333 #define SBSP_NEWBROWSER 2
334 #define SBSP_DEFMODE 0
335 #define SBSP_OPENMODE 16
336 #define SBSP_EXPLOREMODE 32
337 #define SBSP_ABSOLUTE 0
338 #define SBSP_HELPMODE 0x40
339 #define SBSP_NOTRANSFERHIST 0x80
340 #define SBSP_RELATIVE 0x1000
341 #define SBSP_PARENT 0x2000
342 #define SBSP_NAVIGATEBACK 0x4000
343 #define SBSP_NAVIGATEFORWARD 0x8000
344 #define SBSP_ALLOW_AUTONAVIGATE 0x10000
345 #define SBSP_NOAUTOSELECT 0x4000000
346 #define SBSP_WRITENOHISTORY 0x8000000
347 #define SBSP_INITIATEDBYHLINKFRAME 0x80000000
348 #define SBSP_REDIRECT 0x40000000
349 #define FCW_STATUS 1
350 #define FCW_TOOLBAR 2
351 #define FCW_TREE 3
352 #define FCT_MERGE 1
353 #define FCT_CONFIGABLE 2
354 #define FCT_ADDTOEND 4
355 #define SVSI_DESELECT 0
356 #define SVSI_SELECT 1
357 #define SVSI_EDIT 3
358 #define SVSI_DESELECTOTHERS 4
359 #define SVSI_ENSUREVISIBLE 8
360 #define SVSI_FOCUSED 16
361 #define SVGIO_BACKGROUND 0
362 #define SVGIO_SELECTION 1
363 #define SVGIO_ALLVIEW 2
364 #define SV2GV_CURRENTVIEW ((UINT)-1)
365 #define SV2GV_DEFAULTVIEW ((UINT)-2)
366 #define SHCNE_RENAMEITEM 0x00000001
367 #define SHCNE_CREATE 0x00000002
368 #define SHCNE_DELETE 0x00000004
369 #define SHCNE_MKDIR 0x00000008
370 #define SHCNE_RMDIR 0x00000010
371 #define SHCNE_MEDIAINSERTED 0x00000020
372 #define SHCNE_MEDIAREMOVED 0x00000040
373 #define SHCNE_DRIVEREMOVED 0x00000080
374 #define SHCNE_DRIVEADD 0x00000100
375 #define SHCNE_NETSHARE 0x00000200
376 #define SHCNE_NETUNSHARE 0x00000400
377 #define SHCNE_ATTRIBUTES 0x00000800
378 #define SHCNE_UPDATEDIR 0x00001000
379 #define SHCNE_UPDATEITEM 0x00002000
380 #define SHCNE_SERVERDISCONNECT 0x00004000
381 #define SHCNE_UPDATEIMAGE 0x00008000
382 #define SHCNE_DRIVEADDGUI 0x00010000
383 #define SHCNE_RENAMEFOLDER 0x00020000
384 #define SHCNE_FREESPACE 0x00040000
385 #define SHCNE_EXTENDED_EVENT 0x04000000
386 #define SHCNE_ASSOCCHANGED 0x08000000
387 #define SHCNE_DISKEVENTS 0x0002381F
388 #define SHCNE_GLOBALEVENTS 0x0C0581E0
389 #define SHCNE_ALLEVENTS 0x7FFFFFFF
390 #define SHCNE_INTERRUPT 0x80000000
391 #define SHCNEE_ORDERCHANGED 0x0002L
392 #define SHCNEE_MSI_CHANGE 0x0004L
393 #define SHCNEE_MSI_UNINSTALL 0x0005L
394 #define SHCNF_IDLIST 0x0000
395 #define SHCNF_PATHA 0x0001
396 #define SHCNF_PRINTERA 0x0002
397 #define SHCNF_DWORD 0x0003
398 #define SHCNF_PATHW 0x0005
399 #define SHCNF_PRINTERW 0x0006
400 #define SHCNF_TYPE 0x00FF
401 #define SHCNF_FLUSH 0x1000
402 #define SHCNF_FLUSHNOWAIT 0x2000
403 #ifdef UNICODE
404 #define SHCNF_PATH SHCNF_PATHW
405 #define SHCNF_PRINTER SHCNF_PRINTERW
406 #else
407 #define SHCNF_PATH SHCNF_PATHA
408 #define SHCNF_PRINTER SHCNF_PRINTERA
409 #endif
410 #define PCS_FATAL 0x80000000
411 #define PCS_REPLACEDCHAR 0x00000001
412 #define PCS_REMOVEDCHAR 0x00000002
413 #define PCS_TRUNCATED 0x00000004
414 #define PCS_PATHTOOLONG 0x00000008
415 #define SHFMT_ERROR 0xFFFFFFFFL
416 #define SHFMT_CANCEL 0xFFFFFFFEL
417 #define SHFMT_NOFORMAT 0xFFFFFFFDL
418 #define EXP_SZ_LINK_SIG 0xa0000001
419 #define NT_CONSOLE_PROPS_SIG 0xa0000002
420 #define NT_FE_CONSOLE_PROPS_SIG 0xa0000004
421 #define EXP_SPECIAL_FOLDER_SIG 0xa0000005
422 #define EXP_DARWIN_ID_SIG 0xa0000006
423 #define EXP_LOGO3_ID_SIG 0xa0000007
424 #define EXP_SZ_ICON_SIG 0xa0000007
425 #define SHOP_PRINTERNAME 0x01
426 #define SHOP_FILEPATH 0x02
427 #define SHOP_VOLUMEGUID 0x04
428
429 typedef ULONG SFGAOF;
430 typedef DWORD SHGDNF;
431
432 typedef struct _IDA {
433 UINT cidl;
434 UINT aoffset[1];
435 } CIDA,*LPIDA;
436 typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
437 typedef struct _browseinfoA {
438 HWND hwndOwner;
439 LPCITEMIDLIST pidlRoot;
440 LPSTR pszDisplayName;
441 LPCSTR lpszTitle;
442 UINT ulFlags;
443 BFFCALLBACK lpfn;
444 LPARAM lParam;
445 int iImage;
446 } BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
447 typedef struct _browseinfoW {
448 HWND hwndOwner;
449 LPCITEMIDLIST pidlRoot;
450 LPWSTR pszDisplayName;
451 LPCWSTR lpszTitle;
452 UINT ulFlags;
453 BFFCALLBACK lpfn;
454 LPARAM lParam;
455 int iImage;
456 } BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
457 typedef struct _CMInvokeCommandInfo {
458 DWORD cbSize;
459 DWORD fMask;
460 HWND hwnd;
461 LPCSTR lpVerb;
462 LPCSTR lpParameters;
463 LPCSTR lpDirectory;
464 int nShow;
465 DWORD dwHotKey;
466 HANDLE hIcon;
467 } CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
468 typedef struct _CMInvokeCommandInfoEx {
469 DWORD cbSize;
470 DWORD fMask;
471 HWND hwnd;
472 LPCSTR lpVerb;
473 LPCSTR lpParameters;
474 LPCSTR lpDirectory;
475 INT nShow;
476 DWORD dwHotKey;
477 HANDLE hIcon;
478 LPCSTR lpTitle;
479 LPCWSTR lpVerbW;
480 LPCWSTR lpParametersW;
481 LPCWSTR lpDirectoryW;
482 LPCWSTR lpTitleW;
483 POINT ptInvoke;
484 } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
485 typedef struct _DROPFILES {
486 DWORD pFiles;
487 POINT pt;
488 BOOL fNC;
489 BOOL fWide;
490 } DROPFILES,*LPDROPFILES;
491 typedef enum tagSHGDN {
492 SHGDN_NORMAL=0,
493 SHGDN_INFOLDER,
494 SHGDN_FOREDITING=0x1000,
495 SHGDN_INCLUDE_NONFILESYS=0x2000,
496 SHGDN_FORADDRESSBAR=0x4000,
497 SHGDN_FORPARSING=0x8000
498 } SHGNO;
499 typedef enum {
500 SHGFP_TYPE_CURRENT = 0,
501 SHGFP_TYPE_DEFAULT = 1
502 } SHGFP_TYPE;
503 typedef enum tagSHCONTF {
504 SHCONTF_FOLDERS = 32,
505 SHCONTF_NONFOLDERS = 64,
506 SHCONTF_INCLUDEHIDDEN = 128,
507 SHCONTF_INIT_ON_FIRST_NEXT = 256,
508 SHCONTF_NETPRINTERSRCH = 512,
509 SHCONTF_SHAREABLE = 1024,
510 SHCONTF_STORAGE = 2048
511 } SHCONTF;
512 typedef enum {
513 FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16,
514 FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000
515 } FD_FLAGS;
516 typedef struct _FILEDESCRIPTOR {
517 DWORD dwFlags;
518 CLSID clsid;
519 SIZEL sizel;
520 POINTL pointl;
521 DWORD dwFileAttributes;
522 FILETIME ftCreationTime;
523 FILETIME ftLastAccessTime;
524 FILETIME ftLastWriteTime;
525 DWORD nFileSizeHigh;
526 DWORD nFileSizeLow;
527 CHAR cFileName[MAX_PATH];
528 } FILEDESCRIPTOR,*LPFILEDESCRIPTOR;
529 typedef struct _FILEGROUPDESCRIPTOR {
530 UINT cItems;
531 FILEDESCRIPTOR fgd[1];
532 } FILEGROUPDESCRIPTOR,*LPFILEGROUPDESCRIPTOR;
533 typedef enum {
534 SLR_NO_UI=1,
535 SLR_ANY_MATCH=2,
536 SLR_UPDATE=4,
537 SLR_NOUPDATE=8,
538 SLR_NOSEARCH=16,
539 SLR_NOTRACK=32,
540 SLR_NOLINKINFO=64,
541 SLR_INVOKE_MSI=128
542 } SLR_FLAGS;
543 typedef enum {
544 SLGP_SHORTPATH=0x1,
545 SLGP_UNCPRIORITY=0x2,
546 SLGP_RAWPATH=0x4
547 } SLGP_FLAGS;
548 typedef PBYTE LPVIEWSETTINGS;
549 typedef enum {
550 FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8,
551 FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128,
552 FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800,
553 FWF_SINGLECLICKACTIVATE=0x8000
554 } FOLDERFLAGS;
555 typedef enum {
556 FVM_ICON=1,
557 FVM_SMALLICON,
558 FVM_LIST,
559 FVM_DETAILS
560 } FOLDERVIEWMODE;
561 typedef struct {
562 UINT ViewMode;
563 UINT fFlags;
564 } FOLDERSETTINGS,*LPFOLDERSETTINGS;
565 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
566 typedef struct {
567 DWORD cbSize;
568 HWND hwndOwner;
569 int iShow;
570 DWORD dwFlags;
571 RECT rect;
572 LPUNKNOWN punkRel;
573 OLECHAR strNewFile[MAX_PATH];
574 } FVSHOWINFO,*LPFVSHOWINFO;
575 typedef struct _NRESARRAY {
576 UINT cItems;
577 NETRESOURCE nr[1];
578 } NRESARRAY, *LPNRESARRAY;
579 enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY };
580 enum {
581 SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION,
582 SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS
583 };
584 typedef enum {
585 SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS,
586 SVUIA_INPLACEACTIVATE
587 } SVUIA_STATUS;
588 #if (_WIN32_IE >= 0x0500)
589 typedef struct tagEXTRASEARCH
590 {
591 GUID guidSearch;
592 WCHAR wszFriendlyName[80];
593 WCHAR wszUrl[2084];
594 } EXTRASEARCH, *LPEXTRASEARCH;
595 typedef DWORD SHCOLSTATEF;
596 typedef struct
597 {
598 GUID fmtid;
599 DWORD pid;
600 } SHCOLUMNID, *LPSHCOLUMNID;
601 typedef const SHCOLUMNID *LPCSHCOLUMNID;
602 typedef struct
603 {
604 LPITEMIDLIST pidlTargetFolder;
605 WCHAR szTargetParsingName[MAX_PATH];
606 WCHAR szNetworkProvider[MAX_PATH];
607 DWORD dwAttributes;
608 int csidl;
609 } PERSIST_FOLDER_TARGET_INFO;
610 #endif
611 typedef struct _SHChangeNotifyEntry
612 {
613 LPCITEMIDLIST pidl;
614 BOOL fRecursive;
615 } SHChangeNotifyEntry;
616 #define NUM_POINTS 3
617 typedef struct
618 {
619 int iNextSample;
620 DWORD dwLastScroll;
621 BOOL bFull;
622 POINT pts[NUM_POINTS];
623 DWORD dwTimes[NUM_POINTS];
624 } AUTO_SCROLL_DATA;
625 typedef struct
626 {
627 WORD cLength;
628 WORD nVersion;
629 BOOL fFullPathTitle:1;
630 BOOL fSaveLocalView:1;
631 BOOL fNotShell:1;
632 BOOL fSimpleDefault:1;
633 BOOL fDontShowDescBar:1;
634 BOOL fNewWindowMode:1;
635 BOOL fShowCompColor:1;
636 BOOL fDontPrettyNames:1;
637 BOOL fAdminsCreateCommonGroups:1;
638 UINT fUnusedFlags:7;
639 UINT fMenuEnumFilter;
640 } CABINETSTATE, *LPCABINETSTATE;
641 typedef enum RESTRICTIONS
642 {
643 REST_NONE = 0x00000000,
644 REST_NORUN = 0x00000001,
645 REST_NOCLOSE = 0x00000002,
646 REST_NOSAVESET = 0x00000004,
647 REST_NOFILEMENU = 0x00000008,
648 REST_NOSETFOLDERS = 0x00000010,
649 REST_NOSETTASKBAR = 0x00000020,
650 REST_NODESKTOP = 0x00000040,
651 REST_NOFIND = 0x00000080,
652 REST_NODRIVES = 0x00000100,
653 REST_NODRIVEAUTORUN = 0x00000200,
654 REST_NODRIVETYPEAUTORUN = 0x00000400,
655 REST_NONETHOOD = 0x00000800,
656 REST_STARTBANNER = 0x00001000,
657 REST_RESTRICTRUN = 0x00002000,
658 REST_NOPRINTERTABS = 0x00004000,
659 REST_NOPRINTERDELETE = 0x00008000,
660 REST_NOPRINTERADD = 0x00010000,
661 REST_NOSTARTMENUSUBFOLDERS = 0x00020000,
662 REST_MYDOCSONNET = 0x00040000,
663 REST_NOEXITTODOS = 0x00080000,
664 REST_ENFORCESHELLEXTSECURITY = 0x00100000,
665 REST_LINKRESOLVEIGNORELINKINFO = 0x00200000,
666 REST_NOCOMMONGROUPS = 0x00400000,
667 REST_SEPARATEDESKTOPPROCESS = 0x00800000,
668 REST_NOWEB = 0x01000000,
669 REST_NOTRAYCONTEXTMENU = 0x02000000,
670 REST_NOVIEWCONTEXTMENU = 0x04000000,
671 REST_NONETCONNECTDISCONNECT = 0x08000000,
672 REST_STARTMENULOGOFF = 0x10000000,
673 REST_NOSETTINGSASSIST = 0x20000000,
674 REST_NOINTERNETICON = 0x40000001,
675 REST_NORECENTDOCSHISTORY,
676 REST_NORECENTDOCSMENU,
677 REST_NOACTIVEDESKTOP,
678 REST_NOACTIVEDESKTOPCHANGES,
679 REST_NOFAVORITESMENU,
680 REST_CLEARRECENTDOCSONEXIT,
681 REST_CLASSICSHELL,
682 REST_NOCUSTOMIZEWEBVIEW,
683
684 REST_NOHTMLWALLPAPER = 0x40000010,
685 REST_NOCHANGINGWALLPAPER,
686 REST_NODESKCOMP,
687 REST_NOADDDESKCOMP,
688 REST_NODELDESKCOMP,
689 REST_NOCLOSEDESKCOMP,
690 REST_NOCLOSE_DRAGDROPBAND,
691 REST_NOMOVINGBAND,
692 REST_NOEDITDESKCOMP,
693 REST_NORESOLVESEARCH,
694 REST_NORESOLVETRACK,
695 REST_FORCECOPYACLWITHFILE,
696 REST_NOLOGO3CHANNELNOTIFY,
697 REST_NOFORGETSOFTWAREUPDATE,
698 REST_NOSETACTIVEDESKTOP,
699 REST_NOUPDATEWINDOWS,
700 REST_NOCHANGESTARMENU, /* 0x40000020 */
701 REST_NOFOLDEROPTIONS,
702 REST_HASFINDCOMPUTERS,
703 REST_INTELLIMENUS,
704 REST_RUNDLGMEMCHECKBOX,
705 REST_ARP_ShowPostSetup,
706 REST_NOCSC,
707 REST_NOCONTROLPANEL,
708 REST_ENUMWORKGROUP,
709 REST_ARP_NOARP,
710 REST_ARP_NOREMOVEPAGE,
711 REST_ARP_NOADDPAGE,
712 REST_ARP_NOWINSETUPPAGE,
713 REST_GREYMSIADS,
714 REST_NOCHANGEMAPPEDDRIVELABEL,
715 REST_NOCHANGEMAPPEDDRIVECOMMENT,
716 REST_MaxRecentDocs, /* 0x40000030 */
717 REST_NONETWORKCONNECTIONS,
718 REST_FORCESTARTMENULOGOFF,
719 REST_NOWEBVIEW,
720 REST_NOCUSTOMIZETHISFOLDER,
721 REST_NOENCRYPTION,
722
723 REST_ALLOWFRENCHENCRYPTION, /* not documented */
724
725 REST_DONTSHOWSUPERHIDDEN,
726 REST_NOSHELLSEARCHBUTTON,
727 REST_NOHARDWARETAB,
728 REST_NORUNASINSTALLPROMPT,
729 REST_PROMPTRUNASINSTALLNETPATH,
730 REST_NOMANAGEMYCOMPUTERVERB,
731 REST_NORECENTDOCSNETHOOD,
732 REST_DISALLOWRUN,
733 REST_NOWELCOMESCREEN,
734 REST_RESTRICTCPL, /* 0x40000040 */
735 REST_DISALLOWCPL,
736 REST_NOSMBALLOONTIP,
737 REST_NOSMHELP,
738 REST_NOWINKEYS,
739 REST_NOENCRYPTONMOVE,
740 REST_NOLOCALMACHINERUN,
741 REST_NOCURRENTUSERRUN,
742 REST_NOLOCALMACHINERUNONCE,
743 REST_NOCURRENTUSERRUNONCE,
744 REST_FORCEACTIVEDESKTOPON,
745 REST_NOCOMPUTERSNEARME,
746 REST_NOVIEWONDRIVE,
747 REST_NONETCRAWL,
748 REST_NOSHAREDDOCUMENTS,
749 REST_NOSMMYDOCS,
750 REST_NOSMMYPICS, /* 0x40000050 */
751 REST_ALLOWBITBUCKDRIVES,
752 REST_NONLEGACYSHELLMODE,
753 REST_NOCONTROLPANELBARRICADE,
754 REST_NOSTARTPAGE,
755 REST_NOAUTOTRAYNOTIFY,
756 REST_NOTASKGROUPING,
757 REST_NOCDBURNING,
758 REST_MYCOMPNOPROP,
759 REST_MYDOCSNOPROP,
760 REST_NOSTARTPANEL,
761 REST_NODISPLAYAPPEARANCEPAGE,
762 REST_NOTHEMESTAB,
763 REST_NOVISUALSTYLECHOICE,
764 REST_NOSIZECHOICE,
765 REST_NOCOLORCHOICE,
766 REST_SETVISUALSTYLE, /* 0x40000060 */
767 REST_STARTRUNNOHOMEPATH,
768 REST_NOUSERNAMEINSTARTPANEL,
769 REST_NOMYCOMPUTERICON,
770 REST_NOSMNETWORKPLACES,
771 REST_NOSMPINNEDLIST,
772 REST_NOSMMYMUSIC,
773 REST_NOSMEJECTPC,
774 REST_NOSMMOREPROGRAMS,
775 REST_NOSMMFUPROGRAMS,
776 REST_NOTRAYITEMSDISPLAY,
777 REST_NOTOOLBARSONTASKBAR,
778 /* 0x4000006C
779 0x4000006D
780 0x4000006E */
781 REST_NOSMCONFIGUREPROGRAMS = 0x4000006F,
782 REST_HIDECLOCK, /* 0x40000070 */
783 REST_NOLOWDISKSPACECHECKS,
784 REST_NOENTIRENETWORK,
785 REST_NODESKTOPCLEANUP,
786 REST_BITBUCKNUKEONDELETE,
787 REST_BITBUCKCONFIRMDELETE,
788 REST_BITBUCKNOPROP,
789 REST_NODISPBACKGROUND,
790 REST_NODISPSCREENSAVEPG,
791 REST_NODISPSETTINGSPG,
792 REST_NODISPSCREENSAVEPREVIEW,
793 REST_NODISPLAYCPL,
794 REST_HIDERUNASVERB,
795 REST_NOTHUMBNAILCACHE,
796 REST_NOSTRCMPLOGICAL,
797 REST_NOPUBLISHWIZARD,
798 REST_NOONLINEPRINTSWIZARD, /* 0x40000080 */
799 REST_NOWEBSERVICES,
800 REST_ALLOWUNHASHEDWEBVIEW,
801 REST_ALLOWLEGACYWEBVIEW,
802 REST_REVERTWEBVIEWSECURITY,
803
804 REST_INHERITCONSOLEHANDLES = 0x40000086,
805
806 REST_NODISCONNECT = 0x41000001,
807 REST_NOSECURITY,
808 REST_NOFILEASSOCIATE, /* 0x41000003 */
809 } RESTRICTIONS;
810
811 typedef enum {
812 SLDF_HAS_ID_LIST = 0x00000001,
813 SLDF_HAS_LINK_INFO = 0x00000002,
814 SLDF_HAS_NAME = 0x00000004,
815 SLDF_HAS_RELPATH = 0x00000008,
816 SLDF_HAS_WORKINGDIR = 0x00000010,
817 SLDF_HAS_ARGS = 0x00000020,
818 SLDF_HAS_ICONLOCATION = 0x00000040,
819 SLDF_UNICODE = 0x00000080,
820 SLDF_FORCE_NO_LINKINFO = 0x00000100,
821 SLDF_HAS_EXP_SZ = 0x00000200,
822 SLDF_RUN_IN_SEPERATE = 0x00000400,
823 SLDF_HAS_LOGO3ID = 0x00000800,
824 SLDF_HAS_DARWINID = 0x00001000,
825 SLDF_RUNAS_USER = 0x00002000,
826 SLDF_HAS_EXP_ICON_SZ = 0x00004000,
827 SLDF_NO_PIDL_ALIAS = 0x00008000,
828 SLDF_FORCE_UNCNAME = 0x00010000,
829 SLDF_RUN_WITH_SHIMLAYER = 0x00020000,
830 SLDF_RESERVED = 0x80000000,
831 } SHELL_LINK_DATA_FLAGS;
832
833 typedef struct tagDATABLOCKHEADER
834 {
835 DWORD cbSize;
836 DWORD dwSignature;
837 } DATABLOCK_HEADER, *LPDATABLOCK_HEADER, *LPDBLIST;
838
839 typedef struct {
840 DATABLOCK_HEADER dbh;
841 CHAR szDarwinID[MAX_PATH];
842 WCHAR szwDarwinID[MAX_PATH];
843 } EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK;
844
845 DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
846 typedef IEnumIDList *LPENUMIDLIST;
847
848 #ifdef COBJMACROS
849 #define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
850 #define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T)
851 #define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T)
852 #define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c)
853 #define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a)
854 #define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T)
855 #define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a)
856 #endif
857
858 #define INTERFACE IContextMenu
859 DECLARE_INTERFACE_(IContextMenu,IUnknown)
860 {
861 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
862 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
863 STDMETHOD_(ULONG,Release)(THIS) PURE;
864 STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
865 STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
866 STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
867 };
868 typedef IContextMenu *LPCONTEXTMENU;
869
870 #ifdef COBJMACROS
871 #define IContextMenu_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
872 #define IContextMenu_AddRef(T) (T)->lpVtbl->AddRef(T)
873 #define IContextMenu_Release(T) (T)->lpVtbl->Release(T)
874 #define IContextMenu_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
875 #define IContextMenu_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
876 #define IContextMenu_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
877 #endif
878
879 #define INTERFACE IContextMenu2
880 DECLARE_INTERFACE_(IContextMenu2,IContextMenu)
881 {
882 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
883 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
884 STDMETHOD_(ULONG,Release)(THIS) PURE;
885 STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
886 STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
887 STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
888 STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
889 };
890 #undef INTERFACE
891 typedef IContextMenu2 *LPCONTEXTMENU2;
892
893 #if (_WIN32_IE >= 0x0500)
894 #pragma pack(push,8)
895 typedef struct {
896 ULONG dwFlags;
897 ULONG dwReserved;
898 WCHAR wszFolder[MAX_PATH];
899 } SHCOLUMNINIT,*LPSHCOLUMNINIT;
900 typedef const SHCOLUMNINIT* LPCSHCOLUMNINIT;
901 typedef struct {
902 ULONG dwFlags;
903 DWORD dwFileAttributes;
904 ULONG dwReserved;
905 WCHAR *pwszExt;
906 WCHAR wszFile[MAX_PATH];
907 } SHCOLUMNDATA,*LPSHCOLUMNDATA;
908 typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA;
909 #pragma pack(pop)
910
911 #define MAX_COLUMN_NAME_LEN 80
912 #define MAX_COLUMN_DESC_LEN 128
913
914 #pragma pack(push,1)
915 typedef struct {
916 SHCOLUMNID scid;
917 VARTYPE vt;
918 DWORD fmt;
919 UINT cChars;
920 DWORD csFlags;
921 WCHAR wszTitle[MAX_COLUMN_NAME_LEN];
922 WCHAR wszDescription[MAX_COLUMN_DESC_LEN];
923 } SHCOLUMNINFO,*LPSHCOLUMNINFO;
924 typedef const SHCOLUMNINFO* LPCSHCOLUMNINFO;
925 #pragma pack(pop)
926
927 typedef enum {
928 SHCOLSTATE_TYPE_STR = 0x00000001,
929 SHCOLSTATE_TYPE_INT = 0x00000002,
930 SHCOLSTATE_TYPE_DATE = 0x00000003,
931 SHCOLSTATE_TYPEMASK = 0x0000000f,
932 SHCOLSTATE_ONBYDEFAULT = 0x00000010,
933 SHCOLSTATE_SLOW = 0x00000020,
934 SHCOLSTATE_EXTENDED = 0x00000040,
935 SHCOLSTATE_SECONDARYUI = 0x00000080,
936 SHCOLSTATE_HIDDEN = 0x00000100,
937 SHCOLSTATE_PREFER_VARCMP = 0x00000200
938 } SHCOLSTATE;
939
940 #ifdef COBJMACROS
941 #define IContextMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
942 #define IContextMenu2_AddRef(T) (T)->lpVtbl->AddRef(T)
943 #define IContextMenu2_Release(T) (T)->lpVtbl->Release(T)
944 #define IContextMenu2_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
945 #define IContextMenu2_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
946 #define IContextMenu2_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
947 #define IContextMenu2_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c)
948 #endif
949
950 #define INTERFACE IColumnProvider
951 DECLARE_INTERFACE_(IColumnProvider,IUnknown)
952 {
953 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
954 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
955 STDMETHOD_(ULONG,Release)(THIS) PURE;
956 STDMETHOD(Initialize)(THIS_ LPCSHCOLUMNINIT) PURE;
957 STDMETHOD(GetColumnInfo)(THIS_ DWORD,SHCOLUMNINFO*) PURE;
958 STDMETHOD(GetItemData)(THIS_ LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*) PURE;
959 };
960 #undef INTERFACE
961 #endif /* _WIN32_IE >= 0x0500 */
962
963 #define INTERFACE IQueryInfo
964 DECLARE_INTERFACE_(IQueryInfo,IUnknown)
965 {
966 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
967 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
968 STDMETHOD_(ULONG,Release)(THIS) PURE;
969 STDMETHOD(GetInfoTip)(THIS_ DWORD,WCHAR**) PURE;
970 STDMETHOD(GetInfoFlags)(THIS_ DWORD*) PURE;
971 };
972 #undef INTERFACE
973
974 #if !defined(__cplusplus) || defined(CINTERFACE)
975 /*** IUnknown methods ***/
976 #define IQueryInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
977 #define IQueryInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
978 #define IQueryInfo_Release(p) (p)->lpVtbl->Release(p)
979 /*** IQueryInfo methods ***/
980 #define IQueryInfo_GetInfoTip(p,a,b) (p)->lpVtbl->GetInfoTip(p,a,b)
981 #define IQueryInfo_GetInfoFlags(p,a) (p)->lpVtbl->GetInfoFlags(p,a)
982 #endif
983
984 #define INTERFACE IShellExtInit
985 DECLARE_INTERFACE_(IShellExtInit, IUnknown)
986 {
987 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
988 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
989 STDMETHOD_(ULONG,Release)(THIS) PURE;
990 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE;
991 };
992 #undef INTERFACE
993 typedef IShellExtInit *LPSHELLEXTINIT;
994
995 #define INTERFACE IShellPropSheetExt
996 DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
997 {
998 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
999 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1000 STDMETHOD_(ULONG,Release)(THIS) PURE;
1001 STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE;
1002 STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
1003 };
1004 #undef INTERFACE
1005 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
1006
1007 #define INTERFACE IExtractIconA
1008 DECLARE_INTERFACE_(IExtractIconA, IUnknown)
1009 {
1010 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1011 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1012 STDMETHOD_(ULONG,Release)(THIS) PURE;
1013 STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
1014 STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
1015 };
1016 #undef INTERFACE
1017 typedef IExtractIconA *LPEXTRACTICONA;
1018
1019 #ifdef COBJMACROS
1020 #define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1021 #define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T)
1022 #define IExtractIconA_Release(T) (T)->lpVtbl->Release(T)
1023 #define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
1024 #define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
1025 #endif
1026
1027 #define INTERFACE IExtractIconW
1028 DECLARE_INTERFACE_(IExtractIconW, IUnknown)
1029 {
1030 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1031 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1032 STDMETHOD_(ULONG,Release)(THIS) PURE;
1033 STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE;
1034 STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE;
1035 };
1036 #undef INTERFACE
1037 typedef IExtractIconW *LPEXTRACTICONW;
1038
1039 #ifdef COBJMACROS
1040 #define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1041 #define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T)
1042 #define IExtractIconW_Release(T) (T)->lpVtbl->Release(T)
1043 #define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
1044 #define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
1045 #endif
1046
1047 #ifdef UNICODE
1048 #define IExtractIcon IExtractIconW
1049 #define LPEXTRACTICON LPEXTRACTICONW
1050 #else
1051 #define IExtractIcon IExtractIconA
1052 #define LPEXTRACTICON LPEXTRACTICONA
1053 #endif
1054
1055 #define INTERFACE IShellLinkA
1056 DECLARE_INTERFACE_(IShellLinkA, IUnknown)
1057 {
1058 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1059 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1060 STDMETHOD_(ULONG,Release)(THIS) PURE;
1061 STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE;
1062 STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
1063 STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
1064 STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE;
1065 STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE;
1066 STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE;
1067 STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE;
1068 STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE;
1069 STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE;
1070 STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
1071 STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
1072 STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
1073 STDMETHOD(SetShowCmd)(THIS_ int) PURE;
1074 STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE;
1075 STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE;
1076 STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE;
1077 STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
1078 STDMETHOD(SetPath)(THIS_ LPCSTR) PURE;
1079 };
1080 #undef INTERFACE
1081
1082 #ifdef COBJMACROS
1083 #define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1084 #define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T)
1085 #define IShellLinkA_Release(T) (T)->lpVtbl->Release(T)
1086 #define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
1087 #define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
1088 #define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
1089 #define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
1090 #define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
1091 #define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
1092 #define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
1093 #define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
1094 #define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
1095 #define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
1096 #define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
1097 #define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
1098 #define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
1099 #define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
1100 #define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
1101 #define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
1102 #define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
1103 #define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
1104 #endif
1105
1106 #define INTERFACE IShellLinkW
1107 DECLARE_INTERFACE_(IShellLinkW, IUnknown)
1108 {
1109 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1110 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1111 STDMETHOD_(ULONG,Release)(THIS) PURE;
1112 STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE;
1113 STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
1114 STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
1115 STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE;
1116 STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE;
1117 STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE;
1118 STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE;
1119 STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE;
1120 STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE;
1121 STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
1122 STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
1123 STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
1124 STDMETHOD(SetShowCmd)(THIS_ int) PURE;
1125 STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE;
1126 STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE;
1127 STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE;
1128 STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
1129 STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE;
1130 };
1131 #undef INTERFACE
1132
1133 #ifdef COBJMACROS
1134 #define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1135 #define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T)
1136 #define IShellLinkW_Release(T) (T)->lpVtbl->Release(T)
1137 #define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
1138 #define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
1139 #define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
1140 #define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
1141 #define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
1142 #define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
1143 #define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
1144 #define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
1145 #define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
1146 #define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
1147 #define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
1148 #define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
1149 #define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
1150 #define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
1151 #define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
1152 #define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
1153 #define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
1154 #define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
1155 #endif
1156
1157 #define INTERFACE IShellLinkDataList
1158 DECLARE_INTERFACE_(IShellLinkDataList, IUnknown)
1159 {
1160 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1161 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1162 STDMETHOD_(ULONG,Release)(THIS) PURE;
1163 STDMETHOD(AddDataBlock)(THIS_ PVOID) PURE;
1164 STDMETHOD(CopyDataBlock)(THIS_ DWORD,PVOID*) PURE;
1165 STDMETHOD(RemoveDataBlock)(THIS_ DWORD) PURE;
1166 STDMETHOD(GetFlags)(THIS_ PDWORD) PURE;
1167 STDMETHOD(SetFlags)(THIS_ DWORD) PURE;
1168 };
1169 #undef INTERFACE
1170
1171 #ifdef COBJMACROS
1172 #define IShellLinkDataList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1173 #define IShellLinkDataList_AddRef(T) (T)->lpVtbl->AddRef(T)
1174 #define IShellLinkDataList_Release(T) (T)->lpVtbl->Release(T)
1175 #define IShellLinkDataList_AddDataBlock(T,a) (T)->lpVtbl->AddDataBlock(T,a)
1176 #define IShellLinkDataList_CopyDataBlock(T,a,b) (T)->lpVtbl->CopyDataBlock(T,a,b)
1177 #define IShellLinkDataList_RemoveDataBlock(T,a) (T)->lpVtbl->RemoveDataBlock(T,a)
1178 #define IShellLinkDataList_GetFlags(T,a) (T)->lpVtbl->GetFlags(T,a)
1179 #define IShellLinkDataList_SetFlags(T,a) (T)->lpVtbl->SetFlags(T,a)
1180 #endif
1181
1182 #define INTERFACE IShellFolder
1183 DECLARE_INTERFACE_(IShellFolder, IUnknown)
1184 {
1185 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1186 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1187 STDMETHOD_(ULONG,Release)(THIS) PURE;
1188 STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
1189 STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
1190 STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
1191 STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
1192 STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
1193 STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
1194 STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
1195 STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
1196 STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
1197 STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
1198 };
1199 #undef INTERFACE
1200 typedef IShellFolder *LPSHELLFOLDER;
1201
1202 #ifdef COBJMACROS
1203 #define IShellFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1204 #define IShellFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
1205 #define IShellFolder_Release(T) (T)->lpVtbl->Release(T)
1206 #define IShellFolder_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
1207 #define IShellFolder_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
1208 #define IShellFolder_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
1209 #define IShellFolder_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
1210 #define IShellFolder_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
1211 #define IShellFolder_CreateViewObject(T,a,b,c) (T)->lpVtbl->CreateViewObject(T,a,b,c)
1212 #define IShellFolder_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
1213 #define IShellFolder_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
1214 #define IShellFolder_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
1215 #define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
1216 #endif
1217
1218 #if (_WIN32_IE >= 0x0500)
1219
1220 DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH);
1221 typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
1222
1223 #define INTERFACE IShellFolder2
1224 DECLARE_INTERFACE_(IShellFolder2, IShellFolder)
1225 {
1226 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1227 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1228 STDMETHOD_(ULONG,Release)(THIS) PURE;
1229 STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
1230 STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
1231 STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
1232 STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
1233 STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
1234 STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
1235 STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
1236 STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
1237 STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
1238 STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
1239 STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE;
1240 STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE;
1241 STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE;
1242 STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE;
1243 STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE;
1244 STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE;
1245 STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE;
1246 };
1247 #undef INTERFACE
1248 typedef IShellFolder2 *LPSHELLFOLDER2;
1249
1250 #ifdef COBJMACROS
1251 #define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1252 #define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
1253 #define IShellFolder2_Release(T) (T)->lpVtbl->Release(T)
1254 #define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
1255 #define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
1256 #define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
1257 #define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
1258 #define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
1259 #define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b)
1260 #define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
1261 #define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
1262 #define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
1263 #define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
1264 #define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a)
1265 #define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a)
1266 #define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c)
1267 #define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b)
1268 #define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c)
1269 #define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c)
1270 #define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b)
1271 #endif
1272
1273 #endif /* _WIN32_IE >= 0x0500 */
1274 #define INTERFACE ICopyHook
1275 DECLARE_INTERFACE_(ICopyHook, IUnknown)
1276 {
1277 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1278 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1279 STDMETHOD_(ULONG,Release)(THIS) PURE;
1280 STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE;
1281 };
1282 #undef INTERFACE
1283 typedef ICopyHook *LPCOPYHOOK;
1284
1285 #define INTERFACE IFileViewerSite
1286 DECLARE_INTERFACE(IFileViewerSite)
1287 {
1288 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1289 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1290 STDMETHOD_(ULONG,Release)(THIS) PURE;
1291 STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE;
1292 STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE;
1293 };
1294 #undef INTERFACE
1295 typedef IFileViewerSite *LPFILEVIEWERSITE;
1296
1297 #define INTERFACE IFileViewer
1298 DECLARE_INTERFACE(IFileViewer)
1299 {
1300 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1301 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1302 STDMETHOD_(ULONG,Release)(THIS) PURE;
1303 STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE;
1304 STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE;
1305 STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE;
1306 };
1307 #undef INTERFACE
1308 typedef IFileViewer *LPFILEVIEWER;
1309
1310 #define INTERFACE IFileSystemBindData
1311 DECLARE_INTERFACE_(IFileSystemBindData, IUnknown)
1312 {
1313 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1314 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1315 STDMETHOD_(ULONG,Release)(THIS) PURE;
1316 STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE;
1317 STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE;
1318 };
1319 #undef INTERFACE
1320
1321 #define INTERFACE IPersistFolder
1322 DECLARE_INTERFACE_(IPersistFolder,IPersist)
1323 {
1324 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1325 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1326 STDMETHOD_(ULONG,Release)(THIS) PURE;
1327 STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
1328 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
1329 };
1330 #undef INTERFACE
1331 typedef IPersistFolder *LPPERSISTFOLDER;
1332
1333 #ifdef COBJMACROS
1334 #define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1335 #define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
1336 #define IPersistFolder_Release(T) (T)->lpVtbl->Release(T)
1337 #define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
1338 #define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
1339 #endif
1340
1341 #if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500)
1342
1343 #define INTERFACE IPersistFolder2
1344 DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder)
1345 {
1346 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1347 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1348 STDMETHOD_(ULONG,Release)(THIS) PURE;
1349 STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
1350 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
1351 STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
1352 };
1353 #undef INTERFACE
1354 typedef IPersistFolder2 *LPPERSISTFOLDER2;
1355
1356 #ifdef COBJMACROS
1357 #define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1358 #define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
1359 #define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T)
1360 #define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
1361 #define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
1362 #define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
1363 #endif
1364
1365 #endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */
1366
1367 #if (_WIN32_IE >= 0x0500)
1368
1369 #define INTERFACE IPersistFolder3
1370 DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2)
1371 {
1372 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1373 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1374 STDMETHOD_(ULONG,Release)(THIS) PURE;
1375 STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
1376 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
1377 STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
1378 STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE;
1379 STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE;
1380 };
1381 #undef INTERFACE
1382 typedef IPersistFolder3 *LPPERSISTFOLDER3;
1383
1384 #ifdef COBJMACROS
1385 #define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1386 #define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T)
1387 #define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T)
1388 #define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
1389 #define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
1390 #define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
1391 #define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c)
1392 #define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a)
1393 #endif
1394
1395 #endif /* _WIN32_IE >= 0x0500 */
1396
1397 typedef interface IShellBrowser *LPSHELLBROWSER;
1398 typedef interface IShellView *LPSHELLVIEW;
1399
1400 #define INTERFACE IShellBrowser
1401 DECLARE_INTERFACE_(IShellBrowser,IOleWindow)
1402 {
1403 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1404 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1405 STDMETHOD_(ULONG,Release)(THIS) PURE;
1406 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
1407 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
1408 STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
1409 STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE;
1410 STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE;
1411 STDMETHOD(SetStatusTextSB)(THIS_ LPCOLESTR) PURE;
1412 STDMETHOD(EnableModelessSB)(THIS_ BOOL) PURE;
1413 STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE;
1414 STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE;
1415 STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE;
1416 STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE;
1417 STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE;
1418 STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE;
1419 STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE;
1420 STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE;
1421 };
1422 #undef INTERFACE
1423
1424 #ifdef COBJMACROS
1425 #define IShellBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1426 #define IShellBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
1427 #define IShellBrowser_Release(T) (T)->lpVtbl->Release(T)
1428 #define IShellBrowser_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
1429 #define IShellBrowser_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
1430 #define IShellBrowser_InsertMenusSB(T,a,b) (T)->lpVtbl->InsertMenusSB(T,a,b)
1431 #define IShellBrowser_SetMenuSB(T,a,b,c) (T)->lpVtbl->SetMenuSB(T,a,b,c)
1432 #define IShellBrowser_RemoveMenusSB(T,a) (T)->lpVtbl->RemoveMenusSB(T,a)
1433 #define IShellBrowser_SetStatusTextSB(T,a) (T)->lpVtbl->SetStatusTextSB(T,a)
1434 #define IShellBrowser_EnableModelessSB(T,a) (T)->lpVtbl->EnableModelessSB(T,a)
1435 #define IShellBrowser_TranslateAcceleratorSB(T,a,b) (T)->lpVtbl->TranslateAcceleratorSB(T,a,b)
1436 #define IShellBrowser_BrowseObject(T,a,b) (T)->lpVtbl->BrowseObject(T,a,b)
1437 #define IShellBrowser_GetViewStateStream(T,a,b) (T)->lpVtbl->GetViewStateStream(T,a,b)
1438 #define IShellBrowser_GetControlWindow(T,a,b) (T)->lpVtbl->GetControlWindow(T,a,b)
1439 #define IShellBrowser_SendControlMsg(T,a,b,c,d,e) (T)->lpVtbl->SendControlMsg(T,a,b,c,d,e)
1440 #define IShellBrowser_QueryActiveShellView(T,a) (T)->lpVtbl->QueryActiveShellView(T,a)
1441 #define IShellBrowser_OnViewWindowActive(T,a) (T)->lpVtbl->OnViewWindowActive(T,a)
1442 #define IShellBrowser_SetToolbarItems(T,a,b,c) (T)->lpVtbl->SetToolbarItems(T,a,b,c)
1443 #endif
1444
1445 #define INTERFACE IShellView
1446 DECLARE_INTERFACE_(IShellView,IOleWindow)
1447 {
1448 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1449 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1450 STDMETHOD_(ULONG,Release)(THIS) PURE;
1451 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
1452 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
1453 STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
1454 #ifdef _FIX_ENABLEMODELESS_CONFLICT
1455 STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
1456 #else
1457 STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
1458 #endif
1459 STDMETHOD(UIActivate)(THIS_ UINT) PURE;
1460 STDMETHOD(Refresh) (THIS) PURE;
1461 STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
1462 STDMETHOD(DestroyViewWindow)(THIS) PURE;
1463 STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
1464 STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
1465 STDMETHOD(SaveViewState)(THIS) PURE;
1466 STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
1467 STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
1468 };
1469 #undef INTERFACE
1470
1471 #ifdef COBJMACROS
1472 #define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1473 #define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T)
1474 #define IShellView_Release(T) (T)->lpVtbl->Release(T)
1475 #define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
1476 #define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
1477 #define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a)
1478 #ifdef _FIX_ENABLEMODELESS_CONFLICT
1479 #define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a)
1480 #else
1481 #define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a)
1482 #endif
1483 #define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a)
1484 #define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T)
1485 #define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e)
1486 #define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T)
1487 #define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a)
1488 #define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c)
1489 #define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T)
1490 #define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b)
1491 #define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c)
1492 #endif
1493
1494 #define INTERFACE ICommDlgBrowser
1495 DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
1496 {
1497 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1498 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1499 STDMETHOD_(ULONG,Release)(THIS) PURE;
1500 STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE;
1501 STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE;
1502 STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE;
1503 };
1504 #undef INTERFACE
1505 typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
1506
1507 #ifdef COBJMACROS
1508 #define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1509 #define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
1510 #define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T)
1511 #define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a)
1512 #define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b)
1513 #define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b)
1514 #endif
1515
1516 typedef GUID SHELLVIEWID;
1517 typedef struct _SV2CVW2_PARAMS {
1518 DWORD cbSize;
1519 IShellView *psvPrev;
1520 FOLDERSETTINGS const *pfs;
1521 IShellBrowser *psbOwner;
1522 RECT *prcView;
1523 SHELLVIEWID const *pvid;
1524 HWND hwndView;
1525 } SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS;
1526 #define INTERFACE IShellView2
1527 DECLARE_INTERFACE_(IShellView2,IShellView)
1528 {
1529
1530 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1531 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1532 STDMETHOD_(ULONG,Release)(THIS) PURE;
1533 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
1534 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
1535 STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
1536 #ifdef _FIX_ENABLEMODELESS_CONFLICT
1537 STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
1538 #else
1539 STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
1540 #endif
1541 STDMETHOD(UIActivate)(THIS_ UINT) PURE;
1542 STDMETHOD(Refresh) (THIS) PURE;
1543 STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
1544 STDMETHOD(DestroyViewWindow)(THIS) PURE;
1545 STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
1546 STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
1547 STDMETHOD(SaveViewState)(THIS) PURE;
1548 STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
1549 STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
1550 STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
1551 STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
1552 };
1553 #undef INTERFACE
1554
1555 #define INTERFACE IShellExecuteHookA
1556 DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)
1557 {
1558 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1559 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1560 STDMETHOD_(ULONG,Release)(THIS) PURE;
1561 STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE;
1562 };
1563 #undef INTERFACE
1564
1565 #define INTERFACE IShellExecuteHookW
1566 DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)
1567 {
1568 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1569 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1570 STDMETHOD_(ULONG,Release)(THIS) PURE;
1571 STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE;
1572 };
1573 #undef INTERFACE
1574
1575 #define INTERFACE IShellIcon
1576 DECLARE_INTERFACE_(IShellIcon,IUnknown)
1577 {
1578 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1579 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1580 STDMETHOD_(ULONG,Release)(THIS) PURE;
1581 STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE;
1582 };
1583 #undef INTERFACE
1584 typedef IShellIcon *LPSHELLICON;
1585
1586 typedef struct {
1587 BOOL fShowAllObjects : 1;
1588 BOOL fShowExtensions : 1;
1589 BOOL fNoConfirmRecycle : 1;
1590 BOOL fShowSysFiles : 1;
1591 BOOL fShowCompColor : 1;
1592 BOOL fDoubleClickInWebView : 1;
1593 BOOL fDesktopHTML : 1;
1594 BOOL fWin95Classic : 1;
1595 BOOL fDontPrettyPath : 1;
1596 BOOL fShowAttribCol : 1;
1597 BOOL fMapNetDrvBtn : 1;
1598 BOOL fShowInfoTip : 1;
1599 BOOL fHideIcons : 1;
1600 UINT fRestFlags : 3;
1601 } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
1602
1603 #define SSF_SHOWALLOBJECTS 0x1
1604 #define SSF_SHOWEXTENSIONS 0x2
1605 #define SSF_SHOWCOMPCOLOR 0x8
1606 #define SSF_SHOWSYSFILES 0x20
1607 #define SSF_DOUBLECLICKINWEBVIEW 0x80
1608 #define SSF_SHOWATTRIBCOL 0x100
1609 #define SSF_DESKTOPHTML 0x200
1610 #define SSF_WIN95CLASSIC 0x400
1611 #define SSF_DONTPRETTYPATH 0x800
1612 #define SSF_MAPNETDRVBUTTON 0x1000
1613 #define SSF_SHOWINFOTIP 0x2000
1614 #define SSF_HIDEICONS 0x4000
1615 #define SSF_NOCONFIRMRECYCLE 0x8000
1616
1617 #undef INTERFACE
1618 #define INTERFACE IShellIconOverlayIdentifier
1619 DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown)
1620 {
1621 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1622 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1623 STDMETHOD_(ULONG,Release)(THIS) PURE;
1624 STDMETHOD(IsMemberOf)(THIS_ LPCWSTR,DWORD) PURE;
1625 STDMETHOD(GetOverlayInfo)(THIS_ LPWSTR,int,int*,DWORD*) PURE;
1626 STDMETHOD(GetPriority)(THIS_ int*) PURE;
1627 };
1628
1629 #define ISIOI_ICONFILE 0x00000001
1630 #define ISIOI_ICONINDEX 0x00000002
1631
1632 #if (_WIN32_WINNT >= 0x0500) /* W2K */
1633 typedef struct {
1634 BOOL fShowAllObjects : 1;
1635 BOOL fShowExtensions : 1;
1636 BOOL fNoConfirmRecycle : 1;
1637 BOOL fShowSysFiles : 1;
1638 BOOL fShowCompColor : 1;
1639 BOOL fDoubleClickInWebView : 1;
1640 BOOL fDesktopHTML : 1;
1641 BOOL fWin95Classic : 1;
1642 BOOL fDontPrettyPath : 1;
1643 BOOL fShowAttribCol : 1;
1644 BOOL fMapNetDrvBtn : 1;
1645 BOOL fShowInfoTip : 1;
1646 BOOL fHideIcons : 1;
1647 BOOL fWebView : 1;
1648 BOOL fFilter : 1;
1649 BOOL fShowSuperHidden : 1;
1650 BOOL fNoNetCrawling : 1;
1651 DWORD dwWin95Unused;
1652 UINT uWin95Unused;
1653 LONG lParamSort;
1654 int iSortDirection;
1655 UINT version;
1656 UINT uNotUsed;
1657 BOOL fSepProcess : 1;
1658 BOOL fStartPanelOn : 1;
1659 BOOL fShowStartPage : 1;
1660 UINT fSpareFlags : 13;
1661 } SHELLSTATE, *LPSHELLSTATE;
1662 #endif /* _WIN32_WINNT >= 0x0500 */
1663
1664 #if (_WIN32_IE >= 0x0500)
1665 #pragma pack(push,8)
1666 typedef struct
1667 {
1668 SIZE sizeDragImage;
1669 POINT ptOffset;
1670 HBITMAP hbmpDragImage;
1671 COLORREF crColorKey;
1672 } SHDRAGIMAGE, *LPSHDRAGIMAGE;
1673 #pragma pack(pop)
1674
1675 #define INTERFACE IDragSourceHelper
1676 DECLARE_INTERFACE_(IDragSourceHelper, IUnknown)
1677 {
1678 STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
1679 STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1680 STDMETHOD_(ULONG, Release) (THIS) PURE;
1681 STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE;
1682 STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE;
1683 };
1684 #undef INTERFACE
1685
1686 #define INTERFACE IDropTargetHelper
1687 DECLARE_INTERFACE_(IDropTargetHelper, IUnknown)
1688 {
1689 STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE;
1690 STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1691 STDMETHOD_(ULONG, Release) (THIS) PURE;
1692 STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
1693 STDMETHOD (DragLeave)(THIS) PURE;
1694 STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE;
1695 STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
1696 STDMETHOD (Show)(THIS_ BOOL fShow) PURE;
1697 };
1698 #undef INTERFACE
1699 #endif /* _WIN32_IE >= 0x0500 */
1700
1701 #define INTERFACE IInputObject
1702 DECLARE_INTERFACE_(IInputObject,IUnknown)
1703 {
1704 /*** IUnknown methods ***/
1705 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1706 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1707 STDMETHOD_(ULONG,Release)(THIS) PURE;
1708 /*** IInputObject methods ***/
1709 STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE;
1710 STDMETHOD(HasFocusIO)(THIS) PURE;
1711 STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE;
1712 };
1713 #undef INTERFACE
1714
1715 #if defined(COBJMACROS)
1716 /*** IUnknown methods ***/
1717 #define IInputObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1718 #define IInputObject_AddRef(p) (p)->lpVtbl->AddRef(p)
1719 #define IInputObject_Release(p) (p)->lpVtbl->Release(p)
1720 /*** IInputObject methods ***/
1721 #define IInputObject_UIActivateIO(p,a,b) (p)->lpVtbl->UIActivateIO(p,a,b)
1722 #define IInputObject_HasFocusIO(p) (p)->lpVtbl->HasFocusIO(p)
1723 #define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a)
1724 #endif
1725
1726 #define INTERFACE IInputObjectSite
1727 DECLARE_INTERFACE_(IInputObjectSite,IUnknown)
1728 {
1729 /*** IUnknown methods ***/
1730 STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
1731 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
1732 STDMETHOD_(ULONG,Release) (THIS) PURE;
1733 /*** IInputObjectSite methods ***/
1734 STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE;
1735 };
1736 #undef INTERFACE
1737
1738 #if defined(COBJMACROS)
1739 /*** IUnknown methods ***/
1740 #define IInputObjectSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1741 #define IInputObjectSite_AddRef(p) (p)->lpVtbl->AddRef(p)
1742 #define IInputObjectSite_Release(p) (p)->lpVtbl->Release(p)
1743 /*** IInputObject methods ***/
1744 #define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b)
1745 #endif
1746
1747 typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)(
1748 IShellView* dwUser,
1749 IShellFolder* pshf,
1750 HWND hWnd,
1751 UINT uMsg,
1752 WPARAM wParam,
1753 LPARAM lParam);
1754 typedef struct _CSFV
1755 {
1756 UINT uSize;
1757 IShellFolder* pshf;
1758 IShellView* psvOuter;
1759 LPCITEMIDLIST pidlFolder;
1760 LONG lEvents;
1761 LPFNVIEWCALLBACK pfnCallback;
1762 FOLDERVIEWMODE fvm;
1763 } CSFV, *LPCSFV;
1764
1765 void WINAPI SHAddToRecentDocs(UINT,PCVOID);
1766 LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA);
1767 LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW);
1768 DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*);
1769 DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*);
1770 HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv);
1771 void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
1772 HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
1773 HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
1774 HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*);
1775 HRESULT WINAPI SHGetInstanceExplorer(IUnknown **);
1776 HRESULT WINAPI SHGetMalloc(LPMALLOC*);
1777 BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
1778 BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
1779 HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
1780 HRESULT WINAPI SHLoadInProc(REFCLSID);
1781 #if (_WIN32_IE >= 0x0400)
1782 BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL);
1783 BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL);
1784 #endif
1785 /* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */
1786 HRESULT WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR);
1787 HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR);
1788 #if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */
1789 HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*);
1790 #endif
1791 #if (_WIN32_WINNT >= 0x0500)
1792 INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES);
1793 INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES);
1794 HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*);
1795 #endif
1796 #if (_WIN32_WINNT >= 0x0501) /* XP */
1797 HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
1798 HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
1799 #endif
1800 void WINAPI SHGetSettings(LPSHELLFLAGSTATE,DWORD);
1801 #if (_WIN32_WINNT >= 0x0500) /* W2K */
1802 void WINAPI SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL);
1803 #endif
1804
1805 #if (_WIN32_WINNT >= 0x0500) /* W2K */
1806 BOOL WINAPI ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST);
1807 BOOL WINAPI ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL);
1808 BOOL WINAPI ILRemoveLastID(LPITEMIDLIST);
1809 HRESULT WINAPI ILLoadFromStream(IStream*, LPITEMIDLIST*);
1810 HRESULT WINAPI ILSaveToStream(IStream*, LPCITEMIDLIST);
1811 LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL);
1812 LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
1813 LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
1814 LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST, LPCITEMIDLIST);
1815 LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR);
1816 LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR);
1817 #ifdef UNICODE
1818 #define ILCreateFromPath ILCreateFromPathW
1819 #else
1820 #define ILCreateFromPath ILCreateFromPathA
1821 #endif
1822 LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST);
1823 LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
1824 LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
1825 UINT WINAPI ILGetSize(LPCITEMIDLIST);
1826 void WINAPI ILFree(LPITEMIDLIST);
1827
1828 HRESULT WINAPI SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**);
1829 BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR);
1830 #endif
1831
1832 int WINAPI RestartDialog(HWND,LPCWSTR,DWORD);
1833 int WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD);
1834
1835 ULONG WINAPI SHChangeNotifyRegister(HWND,int,LONG,UINT,int,SHChangeNotifyEntry *);
1836 BOOL WINAPI SHChangeNotifyDeregister(ULONG);
1837
1838 #ifdef UNICODE
1839 typedef IShellExecuteHookW IShellExecuteHook;
1840 typedef IShellLinkW IShellLink;
1841 typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
1842 #define SHBrowseForFolder SHBrowseForFolderW
1843 #define SHCLSIDFromString SHCLSIDFromStringW
1844 #define SHGetDataFromIDList SHGetDataFromIDListW
1845 #define SHGetPathFromIDList SHGetPathFromIDListW
1846 #if (_WIN32_IE >= 0x0400)
1847 #define SHGetSpecialFolderPath SHGetSpecialFolderPathW
1848 #endif
1849 #define SHGetFolderPath SHGetFolderPathW
1850 #if (_WIN32_WINNT >= 0x0500)
1851 #define SHCreateDirectoryEx SHCreateDirectoryExW
1852 #endif
1853 #if (_WIN32_WINNT >= 0x0501)
1854 #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW
1855 #endif
1856
1857 #else
1858 typedef IShellExecuteHookA IShellExecuteHook;
1859 typedef IShellLinkA IShellLink;
1860 typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
1861 #define SHBrowseForFolder SHBrowseForFolderA
1862 #define SHCLSIDFromString SHCLSIDFromStringA
1863 #define SHGetDataFromIDList SHGetDataFromIDListA
1864 #define SHGetPathFromIDList SHGetPathFromIDListA
1865 #if (_WIN32_IE >= 0x0400)
1866 #define SHGetSpecialFolderPath SHGetSpecialFolderPathA
1867 #endif
1868 #define SHGetFolderPath SHGetFolderPathA
1869 #if (_WIN32_WINNT >= 0x0500)
1870 #define SHCreateDirectoryEx SHCreateDirectoryExA
1871 #endif
1872 #if (_WIN32_WINNT >= 0x0501)
1873 #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA
1874 #endif
1875 #endif /* UNICODE */
1876
1877 #pragma pack(pop)
1878 #ifdef __cplusplus
1879 }
1880 #endif
1881
1882
1883 #endif /* _SHLOBJ_H */