Merge pull request #254 from t-b/tb_add_newer_bash
[msysgit.git] / include / shlobj.h
blob2997c573fdd9ad2a5987c22a803aa0489fba6316
1 #ifndef _SHLOBJ_H
2 #define _SHLOBJ_H
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
8 #include <ole2.h>
9 #include <shlguid.h>
10 #include <shellapi.h>
11 #pragma pack(push,1)
12 #include <commctrl.h>
14 #define BIF_RETURNONLYFSDIRS 1
15 #define BIF_DONTGOBELOWDOMAIN 2
16 #define BIF_STATUSTEXT 4
17 #define BIF_RETURNFSANCESTORS 8
18 #define BIF_EDITBOX 16
19 #define BIF_VALIDATE 32
20 #define BIF_NEWDIALOGSTYLE 64
21 #define BIF_BROWSEINCLUDEURLS 128
22 #define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE )
23 #define BIF_BROWSEFORCOMPUTER 0x1000
24 #define BIF_BROWSEFORPRINTER 0x2000
25 #define BIF_BROWSEINCLUDEFILES 0x4000
26 #define BIF_SHAREABLE 0x8000
27 #define BFFM_INITIALIZED 1
28 #define BFFM_SELCHANGED 2
29 #define BFFM_SETSTATUSTEXT (WM_USER + 100)
30 #define BFFM_ENABLEOK (WM_USER + 101)
31 #define BFFM_SETSELECTION (WM_USER + 102)
32 #define DVASPECT_SHORTNAME 2
33 #define SHARD_PIDL 1
34 #define SHARD_PATH 2
35 #define SHCNE_RENAMEITEM 1
36 #define SHCNE_CREATE 2
37 #define SHCNE_DELETE 4
38 #define SHCNE_MKDIR 8
39 #define SHCNE_RMDIR 16
40 #define SHCNE_MEDIAINSERTED 32
41 #define SHCNE_MEDIAREMOVED 64
42 #define SHCNE_DRIVEREMOVED 128
43 #define SHCNE_DRIVEADD 256
44 #define SHCNE_NETSHARE 512
45 #define SHCNE_NETUNSHARE 1024
46 #define SHCNE_ATTRIBUTES 2048
47 #define SHCNE_UPDATEDIR 4096
48 #define SHCNE_UPDATEITEM 8192
49 #define SHCNE_SERVERDISCONNECT 16384
50 #define SHCNE_UPDATEIMAGE 32768
51 #define SHCNE_DRIVEADDGUI 65536
52 #define SHCNE_RENAMEFOLDER 0x20000
53 #define SHCNE_FREESPACE 0x40000
54 #define SHCNE_ASSOCCHANGED 0x8000000
55 #define SHCNE_DISKEVENTS 0x2381F
56 #define SHCNE_GLOBALEVENTS 0xC0581E0
57 #define SHCNE_ALLEVENTS 0x7FFFFFFF
58 #define SHCNE_INTERRUPT 0x80000000
59 #define SHCNF_IDLIST 0
60 #define SHCNF_PATH 1
61 #define SHCNF_PRINTER 2
62 #define SHCNF_DWORD 3
63 #define SHCNF_TYPE 0xFF
64 #define SHCNF_FLUSH 0x1000
65 #define SHCNF_FLUSHNOWAIT 0x2000
66 #define SFGAO_CANCOPY DROPEFFECT_COPY
67 #define SFGAO_CANMOVE DROPEFFECT_MOVE
68 #define SFGAO_CANLINK DROPEFFECT_LINK
69 #define SFGAO_CANRENAME 0x00000010L
70 #define SFGAO_CANDELETE 0x00000020L
71 #define SFGAO_HASPROPSHEET 0x00000040L
72 #define SFGAO_DROPTARGET 0x00000100L
73 #define SFGAO_CAPABILITYMASK 0x00000177L
74 #define SFGAO_LINK 0x00010000L
75 #define SFGAO_SHARE 0x00020000L
76 #define SFGAO_READONLY 0x00040000L
77 #define SFGAO_GHOSTED 0x00080000L
78 #define SFGAO_DISPLAYATTRMASK 0x000F0000L
79 #define SFGAO_FILESYSANCESTOR 0x10000000L
80 #define SFGAO_FOLDER 0x20000000L
81 #define SFGAO_FILESYSTEM 0x40000000L
82 #define SFGAO_HASSUBFOLDER 0x80000000L
83 #define SFGAO_CONTENTSMASK 0x80000000L
84 #define SFGAO_VALIDATE 0x01000000L
85 #define SFGAO_REMOVABLE 0x02000000L
86 #define STRRET_WSTR 0
87 #define STRRET_OFFSET 1
88 #define STRRET_CSTR 2
89 #define SHGDFIL_FINDDATA 1
90 #define SHGDFIL_NETRESOURCE 2
91 #define SHGDFIL_DESCRIPTIONID 3
92 #define SHDID_ROOT_REGITEM 1
93 #define SHDID_FS_FILE 2
94 #define SHDID_FS_DIRECTORY 3
95 #define SHDID_FS_OTHER 4
96 #define SHDID_COMPUTER_DRIVE35 5
97 #define SHDID_COMPUTER_DRIVE525 6
98 #define SHDID_COMPUTER_REMOVABLE 7
99 #define SHDID_COMPUTER_FIXED 8
100 #define SHDID_COMPUTER_NETDRIVE 9
101 #define SHDID_COMPUTER_CDROM 10
102 #define SHDID_COMPUTER_RAMDISK 11
103 #define SHDID_COMPUTER_OTHER 12
104 #define SHDID_NET_DOMAIN 13
105 #define SHDID_NET_SERVER 14
106 #define SHDID_NET_SHARE 15
107 #define SHDID_NET_RESTOFNET 16
108 #define SHDID_NET_OTHER 17
109 #ifndef REGSTR_PATH_EXPLORER
110 #define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
111 #endif
112 #define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
113 #define CSIDL_DESKTOP 0
114 #define CSIDL_INTERNET 1
115 #define CSIDL_PROGRAMS 2
116 #define CSIDL_CONTROLS 3
117 #define CSIDL_PRINTERS 4
118 #define CSIDL_PERSONAL 5
119 #define CSIDL_FAVORITES 6
120 #define CSIDL_STARTUP 7
121 #define CSIDL_RECENT 8
122 #define CSIDL_SENDTO 9
123 #define CSIDL_BITBUCKET 10
124 #define CSIDL_STARTMENU 11
125 #define CSIDL_DESKTOPDIRECTORY 16
126 #define CSIDL_DRIVES 17
127 #define CSIDL_NETWORK 18
128 #define CSIDL_NETHOOD 19
129 #define CSIDL_FONTS 20
130 #define CSIDL_TEMPLATES 21
131 #define CSIDL_COMMON_STARTMENU 22
132 #define CSIDL_COMMON_PROGRAMS 23
133 #define CSIDL_COMMON_STARTUP 24
134 #define CSIDL_COMMON_DESKTOPDIRECTORY 25
135 #define CSIDL_APPDATA 26
136 #define CSIDL_PRINTHOOD 27
137 #define CSIDL_ALTSTARTUP 29
138 #define CSIDL_COMMON_ALTSTARTUP 30
139 #define CSIDL_COMMON_FAVORITES 31
140 #define CSIDL_INTERNET_CACHE 32
141 #define CSIDL_COOKIES 33
142 #define CSIDL_HISTORY 34
143 #define CFSTR_SHELLIDLIST TEXT("Shell IDList Array")
144 #define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets")
145 #define CFSTR_NETRESOURCES TEXT("Net Resource")
146 #define CFSTR_FILEDESCRIPTOR TEXT("FileGroupDescriptor")
147 #define CFSTR_FILECONTENTS TEXT("FileContents")
148 #define CFSTR_FILENAME TEXT("FileName")
149 #define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName")
150 #define CFSTR_FILENAMEMAP TEXT("FileNameMap")
151 #define CFSTR_INDRAGLOOP TEXT("InShellDragLoop")
152 #define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded")
153 #define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect")
154 #define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect")
155 #define CFSTR_SHELLURL TEXT("UniformResourceLocator")
156 #define CMF_NORMAL 0
157 #define CMF_DEFAULTONLY 1
158 #define CMF_VERBSONLY 2
159 #define CMF_EXPLORE 4
160 #define CMF_RESERVED 0xffff0000
161 #define GCS_VERBA 0
162 #define GCS_HELPTEXTA 1
163 #define GCS_VALIDATEA 2
164 #define GCS_VERBW 4
165 #define GCS_HELPTEXTW 5
166 #define GCS_VALIDATEW 6
167 #define GCS_UNICODE 4
168 #ifdef UNICODE
169 #define GCS_VERB GCS_VERBW
170 #define GCS_HELPTEXT GCS_HELPTEXTW
171 #define GCS_VALIDATE GCS_VALIDATEW
172 #else
173 #define GCS_VERB GCS_VERBA
174 #define GCS_HELPTEXT GCS_HELPTEXTA
175 #define GCS_VALIDATE GCS_VALIDATEA
176 #endif
177 #define CMDSTR_NEWFOLDER TEXT("NewFolder")
178 #define CMDSTR_VIEWLIST TEXT("ViewList")
179 #define CMDSTR_VIEWDETAILS TEXT("ViewDetails")
180 #define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY
181 #define CMIC_MASK_ICON SEE_MASK_ICON
182 #define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI
183 #define CMIC_MASK_MODAL 0x80000000
184 #define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS
185 #define GIL_OPENICON 1
186 #define GIL_FORSHELL 2
187 #define GIL_SIMULATEDOC 1
188 #define GIL_PERINSTANCE 2
189 #define GIL_PERCLASS 4
190 #define GIL_NOTFILENAME 8
191 #define GIL_DONTCACHE 16
192 #define FVSIF_RECT 1
193 #define FVSIF_PINNED 2
194 #define FVSIF_NEWFAILED 0x8000000
195 #define FVSIF_NEWFILE 0x80000000
196 #define FVSIF_CANVIEWIT 0x40000000
197 #define CDBOSC_SETFOCUS 0
198 #define CDBOSC_KILLFOCUS 1
199 #define CDBOSC_SELCHANGE 2
200 #define CDBOSC_RENAME 3
201 #define FCIDM_SHVIEWFIRST 0
202 #define FCIDM_SHVIEWLAST 0x7fff
203 #define FCIDM_BROWSERFIRST 0xa000
204 #define FCIDM_BROWSERLAST 0xbf00
205 #define FCIDM_GLOBALFIRST 0x8000
206 #define FCIDM_GLOBALLAST 0x9fff
207 #define FCIDM_MENU_FILE FCIDM_GLOBALFIRST
208 #define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
209 #define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
210 #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
211 #define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
212 #define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
213 #define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
214 #define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
215 #define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
216 #define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170) 
217 #define FCIDM_TOOLBAR FCIDM_BROWSERFIRST
218 #define FCIDM_STATUS (FCIDM_BROWSERFIRST+1)
219 #define SBSP_DEFBROWSER 0
220 #define SBSP_SAMEBROWSER 1
221 #define SBSP_NEWBROWSER 2
222 #define SBSP_DEFMODE 0
223 #define SBSP_OPENMODE 16
224 #define SBSP_EXPLOREMODE 32
225 #define SBSP_ABSOLUTE 0
226 #define SBSP_RELATIVE 0x1000
227 #define SBSP_PARENT 0x2000
228 #define SBSP_INITIATEDBYHLINKFRAME 0x80000000
229 #define SBSP_REDIRECT 0x40000000
230 #define FCW_STATUS 1
231 #define FCW_TOOLBAR 2
232 #define FCW_TREE 3
233 #define FCT_MERGE 1
234 #define FCT_CONFIGABLE 2
235 #define FCT_ADDTOEND 4
236 #define SVSI_DESELECT 0
237 #define SVSI_SELECT 1
238 #define SVSI_EDIT 3
239 #define SVSI_DESELECTOTHERS 4
240 #define SVSI_ENSUREVISIBLE 8
241 #define SVSI_FOCUSED 16
242 #define SVGIO_BACKGROUND 0
243 #define SVGIO_SELECTION 1
244 #define SVGIO_ALLVIEW 2
245 #define SV2GV_CURRENTVIEW ((UINT)-1)
246 #define SV2GV_DEFAULTVIEW ((UINT)-2)
248 typedef struct _IDA {
249 UINT cidl;
250 UINT aoffset[1];
251 } CIDA,*LPIDA;
252 typedef struct _SHITEMID {
253 USHORT cb;
254 BYTE abID[1];
255 } SHITEMID, * LPSHITEMID;
256 typedef const SHITEMID *LPCSHITEMID;
257 typedef struct _ITEMIDLIST {
258 SHITEMID mkid;
259 } ITEMIDLIST,*LPITEMIDLIST;
260 typedef const ITEMIDLIST *LPCITEMIDLIST;
261 typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
262 typedef struct _browseinfoA {
263 HWND hwndOwner;
264 LPCITEMIDLIST pidlRoot;
265 LPSTR pszDisplayName;
266 LPCSTR lpszTitle;
267 UINT ulFlags;
268 BFFCALLBACK lpfn;
269 LPARAM lParam;
270 int iImage;
271 } BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
272 typedef struct _browseinfoW {
273 HWND hwndOwner;
274 LPCITEMIDLIST pidlRoot;
275 LPWSTR pszDisplayName;
276 LPCWSTR lpszTitle;
277 UINT ulFlags;
278 BFFCALLBACK lpfn;
279 LPARAM lParam;
280 int iImage;
281 } BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
282 typedef struct _CMInvokeCommandInfo {
283 DWORD cbSize;
284 DWORD fMask;
285 HWND hwnd;
286 LPCSTR lpVerb;
287 LPCSTR lpParameters;
288 LPCSTR lpDirectory;
289 int nShow;
290 DWORD dwHotKey;
291 HANDLE hIcon;
292 } CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
293 typedef struct _DROPFILES {
294 DWORD pFiles;
295 POINT pt;
296 BOOL fNC;
297 BOOL fWide;
298 } DROPFILES,*LPDROPFILES;
299 typedef enum tagSHGDN {
300 SHGDN_NORMAL=0,
301 SHGDN_INFOLDER,
302 SHGDN_FORPARSING=0x8000
303 } SHGNO;
304 typedef enum tagSHCONTF {
305 SHCONTF_FOLDERS=32,
306 SHCONTF_NONFOLDERS=64,
307 SHCONTF_INCLUDEHIDDEN=128
308 } SHCONTF;
309 typedef struct _STRRET {
310 UINT uType;
311 _ANONYMOUS_UNION union {
312 LPWSTR pOleStr;
313 UINT uOffset;
314 char cStr[MAX_PATH];
315 } DUMMYUNIONNAME;
316 } STRRET,*LPSTRRET;
317 typedef enum {
318 FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16,
319 FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000
320 } FD_FLAGS;
321 typedef struct _FILEDESCRIPTOR {
322 DWORD dwFlags;
323 CLSID clsid;
324 SIZEL sizel;
325 POINTL pointl;
326 DWORD dwFileAttributes;
327 FILETIME ftCreationTime;
328 FILETIME ftLastAccessTime;
329 FILETIME ftLastWriteTime;
330 DWORD nFileSizeHigh;
331 DWORD nFileSizeLow;
332 CHAR cFileName[MAX_PATH];
333 } FILEDESCRIPTOR,*LPFILEDESCRIPTOR;
334 typedef struct _FILEGROUPDESCRIPTOR {
335 UINT cItems;
336 FILEDESCRIPTOR fgd[1];
337 } FILEGROUPDESCRIPTOR,*LPFILEGROUPDESCRIPTOR;
338 typedef enum {
339 SLR_NO_UI=1,
340 SLR_ANY_MATCH=2,
341 SLR_UPDATE=4,
342 SLR_NOUPDATE=8,
343 SLR_NOSEARCH=16,
344 SLR_NOTRACK=32,
345 SLR_NOLINKINFO=64,
346 SLR_INVOKE_MSI=128
347 } SLR_FLAGS;
348 typedef enum {
349 SLGP_SHORTPATH=1,
350 SLGP_UNCPRIORITY
351 } SLGP_FLAGS;
352 typedef PBYTE LPVIEWSETTINGS;
353 typedef enum {
354 FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8,
355 FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128,
356 FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800,
357 FWF_SINGLECLICKACTIVATE=0x8000
358 } FOLDERFLAGS;
359 typedef enum {
360 FVM_ICON=1,
361 FVM_SMALLICON,
362 FVM_LIST,
363 FVM_DETAILS
364 } FOLDERVIEWMODE;
365 typedef struct {
366 UINT ViewMode;
367 UINT fFlags;
368 } FOLDERSETTINGS,*LPFOLDERSETTINGS;
369 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
370 typedef struct {
371 DWORD cbSize;
372 HWND hwndOwner;
373 int iShow;
374 DWORD dwFlags;
375 RECT rect;
376 LPUNKNOWN punkRel;
377 OLECHAR strNewFile[MAX_PATH];
378 } FVSHOWINFO,*LPFVSHOWINFO;
379 typedef struct _NRESARRAY {
380 UINT cItems;
381 NETRESOURCE nr[1];
382 } NRESARRAY, *LPNRESARRAY;
383 enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY };
384 enum {
385 SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION,
386 SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS
388 typedef enum {
389 SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS,
390 SVUIA_INPLACEACTIVATE
391 } SVUIA_STATUS;
393 DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
394 typedef IEnumIDList *LPENUMIDLIST;
396 #undef INTERFACE
397 #define INTERFACE IContextMenu
398 DECLARE_INTERFACE_(IContextMenu,IUnknown)
400 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
401 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
402 STDMETHOD_(ULONG,Release)(THIS) PURE;
403 STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
404 STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
405 STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
407 typedef IContextMenu *LPCONTEXTMENU;
409 #undef INTERFACE
410 #define INTERFACE IContextMenu2
411 DECLARE_INTERFACE_(IContextMenu2,IUnknown)
413 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
414 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
415 STDMETHOD_(ULONG,Release)(THIS) PURE;
416 STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
417 STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
418 STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
419 STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
421 typedef IContextMenu2 *LPCONTEXTMENU2;
423 #undef INTERFACE
424 #define INTERFACE IShellExtInit
425 DECLARE_INTERFACE_(IShellExtInit, IUnknown)
427 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
428 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
429 STDMETHOD_(ULONG,Release)(THIS) PURE;
430 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE;
432 typedef IShellExtInit *LPSHELLEXTINIT;
434 #undef INTERFACE
435 #define INTERFACE IShellPropSheetExt
436 DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
438 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
439 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
440 STDMETHOD_(ULONG,Release)(THIS) PURE;
441 STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE;
442 STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
444 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
446 #undef INTERFACE
447 #define INTERFACE IExtractIcon
448 DECLARE_INTERFACE_(IExtractIcon, IUnknown) /* exic */
450 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
451 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
452 STDMETHOD_(ULONG,Release)(THIS) PURE;
453 STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
454 STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
456 typedef IExtractIcon *LPEXTRACTICON;
458 #undef INTERFACE
459 #define INTERFACE IShellLinkA
460 DECLARE_INTERFACE_(IShellLinkA, IUnknown)
462 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
463 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
464 STDMETHOD_(ULONG,Release)(THIS) PURE;
465 STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE;
466 STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
467 STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
468 STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE;
469 STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE;
470 STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE;
471 STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE;
472 STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE;
473 STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE;
474 STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
475 STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
476 STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
477 STDMETHOD(SetShowCmd)(THIS_ int) PURE;
478 STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE;
479 STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE;
480 STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE;
481 STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
482 STDMETHOD(SetPath)(THIS_ LPCSTR) PURE;
484 #undef INTERFACE
485 #define INTERFACE IShellLinkW
486 DECLARE_INTERFACE_(IShellLinkW, IUnknown)
488 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
489 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
490 STDMETHOD_(ULONG,Release)(THIS) PURE;
491 STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAW*,DWORD) PURE;
492 STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
493 STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
494 STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE;
495 STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE;
496 STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE;
497 STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE;
498 STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE;
499 STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE;
500 STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
501 STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
502 STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
503 STDMETHOD(SetShowCmd)(THIS_ int) PURE;
504 STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE;
505 STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE;
506 STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE;
507 STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
508 STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE;
511 #undef INTERFACE
512 #define INTERFACE IShellFolder
513 DECLARE_INTERFACE_(IShellFolder, IUnknown)
515 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
516 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
517 STDMETHOD_(ULONG,Release)(THIS) PURE;
518 STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
519 STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
520 STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
521 STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
522 STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
523 STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
524 STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
525 STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
526 STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
527 STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
529 typedef IShellFolder *LPSHELLFOLDER;
531 #undef INTERFACE
532 #define INTERFACE ICopyHook
533 DECLARE_INTERFACE_(ICopyHook, IUnknown)
535 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
536 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
537 STDMETHOD_(ULONG,Release)(THIS) PURE;
538 STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE;
540 typedef ICopyHook *LPCOPYHOOK;
542 #undef INTERFACE
543 #define INTERFACE IFileViewerSite
544 DECLARE_INTERFACE(IFileViewerSite)
546 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
547 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
548 STDMETHOD_(ULONG,Release)(THIS) PURE;
549 STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE;
550 STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE;
552 typedef IFileViewerSite *LPFILEVIEWERSITE;
554 #undef INTERFACE
555 #define INTERFACE IFileViewer
556 DECLARE_INTERFACE(IFileViewer)
558 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
559 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
560 STDMETHOD_(ULONG,Release)(THIS) PURE;
561 STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE;
562 STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE;
563 STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE;
565 typedef IFileViewer *LPFILEVIEWER;
567 #undef INTERFACE
568 #define INTERFACE ICommDlgBrowser
569 DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
571 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
572 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
573 STDMETHOD_(ULONG,Release)(THIS) PURE;
574 STDMETHOD(OnDefaultCommand)(THIS) PURE;
575 STDMETHOD(OnStateChange)(THIS_ ULONG) PURE;
576 STDMETHOD(IncludeObject)(THIS_ LPCITEMIDLIST) PURE;
578 typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
580 #undef INTERFACE
581 #define INTERFACE IPersistFolder
582 DECLARE_INTERFACE_(IPersistFolder,IPersist)
584 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
585 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
586 STDMETHOD_(ULONG,Release)(THIS) PURE;
587 STDMETHOD(GetClassID)(THIS_ CLSID) PURE;
588 STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
590 typedef IPersistFolder *LPPERSISTFOLDER;
592 typedef interface IShellBrowser *LPSHELLBROWSER;
593 typedef interface IShellView *LPSHELLVIEW;
595 #undef INTERFACE
596 #define INTERFACE IShellBrowser
597 DECLARE_INTERFACE_(IShellBrowser,IOleWindow)
599 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
600 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
601 STDMETHOD_(ULONG,Release)(THIS) PURE;
602 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
603 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
604 STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
605 STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE;
606 STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE;
607 STDMETHOD(SetStatusTextSB) (THIS_ LPCOLESTR) PURE;
608 STDMETHOD(EnableModelessSB) (THIS_ BOOL ) PURE;
609 STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE;
610 STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE;
611 STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE;
612 STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE;
613 STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE;
614 STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE;
615 STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE;
616 STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE;
619 #undef INTERFACE
620 #define INTERFACE IShellView
621 DECLARE_INTERFACE_(IShellView,IOleWindow)
624 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
625 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
626 STDMETHOD_(ULONG,Release)(THIS) PURE;
627 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
628 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
629 STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
630 #ifdef _FIX_ENABLEMODELESS_CONFLICT
631 STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
632 #else
633 STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
634 #endif
635 STDMETHOD(UIActivate)(THIS_ UINT) PURE;
636 STDMETHOD(Refresh) (THIS) PURE;
637 STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
638 STDMETHOD(DestroyViewWindow)(THIS) PURE;
639 STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
640 STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
641 STDMETHOD(SaveViewState)(THIS) PURE;
642 STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
643 STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
645 typedef GUID SHELLVIEWID;
646 typedef struct _SV2CVW2_PARAMS {
647 DWORD cbSize;
648 IShellView *psvPrev;
649 FOLDERSETTINGS const *pfs;
650 IShellBrowser *psbOwner;
651 RECT *prcView;
652 SHELLVIEWID const *pvid;
653 HWND hwndView;
654 } SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS;
655 #undef INTERFACE
656 #define INTERFACE IShellView2
657 DECLARE_INTERFACE_(IShellView2,IShellView)
660 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
661 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
662 STDMETHOD_(ULONG,Release)(THIS) PURE;
663 STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
664 STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
665 STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
666 #ifdef _FIX_ENABLEMODELESS_CONFLICT
667 STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
668 #else
669 STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
670 #endif
671 STDMETHOD(UIActivate)(THIS_ UINT) PURE;
672 STDMETHOD(Refresh) (THIS) PURE;
673 STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
674 STDMETHOD(DestroyViewWindow)(THIS) PURE;
675 STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
676 STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
677 STDMETHOD(SaveViewState)(THIS) PURE;
678 STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
679 STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
680 STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
681 STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
684 #undef INTERFACE
685 #define INTERFACE IShellExecuteHookA
686 DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)
688 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
689 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
690 STDMETHOD_(ULONG,Release)(THIS) PURE;
691 STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE;
693 #undef INTERFACE
694 #define INTERFACE IShellExecuteHookW
695 DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)
697 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
698 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
699 STDMETHOD_(ULONG,Release)(THIS) PURE;
700 STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE;
703 #undef INTERFACE
704 #define INTERFACE IShellIcon
705 DECLARE_INTERFACE_(IShellIcon,IUnknown)
707 STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
708 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
709 STDMETHOD_(ULONG,Release)(THIS) PURE;
710 STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE;
712 typedef IShellIcon *LPSHELLICON;
714 void WINAPI SHAddToRecentDocs(UINT,PCVOID);
715 LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA);
716 LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW);
717 void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
718 HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
719 HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
720 HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*);
721 HRESULT WINAPI SHGetInstanceExplorer(LPUNKNOWN);
722 HRESULT WINAPI SHGetMalloc(LPMALLOC*);
723 BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
724 BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
725 HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
726 HRESULT WINAPI SHLoadInProc(REFCLSID);
727 /* FIXME/TODO: Only valid for _WIN32_IE >= 400? */
728 BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL);
729 BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPSTR,int,BOOL);
731 #ifdef UNICODE
732 typedef IShellExecuteHookW IShellExecuteHook;
733 typedef IShellLinkW IShellLink;
734 typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
735 #define SHBrowseForFolder SHBrowseForFolderW
736 #define SHGetDataFromIDList SHGetDataFromIDListW
737 #define SHGetPathFromIDList SHGetPathFromIDListW
738 /* FIXME/TODO: Only valid for _WIN32_IE >= 400? */
739 #define SHGetSpecialFolderPath SHGetSpecialFolderPathW
740 #else
741 typedef IShellExecuteHookA IShellExecuteHook;
742 typedef IShellLinkA IShellLink;
743 typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
744 #define SHBrowseForFolder SHBrowseForFolderA
745 #define SHGetDataFromIDList SHGetDataFromIDListA
746 #define SHGetPathFromIDList SHGetPathFromIDListA
747 /* FIXME/TODO: Only valid for _WIN32_IE >= 400? */
748 #define SHGetSpecialFolderPath SHGetSpecialFolderPathA
749 #endif
751 #pragma pack(pop)
752 #ifdef __cplusplus
754 #endif
757 #endif /* _SHLOBJ_H */