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