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