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