source: Daodan/MinGW/include/shlobj.h@ 1051

Last change on this file since 1051 was 1046, checked in by alloc, 8 years ago

Daodan: Added Windows MinGW and build batch file

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