1 /**
2 * @file shlobj.h
3 * Copyright 2012, 2013 MinGW.org project
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
14 * Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24 #ifndef _SHLOBJ_H
25 #define _SHLOBJ_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 #include <ole2.h>
34 #include <shlguid.h>
35 #include <shellapi.h>
36 #pragma pack(push,1)
37 #include <commctrl.h>
38
39 #define BIF_RETURNONLYFSDIRS 1
40 #define BIF_DONTGOBELOWDOMAIN 2
41 #define BIF_STATUSTEXT 4
42 #define BIF_RETURNFSANCESTORS 8
43 #define BIF_EDITBOX 16
44 #define BIF_VALIDATE 32
45 #define BIF_NEWDIALOGSTYLE 64
46 #define BIF_BROWSEINCLUDEURLS 128
47 #define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE )
48 #define BIF_BROWSEFORCOMPUTER 0x1000
49 #define BIF_BROWSEFORPRINTER 0x2000
50 #define BIF_BROWSEINCLUDEFILES 0x4000
51 #define BIF_SHAREABLE 0x8000
52 #define BFFM_INITIALIZED 1
53 #define BFFM_SELCHANGED 2
54 #define BFFM_VALIDATEFAILEDA 3
55 #define BFFM_VALIDATEFAILEDW 4
56 #define BFFM_SETSTATUSTEXTA (WM_USER + 100)
57 #define BFFM_SETSTATUSTEXTW (WM_USER + 104)
58 #define BFFM_ENABLEOK (WM_USER + 101)
59 #define BFFM_SETSELECTIONA (WM_USER + 102)
60 #define BFFM_SETSELECTIONW (WM_USER + 103)
61 #define BFFM_SETOKTEXT (WM_USER + 105)
62 #define BFFM_SETEXPANDED (WM_USER + 106)
63 #define BFFM_SETSTATUSTEXT __AW(BFFM_SETSTATUSTEXT)
64 #define BFFM_SETSELECTION __AW(BFFM_SETSELECTION)
65 #define BFFM_VALIDATEFAILED __AW(BFFM_VALIDATEFAILED)
66 #define DVASPECT_SHORTNAME 2
67 typedef enum tagSHARD {
68 SHARD_PIDL = 0x00000001,
69 SHARD_PATHA = 0x00000002,
70 SHARD_PATHW = 0x00000003,
71 SHARD_APPIDINFO = 0x00000004,
72 SHARD_APPIDINFOIDLIST = 0x00000005,
73 SHARD_LINK = 0x00000006,
74 SHARD_APPIDINFOLINK = 0x00000007,
75 SHARD_SHELLITEM = 0x00000008
76 } SHARD;
77 #define SHARD_PATH __AW(SHARD_PATH)
78 #define SHCNE_RENAMEITEM 1
79 #define SHCNE_CREATE 2
80 #define SHCNE_DELETE 4
81 #define SHCNE_MKDIR 8
82 #define SHCNE_RMDIR 16
83 #define SHCNE_MEDIAINSERTED 32
84 #define SHCNE_MEDIAREMOVED 64
85 #define SHCNE_DRIVEREMOVED 128
86 #define SHCNE_DRIVEADD 256
87 #define SHCNE_NETSHARE 512
88 #define SHCNE_NETUNSHARE 1024
89 #define SHCNE_ATTRIBUTES 2048
90 #define SHCNE_UPDATEDIR 4096
91 #define SHCNE_UPDATEITEM 8192
92 #define SHCNE_SERVERDISCONNECT 16384
93 #define SHCNE_UPDATEIMAGE 32768
94 #define SHCNE_DRIVEADDGUI 65536
95 #define SHCNE_RENAMEFOLDER 0x20000
96 #define SHCNE_FREESPACE 0x40000
97 #define SHCNE_ASSOCCHANGED 0x8000000
98 #define SHCNE_DISKEVENTS 0x2381F
99 #define SHCNE_GLOBALEVENTS 0xC0581E0
100 #define SHCNE_ALLEVENTS 0x7FFFFFFF
101 #define SHCNE_INTERRUPT 0x80000000
102 #define SHCNF_IDLIST 0
103 #define SHCNF_PATHA 1
104 #define SHCNF_PRINTERA 2
105 #define SHCNF_DWORD 3
106 #define SHCNF_PATHW 5
107 #define SHCNF_PRINTERW 6
108 #define SHCNF_TYPE 0xFF
109 #define SHCNF_FLUSH 0x1000
110 #define SHCNF_FLUSHNOWAIT 0x2000
111 #define SHCNF_PATH __AW(SHCNF_PATH)
112 #define SHCNF_PRINTER __AW(SHCNF_PRINTER)
113 #define SFGAO_CANCOPY DROPEFFECT_COPY
114 #define SFGAO_CANMOVE DROPEFFECT_MOVE
115 #define SFGAO_CANLINK DROPEFFECT_LINK
116 #define SFGAO_CANRENAME 0x00000010L
117 #define SFGAO_CANDELETE 0x00000020L
118 #define SFGAO_HASPROPSHEET 0x00000040L
119 #define SFGAO_DROPTARGET 0x00000100L
120 #define SFGAO_CAPABILITYMASK 0x00000177L
121 #define SFGAO_ISSLOW 0x00004000L
122 #define SFGAO_GHOSTED 0x00008000L
123 #define SFGAO_LINK 0x00010000L
124 #define SFGAO_SHARE 0x00020000L
125 #define SFGAO_READONLY 0x00040000L
126 #define SFGAO_HIDDEN 0x00080000L
127 #define SFGAO_DISPLAYATTRMASK (SFGAO_ISSLOW \
128 | SFGAO_GHOSTED \
129 | SFGAO_LINK \
130 | SFGAO_SHARE \
131 | SFGAO_READONLY \
132 | SFGAO_HIDDEN)
133 #define SFGAO_FILESYSANCESTOR 0x10000000L
134 #define SFGAO_FOLDER 0x20000000L
135 #define SFGAO_FILESYSTEM 0x40000000L
136 #define SFGAO_HASSUBFOLDER 0x80000000L
137 #define SFGAO_CONTENTSMASK 0x80000000L
138 #define SFGAO_VALIDATE 0x01000000L
139 #define SFGAO_REMOVABLE 0x02000000L
140 #define SFGAO_COMPRESSED 0x04000000L
141 #define STRRET_WSTR 0
142 #define STRRET_OFFSET 1
143 #define STRRET_CSTR 2
144 #define SHGDFIL_FINDDATA 1
145 #define SHGDFIL_NETRESOURCE 2
146 #define SHGDFIL_DESCRIPTIONID 3
147 #define SHDID_ROOT_REGITEM 1
148 #define SHDID_FS_FILE 2
149 #define SHDID_FS_DIRECTORY 3
150 #define SHDID_FS_OTHER 4
151 #define SHDID_COMPUTER_DRIVE35 5
152 #define SHDID_COMPUTER_DRIVE525 6
153 #define SHDID_COMPUTER_REMOVABLE 7
154 #define SHDID_COMPUTER_FIXED 8
155 #define SHDID_COMPUTER_NETDRIVE 9
156 #define SHDID_COMPUTER_CDROM 10
157 #define SHDID_COMPUTER_RAMDISK 11
158 #define SHDID_COMPUTER_OTHER 12
159 #define SHDID_NET_DOMAIN 13
160 #define SHDID_NET_SERVER 14
161 #define SHDID_NET_SHARE 15
162 #define SHDID_NET_RESTOFNET 16
163 #define SHDID_NET_OTHER 17
164
165 #ifndef REGSTR_PATH_EXPLORER
166 #define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
167 #endif
168
169 #define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
170 #define CSIDL_DESKTOP 0
171 #define CSIDL_INTERNET 1
172 #define CSIDL_PROGRAMS 2
173 #define CSIDL_CONTROLS 3
174 #define CSIDL_PRINTERS 4
175 #define CSIDL_PERSONAL 5
176 #define CSIDL_FAVORITES 6
177 #define CSIDL_STARTUP 7
178 #define CSIDL_RECENT 8
179 #define CSIDL_SENDTO 9
180 #define CSIDL_BITBUCKET 10
181 #define CSIDL_STARTMENU 11
182 #define CSIDL_MYMUSIC 13
183 #define CSIDL_MYVIDEO 14
184 #define CSIDL_DESKTOPDIRECTORY 16
185 #define CSIDL_DRIVES 17
186 #define CSIDL_NETWORK 18
187 #define CSIDL_NETHOOD 19
188 #define CSIDL_FONTS 20
189 #define CSIDL_TEMPLATES 21
190 #define CSIDL_COMMON_STARTMENU 22
191 #define CSIDL_COMMON_PROGRAMS 23
192 #define CSIDL_COMMON_STARTUP 24
193 #define CSIDL_COMMON_DESKTOPDIRECTORY 25
194 #define CSIDL_APPDATA 26
195 #define CSIDL_PRINTHOOD 27
196 #define CSIDL_LOCAL_APPDATA 28
197 #define CSIDL_ALTSTARTUP 29
198 #define CSIDL_COMMON_ALTSTARTUP 30
199 #define CSIDL_COMMON_FAVORITES 31
200 #define CSIDL_INTERNET_CACHE 32
201 #define CSIDL_COOKIES 33
202 #define CSIDL_HISTORY 34
203 #define CSIDL_COMMON_APPDATA 35
204 #define CSIDL_WINDOWS 36
205 #define CSIDL_SYSTEM 37
206 #define CSIDL_PROGRAM_FILES 38
207 #define CSIDL_MYPICTURES 39
208 #define CSIDL_PROFILE 40
209 #define CSIDL_SYSTEMX86 41
210 #define CSIDL_PROGRAM_FILESX86 42
211 #define CSIDL_PROGRAM_FILES_COMMON 43
212 #define CSIDL_PROGRAM_FILES_COMMONX86 44
213 #define CSIDL_COMMON_TEMPLATES 45
214 #define CSIDL_COMMON_DOCUMENTS 46
215 #define CSIDL_COMMON_ADMINTOOLS 47
216 #define CSIDL_ADMINTOOLS 48
217 #define CSIDL_CONNECTIONS 49
218 #define CSIDL_COMMON_MUSIC 53
219 #define CSIDL_COMMON_PICTURES 54
220 #define CSIDL_COMMON_VIDEO 55
221 #define CSIDL_RESOURCES 56
222 #define CSIDL_RESOURCES_LOCALIZED 57
223 #define CSIDL_COMMON_OEM_LINKS 58
224 #define CSIDL_CDBURN_AREA 59
225 #define CSIDL_COMPUTERSNEARME 61
226 #define CSIDL_FLAG_DONT_VERIFY 0x4000
227 #define CSIDL_FLAG_CREATE 0x8000
228 #define CSIDL_FLAG_MASK 0xFF00
229 #define CFSTR_SHELLIDLIST TEXT("Shell IDList Array")
230 #define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets")
231 #define CFSTR_NETRESOURCES TEXT("Net Resource")
232 #define CFSTR_FILECONTENTS TEXT("FileContents")
233 #define CFSTR_FILENAMEA TEXT("FileName")
234 #define CFSTR_FILENAMEMAPA TEXT("FileNameMap")
235 #define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor")
236 #define CFSTR_INETURLA TEXT("UniformResourceLocator")
237 #define CFSTR_SHELLURL CFSTR_INETURLA
238 #define CFSTR_FILENAMEW TEXT("FileNameW")
239 #define CFSTR_FILENAMEMAPW TEXT("FileNameMapW")
240 #define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW")
241 #define CFSTR_INETURLW TEXT("UniformResourceLocatorW")
242 #define CFSTR_FILENAME __AW(CFSTR_FILENAME)
243 #define CFSTR_FILENAMEMAP __AW(CFSTR_FILENAMEMAP)
244 #define CFSTR_FILEDESCRIPTOR __AW(CFSTR_FILEDESCRIPTOR)
245 #define CFSTR_INETURL __AW(CFSTR_INETURL)
246 #define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName")
247 #define CFSTR_INDRAGLOOP TEXT("InShellDragLoop")
248 #define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded")
249 #define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect")
250 #define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect")
251 #define CMF_NORMAL 0
252 #define CMF_DEFAULTONLY 1
253 #define CMF_VERBSONLY 2
254 #define CMF_EXPLORE 4
255 #define CMF_NOVERBS 8
256 #define CMF_CANRENAME 16
257 #define CMF_NODEFAULT 32
258 #define CMF_INCLUDESTATIC 64
259 #define CMF_RESERVED 0xffff0000
260 #define GCS_VERBA 0
261 #define GCS_HELPTEXTA 1
262 #define GCS_VALIDATEA 2
263 #define GCS_VERBW 4
264 #define GCS_HELPTEXTW 5
265 #define GCS_VALIDATEW 6
266 #define GCS_UNICODE 4
267 #define GCS_VERB __AW(GCS_VERB)
268 #define GCS_HELPTEXT __AW(GCS_HELPTEXT)
269 #define GCS_VALIDATE __AW(GCS_VALIDATE)
270 #define CMDSTR_NEWFOLDERA "NewFolder"
271 #define CMDSTR_VIEWLISTA "ViewList"
272 #define CMDSTR_VIEWDETAILSA "ViewDetails"
273 #define CMDSTR_NEWFOLDERW L"NewFolder"
274 #define CMDSTR_VIEWLISTW L"ViewList"
275 #define CMDSTR_VIEWDETAILSW L"ViewDetails"
276 #define CMDSTR_NEWFOLDER __AW(CMDSTR_NEWFOLDER)
277 #define CMDSTR_VIEWLIST __AW(CMDSTR_VIEWLIST)
278 #define CMDSTR_VIEWDETAILS __AW(CMDSTR_VIEWDETAILS)
279 #define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY
280 #define CMIC_MASK_ICON SEE_MASK_ICON
281 #define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI
282 #define CMIC_MASK_MODAL 0x80000000
283 #define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS
284 #define GIL_OPENICON 1
285 #define GIL_FORSHELL 2
286 #define GIL_SIMULATEDOC 1
287 #define GIL_PERINSTANCE 2
288 #define GIL_PERCLASS 4
289 #define GIL_NOTFILENAME 8
290 #define GIL_DONTCACHE 16
291 #define FVSIF_RECT 1
292 #define FVSIF_PINNED 2
293 #define FVSIF_NEWFAILED 0x8000000
294 #define FVSIF_NEWFILE 0x80000000
295 #define FVSIF_CANVIEWIT 0x40000000
296 #define CDBOSC_SETFOCUS 0
297 #define CDBOSC_KILLFOCUS 1
298 #define CDBOSC_SELCHANGE 2
299 #define CDBOSC_RENAME 3
300 #define FCIDM_SHVIEWFIRST 0
301 #define FCIDM_SHVIEWLAST 0x7fff
302 #define FCIDM_BROWSERFIRST 0xa000
303 #define FCIDM_BROWSERLAST 0xbf00
304 #define FCIDM_GLOBALFIRST 0x8000
305 #define FCIDM_GLOBALLAST 0x9fff
306 #define FCIDM_MENU_FILE FCIDM_GLOBALFIRST
307 #define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
308 #define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
309 #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
310 #define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
311 #define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
312 #define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
313 #define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
314 #define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
315 #define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170)
316 #define FCIDM_TOOLBAR FCIDM_BROWSERFIRST
317 #define FCIDM_STATUS (FCIDM_BROWSERFIRST+1)
318 #define SBSP_DEFBROWSER 0
319 #define SBSP_SAMEBROWSER 1
320 #define SBSP_NEWBROWSER 2
321 #define SBSP_DEFMODE 0
322 #define SBSP_OPENMODE 16
323 #define SBSP_EXPLOREMODE 32
324 #define SBSP_ABSOLUTE 0
325 #define SBSP_RELATIVE 0x1000
326 #define SBSP_PARENT 0x2000
327 #define SBSP_INITIATEDBYHLINKFRAME 0x80000000
328 #define SBSP_REDIRECT 0x40000000
329 #define FCW_STATUS 1
330 #define FCW_TOOLBAR 2
331 #define FCW_TREE 3
332 #define FCT_MERGE 1
333 #define FCT_CONFIGABLE 2
334 #define FCT_ADDTOEND 4
335 #define SVSI_DESELECT 0
336 #define SVSI_SELECT 1
337 #define SVSI_EDIT 3
338 #define SVSI_DESELECTOTHERS 4
339 #define SVSI_ENSUREVISIBLE 8
340 #define SVSI_FOCUSED 16
341 #define SVGIO_BACKGROUND 0
342 #define SVGIO_SELECTION 1
343 #define SVGIO_ALLVIEW 2
344 #define SV2GV_CURRENTVIEW ((UINT)-1)
345 #define SV2GV_DEFAULTVIEW ((UINT)-2)
346
347 typedef ULONG SFGAOF;
348 typedef DWORD SHGDNF;
349
350 typedef struct _IDA {
351 UINT cidl;
352 UINT aoffset[1];
353 } CIDA,*LPIDA;
354 typedef struct _SHITEMID {
355 USHORT cb;
356 BYTE abID[1];
357 } SHITEMID, * LPSHITEMID;
358 typedef const SHITEMID *LPCSHITEMID;
359 typedef struct _ITEMIDLIST {
360 SHITEMID mkid;
361 } ITEMIDLIST,*LPITEMIDLIST;
362 typedef const ITEMIDLIST *LPCITEMIDLIST;
363 typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
364 typedef struct _browseinfoA {
365 HWND hwndOwner;
366 LPCITEMIDLIST pidlRoot;
367 LPSTR pszDisplayName;
368 LPCSTR lpszTitle;
369 UINT ulFlags;
370 BFFCALLBACK lpfn;
371 LPARAM lParam;
372 int iImage;
373 } BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
374 typedef struct _browseinfoW {
375 HWND hwndOwner;
376 LPCITEMIDLIST pidlRoot;
377 LPWSTR pszDisplayName;
378 LPCWSTR lpszTitle;
379 UINT ulFlags;
380 BFFCALLBACK lpfn;
381 LPARAM lParam;
382 int iImage;
383 } BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
384 typedef struct _CMInvokeCommandInfo {
385 DWORD cbSize;
386 DWORD fMask;
387 HWND hwnd;
388 LPCSTR lpVerb;
389 LPCSTR lpParameters;
390 LPCSTR lpDirectory;
391 int nShow;
392 DWORD dwHotKey;
393 HANDLE hIcon;
394 } CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
395 typedef struct _DROPFILES {
396 DWORD pFiles;
397 POINT pt;
398 BOOL fNC;
399 BOOL fWide;
400 } DROPFILES,*LPDROPFILES;
401 typedef enum tagSHGDN {
402 SHGDN_NORMAL=0,
403 SHGDN_INFOLDER,
404 SHGDN_FOREDITING=0x1000,
405 SHGDN_INCLUDE_NONFILESYS=0x2000,
406 SHGDN_FORADDRESSBAR=0x4000,
407 SHGDN_FORPARSING=0x8000
408 } SHGNO;
409 typedef enum tagSHCONTF {
410 SHCONTF_FOLDERS = 32,
411 SHCONTF_NONFOLDERS = 64,
412 SHCONTF_INCLUDEHIDDEN = 128,
413 SHCONTF_INIT_ON_FIRST_NEXT = 256,
414 SHCONTF_NETPRINTERSRCH = 512,
415 SHCONTF_SHAREABLE = 1024,
416 SHCONTF_STORAGE = 2048
417 } SHCONTF;
418 typedef struct _STRRET {
419 UINT uType;
420 _ANONYMOUS_UNION union {
421 LPWSTR pOleStr;
422 UINT uOffset;
423 char cStr[MAX_PATH];
424 } DUMMYUNIONNAME;
425 } STRRET,*LPSTRRET;
426 typedef enum {
427 FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16,
428 FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000
429 } FD_FLAGS;
430 typedef struct _FILEDESCRIPTORA {
431 DWORD dwFlags;
432 CLSID clsid;
433 SIZEL sizel;
434 POINTL pointl;
435 DWORD dwFileAttributes;
436 FILETIME ftCreationTime;
437 FILETIME ftLastAccessTime;
438 FILETIME ftLastWriteTime;
439 DWORD nFileSizeHigh;
440 DWORD nFileSizeLow;
441 CHAR cFileName[MAX_PATH];
442 } FILEDESCRIPTORA,*LPFILEDESCRIPTORA;
443 typedef struct _FILEDESCRIPTORW {
444 DWORD dwFlags;
445 CLSID clsid;
446 SIZEL sizel;
447 POINTL pointl;
448 DWORD dwFileAttributes;
449 FILETIME ftCreationTime;
450 FILETIME ftLastAccessTime;
451 FILETIME ftLastWriteTime;
452 DWORD nFileSizeHigh;
453 DWORD nFileSizeLow;
454 WCHAR cFileName[MAX_PATH];
455 } FILEDESCRIPTORW,*LPFILEDESCRIPTORW;
456 typedef struct _FILEGROUPDESCRIPTORA {
457 UINT cItems;
458 FILEDESCRIPTORA fgd[1];
459 } FILEGROUPDESCRIPTORA,*LPFILEGROUPDESCRIPTORA;
460 typedef struct _FILEGROUPDESCRIPTORW {
461 UINT cItems;
462 FILEDESCRIPTORW fgd[1];
463 } FILEGROUPDESCRIPTORW,*LPFILEGROUPDESCRIPTORW;
464 typedef enum {
465 SLR_NO_UI=1,
466 SLR_ANY_MATCH=2,
467 SLR_UPDATE=4,
468 SLR_NOUPDATE=8,
469 SLR_NOSEARCH=16,
470 SLR_NOTRACK=32,
471 SLR_NOLINKINFO=64,
472 SLR_INVOKE_MSI=128
473 } SLR_FLAGS;
474 typedef enum {
475 SLGP_SHORTPATH=1,
476 SLGP_UNCPRIORITY=2,
477 SLGP_RAWPATH=4
478 } SLGP_FLAGS;
479 typedef PBYTE LPVIEWSETTINGS;
480 typedef enum {
481 FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8,
482 FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128,
483 FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800,
484 FWF_SINGLECLICKACTIVATE=0x8000
485 } FOLDERFLAGS;
486 typedef enum {
487 FVM_ICON=1,
488 FVM_SMALLICON,
489 FVM_LIST,
490 FVM_DETAILS
491 } FOLDERVIEWMODE;
492 typedef struct {
493 UINT ViewMode;
494 UINT fFlags;
495 } FOLDERSETTINGS,*LPFOLDERSETTINGS;
496 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
497 typedef struct {
498 DWORD cbSize;
499 HWND hwndOwner;
500 int iShow;
501 DWORD dwFlags;
502 RECT rect;
503 LPUNKNOWN punkRel;
504 OLECHAR strNewFile[MAX_PATH];
505 } FVSHOWINFO,*LPFVSHOWINFO;
506 typedef struct _NRESARRAY {
507 UINT cItems;
508 NETRESOURCE nr[1];
509 } NRESARRAY, *LPNRESARRAY;
510 enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY };
511 enum {
512 SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION,
513 SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS
514 };
515 typedef enum {
516 SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS,
517 SVUIA_INPLACEACTIVATE
518 } SVUIA_STATUS;
519
520
521
522 DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
523 typedef IEnumIDList *LPENUMIDLIST;
524
525 #ifdef COBJMACROS
526 #define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
527 #define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T)
528 #define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T)
529 #define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c)
530 #define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a)
531 #define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T)
532 #define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a)
533 #endif
534
535 #define INTERFACE IObjMgr
DECLARE_INTERFACE_(IObjMgr,IUnknown)536 DECLARE_INTERFACE_(IObjMgr, IUnknown)
537 {
538 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
539 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
540 STDMETHOD_(ULONG,Release)(THIS) PURE;
541 STDMETHOD(Append)(THIS_ IUnknown*) PURE;
542 STDMETHOD(Remove)(THIS_ IUnknown*) PURE;
543 };
544 #undef INTERFACE
545
546 #define INTERFACE IContextMenu
DECLARE_INTERFACE_(IContextMenu,IUnknown)547 DECLARE_INTERFACE_(IContextMenu,IUnknown)
548 {
549 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
550 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
551 STDMETHOD_(ULONG,Release)(THIS) PURE;
552 STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
553 STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
554 STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
555 };
556 #undef INTERFACE
557 typedef IContextMenu *LPCONTEXTMENU;
558
559 #ifdef COBJMACROS
560 #define IContextMenu_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
561 #define IContextMenu_AddRef(T) (T)->lpVtbl->AddRef(T)
562 #define IContextMenu_Release(T) (T)->lpVtbl->Release(T)
563 #define IContextMenu_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
564 #define IContextMenu_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
565 #define IContextMenu_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
566 #endif
567
568 #define INTERFACE IContextMenu2
DECLARE_INTERFACE_(IContextMenu2,IContextMenu)569 DECLARE_INTERFACE_(IContextMenu2,IContextMenu)
570 {
571 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
572 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
573 STDMETHOD_(ULONG,Release)(THIS) PURE;
574 STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
575 STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
576 STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
577 STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
578 };
579 #undef INTERFACE
580 typedef IContextMenu2 *LPCONTEXTMENU2;
581
582 #define INTERFACE IContextMenu3
DECLARE_INTERFACE_(IContextMenu3,IContextMenu2)583 DECLARE_INTERFACE_(IContextMenu3,IContextMenu2)
584 {
585 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
586 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
587 STDMETHOD_(ULONG,Release)(THIS) PURE;
588 STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
589 STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
590 STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
591 STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
592 STDMETHOD(HandleMenuMsg2)(THIS_ UINT,WPARAM,LPARAM,LRESULT*) PURE;
593 };
594 #undef INTERFACE
595 typedef IContextMenu3 *LPCONTEXTMENU3;
596
597 #define INTERFACE IQueryInfo
DECLARE_INTERFACE_(IQueryInfo,IUnknown)598 DECLARE_INTERFACE_(IQueryInfo,IUnknown)
599 {
600 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
601 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
602 STDMETHOD_(ULONG,Release)(THIS) PURE;
603 STDMETHOD(GetInfoTip)(THIS_ DWORD,WCHAR**) PURE;
604 STDMETHOD(GetInfoFlags)(THIS_ DWORD*) PURE;
605 };
606 #undef INTERFACE
607
608 #define INTERFACE IShellExtInit
DECLARE_INTERFACE_(IShellExtInit,IUnknown)609 DECLARE_INTERFACE_(IShellExtInit, IUnknown)
610 {
611 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
612 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
613 STDMETHOD_(ULONG,Release)(THIS) PURE;
614 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE;
615 };
616 #undef INTERFACE
617 typedef IShellExtInit *LPSHELLEXTINIT;
618
619 #define INTERFACE IShellPropSheetExt
DECLARE_INTERFACE_(IShellPropSheetExt,IUnknown)620 DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
621 {
622 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
623 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
624 STDMETHOD_(ULONG,Release)(THIS) PURE;
625 STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE;
626 STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
627 };
628 #undef INTERFACE
629 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
630
631 #define INTERFACE IExtractIconA
DECLARE_INTERFACE_(IExtractIconA,IUnknown)632 DECLARE_INTERFACE_(IExtractIconA, IUnknown)
633 {
634 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
635 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
636 STDMETHOD_(ULONG,Release)(THIS) PURE;
637 STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
638 STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
639 };
640 #undef INTERFACE
641 typedef IExtractIconA *LPEXTRACTICONA;
642
643 #ifdef COBJMACROS
644 #define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
645 #define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T)
646 #define IExtractIconA_Release(T) (T)->lpVtbl->Release(T)
647 #define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
648 #define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
649 #endif
650
651 #define INTERFACE IExtractIconW
DECLARE_INTERFACE_(IExtractIconW,IUnknown)652 DECLARE_INTERFACE_(IExtractIconW, IUnknown)
653 {
654 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
655 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
656 STDMETHOD_(ULONG,Release)(THIS) PURE;
657 STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE;
658 STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE;
659 };
660 #undef INTERFACE
661 typedef IExtractIconW *LPEXTRACTICONW;
662
663 #ifdef COBJMACROS
664 #define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
665 #define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T)
666 #define IExtractIconW_Release(T) (T)->lpVtbl->Release(T)
667 #define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
668 #define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
669 #endif
670
671 #define IExtractIcon __AW(IExtractIcon)
672 #define LPEXTRACTICON __AW(LPEXTRACTICON)
673
674 #define INTERFACE IShellLinkA
DECLARE_INTERFACE_(IShellLinkA,IUnknown)675 DECLARE_INTERFACE_(IShellLinkA, IUnknown)
676 {
677 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
678 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
679 STDMETHOD_(ULONG,Release)(THIS) PURE;
680 STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE;
681 STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
682 STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
683 STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE;
684 STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE;
685 STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE;
686 STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE;
687 STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE;
688 STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE;
689 STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
690 STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
691 STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
692 STDMETHOD(SetShowCmd)(THIS_ int) PURE;
693 STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE;
694 STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE;
695 STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE;
696 STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
697 STDMETHOD(SetPath)(THIS_ LPCSTR) PURE;
698 };
699 #undef INTERFACE
700
701 #ifdef COBJMACROS
702 #define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
703 #define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T)
704 #define IShellLinkA_Release(T) (T)->lpVtbl->Release(T)
705 #define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
706 #define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
707 #define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
708 #define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
709 #define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
710 #define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
711 #define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
712 #define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
713 #define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
714 #define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
715 #define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
716 #define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
717 #define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
718 #define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
719 #define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
720 #define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
721 #define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
722 #define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
723 #endif
724
725 #define INTERFACE IShellLinkW
DECLARE_INTERFACE_(IShellLinkW,IUnknown)726 DECLARE_INTERFACE_(IShellLinkW, IUnknown)
727 {
728 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
729 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
730 STDMETHOD_(ULONG,Release)(THIS) PURE;
731 STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE;
732 STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
733 STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
734 STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE;
735 STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE;
736 STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE;
737 STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE;
738 STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE;
739 STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE;
740 STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
741 STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
742 STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
743 STDMETHOD(SetShowCmd)(THIS_ int) PURE;
744 STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE;
745 STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE;
746 STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE;
747 STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
748 STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE;
749 };
750 #undef INTERFACE
751
752 #ifdef COBJMACROS
753 #define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
754 #define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T)
755 #define IShellLinkW_Release(T) (T)->lpVtbl->Release(T)
756 #define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
757 #define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
758 #define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
759 #define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
760 #define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
761 #define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
762 #define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
763 #define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
764 #define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
765 #define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
766 #define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
767 #define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
768 #define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
769 #define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
770 #define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
771 #define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
772 #define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
773 #define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
774 #endif
775
776 #define INTERFACE IShellFolder
DECLARE_INTERFACE_(IShellFolder,IUnknown)777 DECLARE_INTERFACE_(IShellFolder, IUnknown)
778 {
779 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
780 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
781 STDMETHOD_(ULONG,Release)(THIS) PURE;
782 STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
783 STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
784 STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
785 STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
786 STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
787 STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
788 STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
789 STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
790 STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
791 STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
792 };
793 #undef INTERFACE
794 typedef IShellFolder *LPSHELLFOLDER;
795
796 #ifdef COBJMACROS
797 #define IShellFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
798 #define IShellFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
799 #define IShellFolder_Release(T) (T)->lpVtbl->Release(T)
800 #define IShellFolder_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
801 #define IShellFolder_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
802 #define IShellFolder_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
803 #define IShellFolder_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
804 #define IShellFolder_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
805 #define IShellFolder_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b)
806 #define IShellFolder_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
807 #define IShellFolder_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
808 #define IShellFolder_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
809 #define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
810 #endif
811
812 #define INTERFACE ICopyHook
DECLARE_INTERFACE_(ICopyHook,IUnknown)813 DECLARE_INTERFACE_(ICopyHook, IUnknown)
814 {
815 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
816 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
817 STDMETHOD_(ULONG,Release)(THIS) PURE;
818 STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE;
819 };
820 #undef INTERFACE
821 typedef ICopyHook *LPCOPYHOOK;
822
823 #define INTERFACE IFileViewerSite
DECLARE_INTERFACE(IFileViewerSite)824 DECLARE_INTERFACE(IFileViewerSite)
825 {
826 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
827 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
828 STDMETHOD_(ULONG,Release)(THIS) PURE;
829 STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE;
830 STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE;
831 };
832 #undef INTERFACE
833 typedef IFileViewerSite *LPFILEVIEWERSITE;
834
835 #define INTERFACE IFileViewer
DECLARE_INTERFACE(IFileViewer)836 DECLARE_INTERFACE(IFileViewer)
837 {
838 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
839 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
840 STDMETHOD_(ULONG,Release)(THIS) PURE;
841 STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE;
842 STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE;
843 STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE;
844 };
845 #undef INTERFACE
846 typedef IFileViewer *LPFILEVIEWER;
847
848 #define INTERFACE IFileSystemBindData
DECLARE_INTERFACE_(IFileSystemBindData,IUnknown)849 DECLARE_INTERFACE_(IFileSystemBindData, IUnknown)
850 {
851 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
852 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
853 STDMETHOD_(ULONG,Release)(THIS) PURE;
854 STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE;
855 STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE;
856 };
857 #undef INTERFACE
858
859 #define INTERFACE IPersistFolder
DECLARE_INTERFACE_(IPersistFolder,IPersist)860 DECLARE_INTERFACE_(IPersistFolder,IPersist)
861 {
862 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
863 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
864 STDMETHOD_(ULONG,Release)(THIS) PURE;
865 STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
866 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
867 };
868 #undef INTERFACE
869 typedef IPersistFolder *LPPERSISTFOLDER;
870
871 #ifdef COBJMACROS
872 #define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
873 #define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
874 #define IPersistFolder_Release(T) (T)->lpVtbl->Release(T)
875 #define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
876 #define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
877 #endif
878
879 typedef _COM_interface IShellBrowser *LPSHELLBROWSER;
880 typedef _COM_interface IShellView *LPSHELLVIEW;
881
882 #define INTERFACE IShellBrowser
DECLARE_INTERFACE_(IShellBrowser,IOleWindow)883 DECLARE_INTERFACE_(IShellBrowser,IOleWindow)
884 {
885 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
886 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
887 STDMETHOD_(ULONG,Release)(THIS) PURE;
888 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
889 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
890 STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
891 STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE;
892 STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE;
893 STDMETHOD(SetStatusTextSB)(THIS_ LPCOLESTR) PURE;
894 STDMETHOD(EnableModelessSB)(THIS_ BOOL) PURE;
895 STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE;
896 STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE;
897 STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE;
898 STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE;
899 STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE;
900 STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE;
901 STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE;
902 STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE;
903 };
904 #undef INTERFACE
905
906 #ifdef COBJMACROS
907 #define IShellBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
908 #define IShellBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
909 #define IShellBrowser_Release(T) (T)->lpVtbl->Release(T)
910 #define IShellBrowser_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
911 #define IShellBrowser_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
912 #define IShellBrowser_InsertMenusSB(T,a,b) (T)->lpVtbl->InsertMenusSB(T,a,b)
913 #define IShellBrowser_SetMenuSB(T,a,b,c) (T)->lpVtbl->SetMenuSB(T,a,b,c)
914 #define IShellBrowser_RemoveMenusSB(T,a) (T)->lpVtbl->RemoveMenusSB(T,a)
915 #define IShellBrowser_SetStatusTextSB(T,a) (T)->lpVtbl->SetStatusTextSB(T,a)
916 #define IShellBrowser_EnableModelessSB(T,a) (T)->lpVtbl->EnableModelessSB(T,a)
917 #define IShellBrowser_TranslateAcceleratorSB(T,a,b) (T)->lpVtbl->TranslateAcceleratorSB(T,a,b)
918 #define IShellBrowser_BrowseObject(T,a,b) (T)->lpVtbl->BrowseObject(T,a,b)
919 #define IShellBrowser_GetViewStateStream(T,a,b) (T)->lpVtbl->GetViewStateStream(T,a,b)
920 #define IShellBrowser_GetControlWindow(T,a,b) (T)->lpVtbl->GetControlWindow(T,a,b)
921 #define IShellBrowser_SendControlMsg(T,a,b,c,d,e) (T)->lpVtbl->SendControlMsg(T,a,b,c,d,e)
922 #define IShellBrowser_QueryActiveShellView(T,a) (T)->lpVtbl->QueryActiveShellView(T,a)
923 #define IShellBrowser_OnViewWindowActive(T,a) (T)->lpVtbl->OnViewWindowActive(T,a)
924 #define IShellBrowser_SetToolbarItems(T,a,b,c) (T)->lpVtbl->SetToolbarItems(T,a,b,c)
925 #endif
926
927 #define INTERFACE IShellView
DECLARE_INTERFACE_(IShellView,IOleWindow)928 DECLARE_INTERFACE_(IShellView,IOleWindow)
929 {
930 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
931 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
932 STDMETHOD_(ULONG,Release)(THIS) PURE;
933 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
934 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
935 STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
936 #ifdef _FIX_ENABLEMODELESS_CONFLICT
937 STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
938 #else
939 STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
940 #endif
941 STDMETHOD(UIActivate)(THIS_ UINT) PURE;
942 STDMETHOD(Refresh) (THIS) PURE;
943 STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
944 STDMETHOD(DestroyViewWindow)(THIS) PURE;
945 STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
946 STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
947 STDMETHOD(SaveViewState)(THIS) PURE;
948 STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
949 STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
950 };
951 #undef INTERFACE
952
953 #ifdef COBJMACROS
954 #define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
955 #define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T)
956 #define IShellView_Release(T) (T)->lpVtbl->Release(T)
957 #define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
958 #define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
959 #define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a)
960
961 #ifdef _FIX_ENABLEMODELESS_CONFLICT
962 #define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a)
963 #else
964 #define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a)
965 #endif
966
967 #define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a)
968 #define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T)
969 #define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e)
970 #define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T)
971 #define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a)
972 #define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c)
973 #define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T)
974 #define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b)
975 #define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c)
976 #endif
977
978 #define INTERFACE ICommDlgBrowser
DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)979 DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
980 {
981 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
982 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
983 STDMETHOD_(ULONG,Release)(THIS) PURE;
984 STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE;
985 STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE;
986 STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE;
987 };
988 #undef INTERFACE
989 typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
990
991 #ifdef COBJMACROS
992 #define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
993 #define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
994 #define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T)
995 #define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a)
996 #define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b)
997 #define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b)
998 #endif
999
1000 typedef GUID SHELLVIEWID;
1001 typedef struct _SV2CVW2_PARAMS {
1002 DWORD cbSize;
1003 IShellView *psvPrev;
1004 FOLDERSETTINGS const *pfs;
1005 IShellBrowser *psbOwner;
1006 RECT *prcView;
1007 SHELLVIEWID const *pvid;
1008 HWND hwndView;
1009 } SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS;
1010 #define INTERFACE IShellView2
DECLARE_INTERFACE_(IShellView2,IShellView)1011 DECLARE_INTERFACE_(IShellView2,IShellView)
1012 {
1013
1014 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1015 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1016 STDMETHOD_(ULONG,Release)(THIS) PURE;
1017 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
1018 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
1019 STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
1020
1021 #ifdef _FIX_ENABLEMODELESS_CONFLICT
1022 STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
1023 #else
1024 STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
1025 #endif
1026
1027 STDMETHOD(UIActivate)(THIS_ UINT) PURE;
1028 STDMETHOD(Refresh) (THIS) PURE;
1029 STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
1030 STDMETHOD(DestroyViewWindow)(THIS) PURE;
1031 STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
1032 STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
1033 STDMETHOD(SaveViewState)(THIS) PURE;
1034 STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
1035 STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
1036 STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
1037 STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
1038 };
1039 #undef INTERFACE
1040
1041 #define INTERFACE IShellExecuteHookA
DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)1042 DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)
1043 {
1044 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1045 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1046 STDMETHOD_(ULONG,Release)(THIS) PURE;
1047 STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE;
1048 };
1049 #undef INTERFACE
1050
1051 #define INTERFACE IShellExecuteHookW
DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)1052 DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)
1053 {
1054 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1055 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1056 STDMETHOD_(ULONG,Release)(THIS) PURE;
1057 STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE;
1058 };
1059 #undef INTERFACE
1060
1061 #define INTERFACE IShellIcon
DECLARE_INTERFACE_(IShellIcon,IUnknown)1062 DECLARE_INTERFACE_(IShellIcon,IUnknown)
1063 {
1064 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1065 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1066 STDMETHOD_(ULONG,Release)(THIS) PURE;
1067 STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE;
1068 };
1069 #undef INTERFACE
1070 typedef IShellIcon *LPSHELLICON;
1071
1072 typedef struct {
1073 BOOL fShowAllObjects : 1;
1074 BOOL fShowExtensions : 1;
1075 BOOL fNoConfirmRecycle : 1;
1076 BOOL fShowSysFiles : 1;
1077 BOOL fShowCompColor : 1;
1078 BOOL fDoubleClickInWebView : 1;
1079 BOOL fDesktopHTML : 1;
1080 BOOL fWin95Classic : 1;
1081 BOOL fDontPrettyPath : 1;
1082 BOOL fShowAttribCol : 1;
1083 BOOL fMapNetDrvBtn : 1;
1084 BOOL fShowInfoTip : 1;
1085 BOOL fHideIcons : 1;
1086 UINT fRestFlags : 3;
1087 } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
1088
1089 #define SSF_SHOWALLOBJECTS 0x1
1090 #define SSF_SHOWEXTENSIONS 0x2
1091 #define SSF_SHOWCOMPCOLOR 0x8
1092 #define SSF_SHOWSYSFILES 0x20
1093 #define SSF_DOUBLECLICKINWEBVIEW 0x80
1094 #define SSF_SHOWATTRIBCOL 0x100
1095 #define SSF_DESKTOPHTML 0x200
1096 #define SSF_WIN95CLASSIC 0x400
1097 #define SSF_DONTPRETTYPATH 0x800
1098 #define SSF_MAPNETDRVBUTTON 0x1000
1099 #define SSF_SHOWINFOTIP 0x2000
1100 #define SSF_HIDEICONS 0x4000
1101 #define SSF_NOCONFIRMRECYCLE 0x8000
1102
1103 #define INTERFACE IShellIconOverlayIdentifier
DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown)1104 DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown)
1105 {
1106 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1107 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1108 STDMETHOD_(ULONG,Release)(THIS) PURE;
1109 STDMETHOD(IsMemberOf)(THIS_ LPCWSTR,DWORD) PURE;
1110 STDMETHOD(GetOverlayInfo)(THIS_ LPWSTR,int,int*,DWORD*) PURE;
1111 STDMETHOD(GetPriority)(THIS_ int*) PURE;
1112 };
1113 #undef INTERFACE
1114
1115 #define ISIOI_ICONFILE 0x00000001
1116 #define ISIOI_ICONINDEX 0x00000002
1117
1118 void WINAPI SHAddToRecentDocs(UINT,PCVOID);
1119 LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA);
1120 LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW);
1121 void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
1122 HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
1123 HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
1124 HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*);
1125 HRESULT WINAPI SHGetInstanceExplorer(IUnknown **);
1126 HRESULT WINAPI SHGetMalloc(LPMALLOC*);
1127 BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
1128 BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
1129 HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
1130 HRESULT WINAPI SHLoadInProc(REFCLSID);
1131
1132 /* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */
1133 HRESULT WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR);
1134 HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR);
1135
1136 void WINAPI SHGetSettings(LPSHELLFLAGSTATE,DWORD);
1137
1138 typedef __AW(IShellExecuteHook) IShellExecuteHook;
1139 typedef __AW(IShellLink) IShellLink;
1140 typedef __AW(BROWSEINFO) BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
1141 #define SHBrowseForFolder __AW(SHBrowseForFolder)
1142 #define SHGetDataFromIDList __AW(SHGetDataFromIDList)
1143 #define SHGetPathFromIDList __AW(SHGetPathFromIDList)
1144 #define SHGetFolderPath __AW(SHGetFolderPath)
1145 #define FILEDESCRIPTOR __AW(FILEDESCRIPTOR)
1146 #define LPFILEDESCRIPTOR __AW(LPFILEDESCRIPTOR)
1147 #define FILEGROUPDESCRIPTOR __AW(FILEGROUPDESCRIPTOR)
1148 #define LPFILEGROUPDESCRIPTOR __AW(LPFILEGROUPDESCRIPTOR)
1149
1150 DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT);
1151
1152 #define SHFMT_ID_DEFAULT 0xFFFF
1153 #define SHFMT_OPT_FULL 1
1154 #define SHFMT_OPT_SYSONLY 2
1155 #define SHFMT_ERROR 0xFFFFFFFF
1156 #define SHFMT_CANCEL 0xFFFFFFFE
1157 #define SHFMT_NOFORMAT 0xFFFFFFFD
1158
1159 #if (_WIN32_IE >= 0x0400)
1160 BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL);
1161 BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL);
1162 #define SHGetSpecialFolderPath __AW(SHGetSpecialFolderPath)
1163 #endif /* _WIN32_IE >= 0x0400 */
1164
1165 #if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= _WIN32_WINNT_WIN2K)
1166
1167 #define INTERFACE IPersistFolder2
DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder)1168 DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder)
1169 {
1170 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1171 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1172 STDMETHOD_(ULONG,Release)(THIS) PURE;
1173 STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
1174 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
1175 STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
1176 };
1177 #undef INTERFACE
1178 typedef IPersistFolder2 *LPPERSISTFOLDER2;
1179
1180 #ifdef COBJMACROS
1181 #define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1182 #define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
1183 #define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T)
1184 #define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
1185 #define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
1186 #define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
1187 #endif
1188
1189 #endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
1190
1191 #if (_WIN32_IE >= 0x0500)
1192 typedef struct tagEXTRASEARCH
1193 {
1194 GUID guidSearch;
1195 WCHAR wszFriendlyName[80];
1196 WCHAR wszUrl[2084];
1197 } EXTRASEARCH, *LPEXTRASEARCH;
1198 typedef DWORD SHCOLSTATEF;
1199 typedef struct
1200 {
1201 GUID fmtid;
1202 DWORD pid;
1203 } SHCOLUMNID, *LPSHCOLUMNID;
1204 typedef const SHCOLUMNID *LPCSHCOLUMNID;
1205 typedef struct _SHELLDETAILS
1206 {
1207 int fmt;
1208 int cxChar;
1209 STRRET str;
1210 } SHELLDETAILS, *LPSHELLDETAILS;
1211 typedef struct
1212 {
1213 LPITEMIDLIST pidlTargetFolder;
1214 WCHAR szTargetParsingName[MAX_PATH];
1215 WCHAR szNetworkProvider[MAX_PATH];
1216 DWORD dwAttributes;
1217 int csidl;
1218 } PERSIST_FOLDER_TARGET_INFO;
1219
1220 typedef enum {
1221 SHGFP_TYPE_CURRENT = 0,
1222 SHGFP_TYPE_DEFAULT = 1,
1223 } SHGFP_TYPE;
1224 #pragma pack(push,8)
1225 typedef struct {
1226 ULONG dwFlags;
1227 ULONG dwReserved;
1228 WCHAR wszFolder[MAX_PATH];
1229 } SHCOLUMNINIT,*LPSHCOLUMNINIT;
1230 typedef const SHCOLUMNINIT* LPCSHCOLUMNINIT;
1231 typedef struct {
1232 ULONG dwFlags;
1233 DWORD dwFileAttributes;
1234 ULONG dwReserved;
1235 WCHAR *pwszExt;
1236 WCHAR wszFile[MAX_PATH];
1237 } SHCOLUMNDATA,*LPSHCOLUMNDATA;
1238 typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA;
1239 #pragma pack(pop)
1240
1241 #define MAX_COLUMN_NAME_LEN 80
1242 #define MAX_COLUMN_DESC_LEN 128
1243
1244 #pragma pack(push,1)
1245 typedef struct {
1246 SHCOLUMNID scid;
1247 VARTYPE vt;
1248 DWORD fmt;
1249 UINT cChars;
1250 DWORD csFlags;
1251 WCHAR wszTitle[MAX_COLUMN_NAME_LEN];
1252 WCHAR wszDescription[MAX_COLUMN_DESC_LEN];
1253 } SHCOLUMNINFO,*LPSHCOLUMNINFO;
1254 typedef const SHCOLUMNINFO* LPCSHCOLUMNINFO;
1255 #pragma pack(pop)
1256
1257 typedef enum {
1258 SHCOLSTATE_TYPE_STR = 0x00000001,
1259 SHCOLSTATE_TYPE_INT = 0x00000002,
1260 SHCOLSTATE_TYPE_DATE = 0x00000003,
1261 SHCOLSTATE_TYPEMASK = 0x0000000f,
1262 SHCOLSTATE_ONBYDEFAULT = 0x00000010,
1263 SHCOLSTATE_SLOW = 0x00000020,
1264 SHCOLSTATE_EXTENDED = 0x00000040,
1265 SHCOLSTATE_SECONDARYUI = 0x00000080,
1266 SHCOLSTATE_HIDDEN = 0x00000100,
1267 SHCOLSTATE_PREFER_VARCMP = 0x00000200
1268 } SHCOLSTATE;
1269
1270 #ifdef COBJMACROS
1271 #define IContextMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1272 #define IContextMenu2_AddRef(T) (T)->lpVtbl->AddRef(T)
1273 #define IContextMenu2_Release(T) (T)->lpVtbl->Release(T)
1274 #define IContextMenu2_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
1275 #define IContextMenu2_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
1276 #define IContextMenu2_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
1277 #define IContextMenu2_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c)
1278 #define IContextMenu3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1279 #define IContextMenu3_AddRef(T) (T)->lpVtbl->AddRef(T)
1280 #define IContextMenu3_Release(T) (T)->lpVtbl->Release(T)
1281 #define IContextMenu3_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
1282 #define IContextMenu3_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
1283 #define IContextMenu3_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
1284 #define IContextMenu3_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c)
1285 #define IContextMenu3_HandleMenuMsg2(T,a,b,c,d) (T)->lpVtbl->HandleMenuMsg(T,a,b,c,d)
1286 #endif
1287
1288 #define INTERFACE IColumnProvider
DECLARE_INTERFACE_(IColumnProvider,IUnknown)1289 DECLARE_INTERFACE_(IColumnProvider,IUnknown)
1290 {
1291 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1292 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1293 STDMETHOD_(ULONG,Release)(THIS) PURE;
1294 STDMETHOD(Initialize)(THIS_ LPCSHCOLUMNINIT) PURE;
1295 STDMETHOD(GetColumnInfo)(THIS_ DWORD,SHCOLUMNINFO*) PURE;
1296 STDMETHOD(GetItemData)(THIS_ LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*) PURE;
1297 };
1298 #undef INTERFACE
1299
1300 DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH);
1301 typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
1302
1303 #define INTERFACE IShellFolder2
DECLARE_INTERFACE_(IShellFolder2,IShellFolder)1304 DECLARE_INTERFACE_(IShellFolder2, IShellFolder)
1305 {
1306 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1307 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1308 STDMETHOD_(ULONG,Release)(THIS) PURE;
1309 STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
1310 STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
1311 STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
1312 STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
1313 STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
1314 STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
1315 STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
1316 STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
1317 STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
1318 STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
1319 STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE;
1320 STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE;
1321 STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE;
1322 STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE;
1323 STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE;
1324 STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE;
1325 STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE;
1326 };
1327 #undef INTERFACE
1328 typedef IShellFolder2 *LPSHELLFOLDER2;
1329
1330 #ifdef COBJMACROS
1331 #define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1332 #define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
1333 #define IShellFolder2_Release(T) (T)->lpVtbl->Release(T)
1334 #define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
1335 #define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
1336 #define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
1337 #define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
1338 #define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
1339 #define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b)
1340 #define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
1341 #define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
1342 #define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
1343 #define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
1344 #define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a)
1345 #define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a)
1346 #define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c)
1347 #define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b)
1348 #define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c)
1349 #define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c)
1350 #define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b)
1351 #endif
1352
1353 #define INTERFACE IPersistFolder3
DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2)1354 DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2)
1355 {
1356 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1357 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1358 STDMETHOD_(ULONG,Release)(THIS) PURE;
1359 STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
1360 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
1361 STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
1362 STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE;
1363 STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE;
1364 };
1365 #undef INTERFACE
1366 typedef IPersistFolder3 *LPPERSISTFOLDER3;
1367
1368 #ifdef COBJMACROS
1369 #define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1370 #define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T)
1371 #define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T)
1372 #define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
1373 #define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
1374 #define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
1375 #define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c)
1376 #define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a)
1377 #endif
1378
1379 #pragma pack(push,8)
1380 typedef struct
1381 {
1382 SIZE sizeDragImage;
1383 POINT ptOffset;
1384 HBITMAP hbmpDragImage;
1385 COLORREF crColorKey;
1386 } SHDRAGIMAGE, *LPSHDRAGIMAGE;
1387 #pragma pack(pop)
1388
1389 #define INTERFACE IDragSourceHelper
DECLARE_INTERFACE_(IDragSourceHelper,IUnknown)1390 DECLARE_INTERFACE_(IDragSourceHelper, IUnknown)
1391 {
1392 STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
1393 STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1394 STDMETHOD_(ULONG, Release) (THIS) PURE;
1395 STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE;
1396 STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE;
1397 };
1398 #undef INTERFACE
1399
1400 #define INTERFACE IDropTargetHelper
DECLARE_INTERFACE_(IDropTargetHelper,IUnknown)1401 DECLARE_INTERFACE_(IDropTargetHelper, IUnknown)
1402 {
1403 STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE;
1404 STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1405 STDMETHOD_(ULONG, Release) (THIS) PURE;
1406 STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
1407 STDMETHOD (DragLeave)(THIS) PURE;
1408 STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE;
1409 STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
1410 STDMETHOD (Show)(THIS_ BOOL fShow) PURE;
1411 };
1412 #undef INTERFACE
1413
1414 #endif /* _WIN32_IE >= 0x0500 */
1415
1416 #if (_WIN32_WINNT >= _WIN32_WINNT_WINME)
1417 HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*);
1418 #endif
1419
1420 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
1421 typedef struct {
1422 BOOL fShowAllObjects : 1;
1423 BOOL fShowExtensions : 1;
1424 BOOL fNoConfirmRecycle : 1;
1425 BOOL fShowSysFiles : 1;
1426 BOOL fShowCompColor : 1;
1427 BOOL fDoubleClickInWebView : 1;
1428 BOOL fDesktopHTML : 1;
1429 BOOL fWin95Classic : 1;
1430 BOOL fDontPrettyPath : 1;
1431 BOOL fShowAttribCol : 1;
1432 BOOL fMapNetDrvBtn : 1;
1433 BOOL fShowInfoTip : 1;
1434 BOOL fHideIcons : 1;
1435 BOOL fWebView : 1;
1436 BOOL fFilter : 1;
1437 BOOL fShowSuperHidden : 1;
1438 BOOL fNoNetCrawling : 1;
1439 DWORD dwWin95Unused;
1440 UINT uWin95Unused;
1441 LONG lParamSort;
1442 int iSortDirection;
1443 UINT version;
1444 UINT uNotUsed;
1445 BOOL fSepProcess : 1;
1446 BOOL fStartPanelOn : 1;
1447 BOOL fShowStartPage : 1;
1448 UINT fSpareFlags : 13;
1449 } SHELLSTATE, *LPSHELLSTATE;
1450
1451 BOOL WINAPI PathResolve(LPWSTR, LPCWSTR*, UINT);
1452 #define PRF_VERIFYEXISTS 0x0001
1453 #define PRF_TRYPROGRAMEXTENSIONS (0x0002 | PRF_VERIFYEXISTS)
1454 #define PRF_FIRSTDIRDEF 0x0004
1455 #define PRF_DONTFINDLNK 0x0008
1456 #define IDO_SHGIOI_SHARE 0x0FFFFFFF
1457 #define IDO_SHGIOI_LINK 0x0FFFFFFE
1458 #define IDO_SHGIOI_SLOWFILE 0x0FFFFFFD
1459 #define IDO_SHGIOI_DEFAULT 0x0FFFFFFC
1460
1461 INT WINAPI SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex);
1462 INT WINAPI SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex);
1463 INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES);
1464 INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES);
1465 HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*);
1466 void WINAPI SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL);
1467 BOOL WINAPI ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST);
1468 BOOL WINAPI ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL);
1469 BOOL WINAPI ILRemoveLastID(LPITEMIDLIST);
1470 HRESULT WINAPI ILLoadFromStream(IStream*, LPITEMIDLIST*);
1471 HRESULT WINAPI ILSaveToStream(IStream*, LPCITEMIDLIST);
1472 LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL);
1473 LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
1474 LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
1475 LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST, LPCITEMIDLIST);
1476 LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST);
1477 LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
1478 LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
1479 UINT WINAPI ILGetSize(LPCITEMIDLIST);
1480 void WINAPI ILFree(LPITEMIDLIST);
1481 HRESULT WINAPI SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**);
1482 #define SHGetIconOverlayIndex __AW(SHGetIconOverlayIndex)
1483 #define SHCreateDirectoryEx __AW(SHCreateDirectoryEx)
1484
1485 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WIN2K */
1486
1487 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
1488 typedef _COM_interface IFolderView *LPFOLDERVIEW;
1489
1490 #define INTERFACE IFolderView
DECLARE_INTERFACE_(IFolderView,IUnknown)1491 DECLARE_INTERFACE_(IFolderView,IUnknown)
1492 {
1493 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1494 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1495 STDMETHOD_(ULONG,Release)(THIS) PURE;
1496 STDMETHOD(GetAutoArrange)(THIS) PURE;
1497 STDMETHOD(GetCurrentViewMode)(THIS_ UINT) PURE;
1498 STDMETHOD(GetDefaultSpacing)(THIS_ POINT*) PURE;
1499 STDMETHOD(GetFocusedItem)(THIS_ int*) PURE;
1500 STDMETHOD(GetFolder)(THIS_ REFIID,PVOID*) PURE;
1501 STDMETHOD(GetItemPosition)(THIS_ LPCITEMIDLIST,POINT*) PURE;
1502 STDMETHOD(GetSelectionMarkedItem)(THIS_ int*) PURE;
1503 STDMETHOD(GetSpacing)(THIS_ POINT*) PURE;
1504 STDMETHOD(Item)(THIS_ int,LPITEMIDLIST*) PURE;
1505 STDMETHOD(ItemCount)(THIS_ UINT,int*) PURE;
1506 STDMETHOD(Items)(THIS_ UINT,REFIID,PVOID*) PURE;
1507 STDMETHOD(SelectAndPositionItems)(THIS_ UINT,LPCITEMIDLIST*,POINT*,DWORD) PURE;
1508 STDMETHOD(SelectItem)(THIS_ int,DWORD) PURE;
1509 STDMETHOD(SetCurrentViewMode)(THIS_ UINT) PURE;
1510 };
1511 #undef INTERFACE
1512
1513 HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
1514 HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
1515 HRESULT WINAPI SHParseDisplayName(LPCWSTR,IBindCtx*,LPITEMIDLIST,SFGAOF,SFGAOF*);
1516 #define SHGetFolderPathAndSubDir __AW(SHGetFolderPathAndSubDir)
1517
1518 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WINXP */
1519
1520 #pragma pack(pop)
1521
1522 #ifdef __cplusplus
1523 }
1524 #endif
1525
1526 #endif /* _SHLOBJ_H */
1527