source: vendor/w32api/current/include/shlobj.h

Last change on this file was 2720, checked in by bird, 19 years ago

w32api v3.6

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