/* $Revision: 1.2 $ */ #ifndef _SHLOBJ_H_ #define _SHLOBJ_H_ #define WINSHELLAPI #include #include #include #ifndef INITGUID #include #endif #ifndef RC_INVOKED #pragma pack(push,1) #endif #ifndef _GNU_H_WIN32Headers typedef struct _SHITEMID { USHORT cb; BYTE abID[1]; } SHITEMID,* LPSHITEMID; typedef const SHITEMID * LPCSHITEMID; typedef struct _ITEMIDLIST { SHITEMID mkid; } ITEMIDLIST,* LPITEMIDLIST; typedef const ITEMIDLIST * LPCITEMIDLIST; #endif WINSHELLAPI HRESULT WINAPI SHGetMalloc(LPMALLOC * ppMalloc); #undef INTERFACE #define INTERFACE IContextMenu #define CMF_NORMAL 0 #define CMF_DEFAULTONLY 1 #define CMF_VERBSONLY 2 #define CMF_EXPLORE 4 #define CMF_RESERVED 0xffff0000 #define GCS_VERB 0 #define GCS_HELPTEXT 1 #define GCS_VALIDATE 2 #define CMDSTR_NEWFOLDER "NewFolder" #define CMDSTR_VIEWLIST "ViewList" #define CMDSTR_VIEWDETAILS "ViewDetails" #define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY #define CMIC_MASK_ICON SEE_MASK_ICON #define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI #define CMIC_MASK_MODAL 0x80000000 #define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS #ifndef _GNU_H_WIN32Headers typedef struct _CMInvokeCommandInfo { DWORD cbSize; DWORD fMask; HWND hwnd; LPCSTR lpVerb; LPCSTR lpParameters; LPCSTR lpDirectory; int nShow; DWORD dwHotKey; HANDLE hIcon; } CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO; #endif #undef INTERFACE #define INTERFACE IContextMenu DECLARE_INTERFACE_(IContextMenu, IUnknown) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(QueryContextMenu)(INTERFACE *,HMENU,UINT,UINT,UINT,UINT); STDMETHOD(InvokeCommand)(INTERFACE *,LPCMINVOKECOMMANDINFO); STDMETHOD(GetCommandString)(INTERFACE *,UINT,UINT,UINT *,LPSTR,UINT); }; typedef IContextMenu * LPCONTEXTMENU; #undef INTERFACE #define INTERFACE IShellExtInit DECLARE_INTERFACE_(IShellExtInit, IUnknown) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(Initialize)(INTERFACE *,LPCITEMIDLIST,LPDATAOBJECT,HKEY); }; typedef IShellExtInit * LPSHELLEXTINIT; #undef INTERFACE #define INTERFACE IShellPropSheetExt DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(AddPages)(INTERFACE *,LPFNADDPROPSHEETPAGE,LPARAM); STDMETHOD(ReplacePage)(INTERFACE *,UINT,LPFNADDPROPSHEETPAGE,LPARAM); }; typedef IShellPropSheetExt * LPSHELLPROPSHEETEXT; #undef INTERFACE #define INTERFACE IExtractIcon #define GIL_OPENICON 1 #define GIL_FORSHELL 2 #define GIL_SIMULATEDOC 1 #define GIL_PERINSTANCE 2 #define GIL_PERCLASS 4 #define GIL_NOTFILENAME 8 #define GIL_DONTCACHE 16 DECLARE_INTERFACE_(IExtractIcon, IUnknown) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(GetIconLocation)(INTERFACE *,UINT,LPSTR,UINT,int *,UINT *); STDMETHOD(Extract)(INTERFACE *,LPCSTR,UINT,HICON *,HICON *,UINT); }; typedef IExtractIcon * LPEXTRACTICON; typedef enum { SLR_NO_UI= 1,SLR_ANY_MATCH= 2,SLR_UPDATE = 4} SLR_FLAGS; typedef enum { SLGP_SHORTPATH= 1,SLGP_UNCPRIORITY= 2 } SLGP_FLAGS; #undef INTERFACE #define INTERFACE IShellLink DECLARE_INTERFACE_(IShellLink, IUnknown) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(GetPath)(INTERFACE *,LPSTR,int,WIN32_FIND_DATA *,DWORD); STDMETHOD(GetIDList)(INTERFACE *,LPITEMIDLIST *); STDMETHOD(SetIDList)(INTERFACE *,LPCITEMIDLIST); STDMETHOD(GetDescription)(INTERFACE *,LPSTR,int); STDMETHOD(SetDescription)(INTERFACE *,LPCSTR); STDMETHOD(GetWorkingDirectory)(INTERFACE *,LPSTR,int); STDMETHOD(SetWorkingDirectory)(INTERFACE *,LPCSTR); STDMETHOD(GetArguments)(INTERFACE *,LPSTR,int); STDMETHOD(SetArguments)(INTERFACE *,LPCSTR); STDMETHOD(GetHotkey)(INTERFACE *,WORD *); STDMETHOD(SetHotkey)(INTERFACE *,WORD); STDMETHOD(GetShowCmd)(INTERFACE *,int *); STDMETHOD(SetShowCmd)(INTERFACE *,int); STDMETHOD(GetIconLocation)(INTERFACE *,LPSTR,int,int *); STDMETHOD(SetIconLocation)(INTERFACE *,LPCSTR,int); STDMETHOD(SetRelativePath)(INTERFACE *,LPCSTR,DWORD); STDMETHOD(Resolve)(INTERFACE *,HWND,DWORD); STDMETHOD(SetPath)(INTERFACE *,LPCSTR); }; #undef INTERFACE #define INTERFACE ICopyHook #ifndef FO_MOVE #define FO_MOVE 0x0001 #define FO_COPY 0x0002 #define FO_DELETE 0x0003 #define FO_RENAME 0x0004 #define FOF_MULTIDESTFILES 0x0001 #define FOF_CONFIRMMOUSE 0x0002 #define FOF_SILENT 0x0004 #define FOF_RENAMEONCOLLISION 0x0008 #define FOF_NOCONFIRMATION 0x0010 #define FOF_WANTMAPPINGHANDLE 0x0020 #define FOF_ALLOWUNDO 0x0040 #define FOF_FILESONLY 0x0080 #define FOF_SIMPLEPROGRESS 0x0100 #define FOF_NOCONFIRMMKDIR 0x0200 #ifndef _GNU_H_WIN32Headers typedef UINT FILEOP_FLAGS; #endif #define PO_DELETE 0x13 #define PO_RENAME 0x14 #define PO_PORTCHANGE 0x20 #define PO_REN_PORT 0x34 typedef UINT PRINTEROP_FLAGS; #endif DECLARE_INTERFACE_(ICopyHook, IUnknown) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD_(UINT,CopyCallback) (INTERFACE *,HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD); }; typedef ICopyHook * LPCOPYHOOK; #undef INTERFACE #define INTERFACE IFileViewerSite DECLARE_INTERFACE(IFileViewerSite) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(SetPinnedWindow) (INTERFACE *,HWND); STDMETHOD(GetPinnedWindow) (INTERFACE *,HWND *); }; typedef IFileViewerSite * LPFILEVIEWERSITE; #undef INTERFACE #define INTERFACE IFileViewer typedef struct { DWORD cbSize; HWND hwndOwner; int iShow; DWORD dwFlags; RECT rect; LPUNKNOWN punkRel; OLECHAR strNewFile[MAX_PATH]; } FVSHOWINFO,*LPFVSHOWINFO; #define FVSIF_RECT 0x00000001 #define FVSIF_PINNED 0x00000002 #define FVSIF_NEWFAILED 0x08000000 #define FVSIF_NEWFILE 0x80000000 #define FVSIF_CANVIEWIT 0x40000000 DECLARE_INTERFACE(IFileViewer) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(ShowInitialize) (INTERFACE *,LPFILEVIEWERSITE); STDMETHOD(Show) (INTERFACE *,LPFVSHOWINFO); STDMETHOD(PrintTo) (INTERFACE *,LPSTR,BOOL); }; typedef IFileViewer * LPFILEVIEWER; #define STRRET_WSTR 0 #define STRRET_OFFSET 1 #define STRRET_CSTR 2 #ifndef _GNU_H_WIN32Headers typedef struct _STRRET { UINT uType; union { LPWSTR pOleStr; UINT uOffset; char cStr[MAX_PATH]; } DUMMYUNIONNAME; } STRRET,*LPSTRRET; #endif WINSHELLAPI BOOL WINAPI SHGetPathFromIDList(LPCITEMIDLIST pidl,LPSTR pszPath); #define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER "\\Shell Folders" #define CSIDL_DESKTOP 0 #define CSIDL_PROGRAMS 2 #define CSIDL_CONTROLS 3 #define CSIDL_PRINTERS 4 #define CSIDL_PERSONAL 5 #define CSIDL_FAVORITES 6 #define CSIDL_STARTUP 7 #define CSIDL_RECENT 8 #define CSIDL_SENDTO 9 #define CSIDL_BITBUCKET 10 #define CSIDL_STARTMENU 11 #define CSIDL_DESKTOPDIRECTORY 16 #define CSIDL_DRIVES 17 #define CSIDL_NETWORK 18 #define CSIDL_NETHOOD 19 #define CSIDL_FONTS 20 #define CSIDL_TEMPLATES 21 WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner,int nFolder,LPITEMIDLIST * ppidl); #ifndef _GNU_H_WIN32Headers typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM); typedef struct _browseinfo { HWND hwndOwner; LPCITEMIDLIST pidlRoot; LPSTR pszDisplayName; LPCSTR lpszTitle; UINT ulFlags; BFFCALLBACK lpfn; LPARAM lParam; int iImage; } BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; #endif #define BIF_RETURNONLYFSDIRS 1 #define BIF_DONTGOBELOWDOMAIN 2 #define BIF_STATUSTEXT 4 #define BIF_RETURNFSANCESTORS 8 #define BIF_BROWSEFORCOMPUTER 0x1000 #define BIF_BROWSEFORPRINTER 0x2000 #define BFFM_INITIALIZED 1 #define BFFM_SELCHANGED 2 #define BFFM_SETSTATUSTEXT (WM_USER + 100) #define BFFM_ENABLEOK (WM_USER + 101) #define BFFM_SETSELECTION (WM_USER + 102) WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(LPBROWSEINFO lpbi); WINSHELLAPI HRESULT WINAPI SHLoadInProc(REFCLSID rclsid); typedef struct IEnumIDList *LPENUMIDLIST; #undef INTERFACE #define INTERFACE IEnumIDList DECLARE_INTERFACE_(IEnumIDList, IUnknown) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(Next) (INTERFACE *,ULONG,LPITEMIDLIST *,ULONG *); STDMETHOD(Skip) (INTERFACE *,ULONG); STDMETHOD(Reset) (THIS); STDMETHOD(Clone) (INTERFACE *,IEnumIDList **); }; #undef INTERFACE #define INTERFACE IShellFolder #ifndef _GNU_H_WIN32Headers typedef enum tagSHGDN {SHGDN_NORMAL= 0,SHGDN_INFOLDER= 1,SHGDN_FORPARSING = 0x8000 } SHGNO; typedef enum tagSHCONTF {SHCONTF_FOLDERS = 32,SHCONTF_NONFOLDERS=64,SHCONTF_INCLUDEHIDDEN= 128} SHCONTF; #endif #define SFGAO_CANCOPY DROPEFFECT_COPY #define SFGAO_CANMOVE DROPEFFECT_MOVE #define SFGAO_CANLINK DROPEFFECT_LINK #define SFGAO_CANRENAME 0x10L #define SFGAO_CANDELETE 0x20L #define SFGAO_HASPROPSHEET 0x40L #define SFGAO_DROPTARGET 0x100L #define SFGAO_CAPABILITYMASK 0x177L #define SFGAO_LINK 0x10000L #define SFGAO_SHARE 0x20000L #define SFGAO_READONLY 0x40000L #define SFGAO_GHOSTED 0x80000L #define SFGAO_DISPLAYATTRMASK 0xF0000L #define SFGAO_FILESYSANCESTOR 0x10000000L #define SFGAO_FOLDER 0x20000000L #define SFGAO_FILESYSTEM 0x40000000L #define SFGAO_HASSUBFOLDER 0x80000000L #define SFGAO_CONTENTSMASK 0x80000000L #define SFGAO_VALIDATE 0x01000000L #define SFGAO_REMOVABLE 0x02000000L DECLARE_INTERFACE_(IShellFolder, IUnknown) { STDMETHOD(QueryInterface) (INTERFACE *,REFIID,LPVOID *); STDMETHOD_(ULONG,AddRef) (THIS); STDMETHOD_(ULONG,Release) (THIS); STDMETHOD(ParseDisplayName) (INTERFACE *,HWND,LPBC,LPOLESTR,ULONG *,LPITEMIDLIST *,ULONG *); STDMETHOD(EnumObjects) (INTERFACE *,HWND,DWORD,LPENUMIDLIST *); STDMETHOD(BindToObject) (INTERFACE *,LPCITEMIDLIST,LPBC,REFIID,LPVOID *); STDMETHOD(BindToStorage) (INTERFACE *,LPCITEMIDLIST,LPBC,REFIID,LPVOID *); STDMETHOD(CompareIDs) (INTERFACE *,LPARAM,LPCITEMIDLIST,LPCITEMIDLIST); STDMETHOD(CreateViewObject) (INTERFACE *,HWND,REFIID,LPVOID *); STDMETHOD(GetAttributesOf) (INTERFACE *,UINT,LPCITEMIDLIST *,ULONG *); STDMETHOD(GetUIObjectOf) (INTERFACE *,HWND,UINT,LPCITEMIDLIST *,REFIID,UINT *,LPVOID *); STDMETHOD(GetDisplayNameOf) (INTERFACE *,LPCITEMIDLIST,DWORD,LPSTRRET); STDMETHOD(SetNameOf) (INTERFACE *,HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST *); }; typedef IShellFolder * LPSHELLFOLDER; WINSHELLAPI HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER *ppshf); #define CFSTR_SHELLIDLIST "Shell IDList Array" #define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets" #define CFSTR_NETRESOURCES "Net Resource" #define CFSTR_FILEDESCRIPTOR "FileGroupDescriptor" #define CFSTR_FILECONTENTS "FileContents" #define CFSTR_FILENAME "FileName" #define CFSTR_PRINTERGROUP "PrinterFriendlyName" #define CFSTR_FILENAMEMAP "FileNameMap" #define DVASPECT_SHORTNAME 2 typedef struct _NRESARRAY { UINT cItems; NETRESOURCE nr[1]; } NRESARRAY,* LPNRESARRAY; #ifndef _GNU_H_WIN32Headers typedef struct _IDA { UINT cidl; UINT aoffset[1]; } CIDA,* LPIDA; #endif typedef enum { FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES= 4, FD_CREATETIME = 8,FD_ACCESSTIME = 16,FD_WRITESTIME = 32, FD_FILESIZE= 64,FD_LINKUI= 0x8000 } FD_FLAGS; typedef struct _FILEDESCRIPTOR { DWORD dwFlags; CLSID clsid; SIZEL sizel; POINTL pointl; DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; CHAR cFileName[ MAX_PATH ]; } FILEDESCRIPTOR,*LPFILEDESCRIPTOR; typedef struct _FILEGROUPDESCRIPTOR { UINT cItems; FILEDESCRIPTOR fgd[1]; } FILEGROUPDESCRIPTOR,* LPFILEGROUPDESCRIPTOR; typedef struct _DROPFILES { DWORD pFiles; POINT pt; BOOL fNC; BOOL fWide; } DROPFILES,FAR * LPDROPFILES; #define SHCNE_RENAMEITEM 1 #define SHCNE_CREATE 2 #define SHCNE_DELETE 4 #define SHCNE_MKDIR 8 #define SHCNE_RMDIR 16 #define SHCNE_MEDIAINSERTED 0x20L #define SHCNE_MEDIAREMOVED 0x40L #define SHCNE_DRIVEREMOVED 0x80L #define SHCNE_DRIVEADD 0x100L #define SHCNE_NETSHARE 0x200L #define SHCNE_NETUNSHARE 0x400L #define SHCNE_ATTRIBUTES 0x800L #define SHCNE_UPDATEDIR 0x1000L #define SHCNE_UPDATEITEM 0x2000L #define SHCNE_SERVERDISCONNECT 0x4000L #define SHCNE_UPDATEIMAGE 0x8000L #define SHCNE_DRIVEADDGUI 0x10000L #define SHCNE_RENAMEFOLDER 0x20000L #define SHCNE_FREESPACE 0x40000L #define SHCNE_ASSOCCHANGED 0x08000000L #define SHCNE_DISKEVENTS 0x2381FL #define SHCNE_GLOBALEVENTS 0xC0581E0L #define SHCNE_ALLEVENTS 0x7FFFFFFFL #define SHCNE_INTERRUPT 0x80000000L #define SHCNF_IDLIST 0 #define SHCNF_PATH 1 #define SHCNF_PRINTER 2 #define SHCNF_DWORD 3 #define SHCNF_TYPE 0xFF #define SHCNF_FLUSH 0x1000 #define SHCNF_FLUSHNOWAIT 0x2000 WINSHELLAPI void WINAPI SHChangeNotify(LONG,UINT,LPCVOID,LPCVOID); #define SHARD_PIDL 1 #define SHARD_PATH 2 WINSHELLAPI void WINAPI SHAddToRecentDocs(UINT uFlags,LPCVOID pv); WINSHELLAPI HRESULT WINAPI SHGetInstanceExplorer(IUnknown **ppunk); #ifndef RC_INVOKED #pragma pack(pop) #endif #endif