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