/* * COM interfaces for shell objects * * Copyright (C) 1999 Juergen Schmied * Copyright (C) 2003 Alexandre Julliard * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import "objidl.idl"; import "oleidl.idl"; import "oaidl.idl"; import "shtypes.idl"; import "servprov.idl"; import "comcat.idl"; /*import "propidl.idl";*/ /*import "prsht.idl";*/ /*import "msxml.idl";*/ /***************************************************************************** * IPersistFolder interface */ [ object, uuid(000214ea-0000-0000-c000-000000000046), pointer_default(unique) ] interface IPersistFolder : IPersist { typedef IPersistFolder *LPPERSISTFOLDER; HRESULT Initialize( [in] LPCITEMIDLIST pidl ); } /***************************************************************************** * IPersistFolder2 interface */ [ object, uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f), pointer_default(unique) ] interface IPersistFolder2 : IPersistFolder { typedef IPersistFolder2 *LPPERSISTFOLDER2; HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl ); } /***************************************************************************** * IEnumIDList interface */ [ object, uuid(000214f2-0000-0000-c000-000000000046), pointer_default(unique) ] interface IEnumIDList : IUnknown { typedef IEnumIDList *LPENUMIDLIST; HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt, [out] ULONG *pceltFetched); HRESULT Skip( [in] ULONG celt ); HRESULT Reset(); HRESULT Clone( [out] IEnumIDList **ppenum ); } /***************************************************************************** * IShellFolder interface */ [ object, uuid(000214e6-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellFolder : IUnknown { typedef IShellFolder * LPSHELLFOLDER; typedef enum tagSHGDN { SHGDN_NORMAL = 0, SHGDN_INFOLDER = 1, SHGDN_FOREDITING = 0x1000, SHGDN_INCLUDE_NONFILESYS = 0x2000, SHGDN_FORADDRESSBAR = 0x4000, SHGDN_FORPARSING = 0x8000 } SHGNO; typedef DWORD SHGDNF; enum tagSHCONTF { SHCONTF_FOLDERS = 32, SHCONTF_NONFOLDERS = 64, SHCONTF_INCLUDEHIDDEN = 128, SHCONTF_INIT_ON_FIRST_NEXT = 256, SHCONTF_NETPRINTERSRCH = 512, SHCONTF_SHAREABLE = 1024, SHCONTF_STORAGE = 2048 }; typedef DWORD SHCONTF; cpp_quote("#define SFGAO_CANCOPY DROPEFFECT_COPY") cpp_quote("#define SFGAO_CANMOVE DROPEFFECT_MOVE") cpp_quote("#define SFGAO_CANLINK DROPEFFECT_LINK") cpp_quote("#define SFGAO_CANRENAME 0x00000010L") cpp_quote("#define SFGAO_CANDELETE 0x00000020L") cpp_quote("#define SFGAO_HASPROPSHEET 0x00000040L") cpp_quote("#define SFGAO_DROPTARGET 0x00000100L") cpp_quote("#define SFGAO_CAPABILITYMASK 0x00000177L") cpp_quote("#define SFGAO_LINK 0x00010000L") cpp_quote("#define SFGAO_SHARE 0x00020000L") cpp_quote("#define SFGAO_READONLY 0x00040000L") cpp_quote("#define SFGAO_GHOSTED 0x00080000L") cpp_quote("#define SFGAO_HIDDEN 0x00080000L") cpp_quote("#define SFGAO_DISPLAYATTRMASK 0x000F0000L") cpp_quote("#define SFGAO_FILESYSANCESTOR 0x10000000L") cpp_quote("#define SFGAO_FOLDER 0x20000000L") cpp_quote("#define SFGAO_FILESYSTEM 0x40000000L") cpp_quote("#define SFGAO_HASSUBFOLDER 0x80000000L") cpp_quote("#define SFGAO_CONTENTSMASK 0x80000000L") cpp_quote("#define SFGAO_VALIDATE 0x01000000L") cpp_quote("#define SFGAO_REMOVABLE 0x02000000L") cpp_quote("#define SFGAO_COMPRESSED 0x04000000L") cpp_quote("#define SFGAO_BROWSABLE 0x08000000L") cpp_quote("#define SFGAO_NONENUMERATED 0x00100000L") cpp_quote("#define SFGAO_NEWCONTENT 0x00200000L") typedef ULONG SFGAOF; HRESULT ParseDisplayName( [in] HWND hwndOwner, [in] LPBC pbcReserved, [in, string] LPOLESTR lpszDisplayName, [out] ULONG *pchEaten, [out] LPITEMIDLIST *ppidl, [in, out, unique] ULONG *pdwAttributes); HRESULT EnumObjects( [in] HWND hwndOwner, [in] SHCONTF grfFlags, [out] IEnumIDList **ppenumIDList); HRESULT BindToObject( [in] LPCITEMIDLIST pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut); HRESULT BindToStorage( [in] LPCITEMIDLIST pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvObj); HRESULT CompareIDs( [in] LPARAM lParam, [in] LPCITEMIDLIST pidl1, [in] LPCITEMIDLIST pidl2); HRESULT CreateViewObject( [in] HWND hwndOwner, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut); HRESULT GetAttributesOf( [in] UINT cidl, [in, size_is(cidl)] LPCITEMIDLIST *apidl, [in, out] SFGAOF *rgfInOut); HRESULT GetUIObjectOf( [in] HWND hwndOwner, [in] UINT cidl, [in, size_is(cidl)] LPCITEMIDLIST *apidl, [in] REFIID riid, [in, out, unique] UINT *prgfInOut, [out, iid_is(riid)] void **ppvOut); HRESULT GetDisplayNameOf( [in] LPCITEMIDLIST pidl, [in] SHGDNF uFlags, [out] STRRET *lpName); HRESULT SetNameOf( [in] HWND hwnd, [in] LPCITEMIDLIST pidl, [in, string] LPCOLESTR lpszName, [in] SHGDNF uFlags, [out] LPITEMIDLIST *ppidlOut); } /***************************************************************************** * IEnumExtraSearch interface */ [ object, uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13), pointer_default(unique) ] interface IEnumExtraSearch : IUnknown { typedef IEnumExtraSearch *LPENUMEXTRASEARCH; typedef struct { GUID guidSearch; WCHAR wszFriendlyName[80]; /* *WCHAR wszMenuText[80]; *WCHAR wszHelpText[MAX_PATH]; */ WCHAR wszUrl[2084]; /* *WCHAR wszIcon[MAX_PATH+10]; *WCHAR wszGreyIcon[MAX_PATH+10]; *WCHAR wszClrIcon[MAX_PATH+10]; */ } EXTRASEARCH, *LPEXTRASEARCH; HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt, [out] ULONG *pceltFetched); HRESULT Skip( [in] ULONG celt ); HRESULT Reset(); HRESULT Clone( [out] IEnumExtraSearch **ppenum ); } /***************************************************************************** * IShellFolder2 interface */ [ object, uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1), pointer_default(unique) ] interface IShellFolder2 : IShellFolder { typedef enum { SHCOLSTATE_TYPE_STR = 0x00000001, SHCOLSTATE_TYPE_INT = 0x00000002, SHCOLSTATE_TYPE_DATE = 0x00000003, SHCOLSTATE_TYPEMASK = 0x0000000f, SHCOLSTATE_ONBYDEFAULT = 0x00000010, SHCOLSTATE_SLOW = 0x00000020, SHCOLSTATE_EXTENDED = 0x00000040, SHCOLSTATE_SECONDARYUI = 0x00000080, SHCOLSTATE_HIDDEN = 0x00000100, SHCOLSTATE_PREFER_VARCMP = 0x00000200 } SHCOLSTATE; typedef DWORD SHCOLSTATEF; typedef struct { GUID fmtid; DWORD pid; } SHCOLUMNID, *LPSHCOLUMNID; typedef const SHCOLUMNID *LPCSHCOLUMNID; HRESULT GetDefaultSearchGUID( [out] GUID *lpguid ); HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum ); HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay ); HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags ); HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv); HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd); HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid ); } /***************************************************************************** * FOLDERSETTINGS */ typedef char *LPVIEWSETTINGS; typedef enum { FWF_AUTOARRANGE = 0x00000001, FWF_ABBREVIATEDNAMES = 0x00000002, FWF_SNAPTOGRID = 0x00000004, FWF_OWNERDATA = 0x00000008, FWF_BESTFITWINDOW = 0x00000010, FWF_DESKTOP = 0x00000020, FWF_SINGLESEL = 0x00000040, FWF_NOSUBFOLDERS = 0x00000080, FWF_TRANSPARENT = 0x00000100, FWF_NOCLIENTEDGE = 0x00000200, FWF_NOSCROLL = 0x00000400, FWF_ALIGNLEFT = 0x00000800, FWF_NOICONS = 0x00001000, FWF_SHOWSELALWAYS = 0x00002000, FWF_NOVISIBLE = 0x00004000, FWF_SINGLECLICKACTIVATE = 0x00008000, FWF_NOWEBVIEW = 0x00010000, FWF_HIDEFILENAMES = 0x00020000, FWF_CHECKSELECT = 0x00040000 } FOLDERFLAGS; typedef enum { FVM_ICON = 1, FVM_FIRST = FVM_ICON, FVM_SMALLICON = 2, FVM_LIST = 3, FVM_DETAILS = 4, FVM_THUMBNAIL = 5, FVM_TILE = 6, FVM_THUMBSTRIP = 7, FVM_LAST = FVM_THUMBSTRIP } FOLDERVIEWMODE; typedef struct { UINT ViewMode; UINT fFlags; } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS; typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS; /***************************************************************************** * IShellView interface */ interface IShellBrowser; /* forward declaration */ [ object, uuid(000214e3-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellView : IOleWindow { typedef IShellView *LPSHELLVIEW; cpp_quote("#define SVSI_DESELECT 0x00000000") cpp_quote("#define SVSI_SELECT 0x00000001") cpp_quote("#define SVSI_EDIT 0x00000003") cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004") cpp_quote("#define SVSI_ENSUREVISIBLE 0x00000008") cpp_quote("#define SVSI_FOCUSED 0x00000010") cpp_quote("#define SVSI_TRANSLATEPT 0x00000020") cpp_quote("#define SVSI_SELECTIONMARK 0x00000040") cpp_quote("#define SVSI_POSITIONITEM 0x00000080") cpp_quote("#define SVSI_CHECK 0x00000100") cpp_quote("#define SVSI_NOSTATECHANGE 0x80000000") typedef UINT SVSIF; typedef enum { SVGIO_BACKGROUND = 0x00000000, SVGIO_SELECTION = 0x00000001, SVGIO_ALLVIEW = 0x00000002, SVGIO_CHECKED = 0x00000003, SVGIO_TYPE_MASK = 0x0000000f, SVGIO_FLAG_VIEWORDER = 0x80000000, } SVGIO; typedef enum { SVUIA_DEACTIVATE = 0, SVUIA_ACTIVATE_NOFOCUS = 1, SVUIA_ACTIVATE_FOCUS = 2, SVUIA_INPLACEACTIVATE = 3 } SVUIA_STATUS; cpp_quote("#if 0") typedef LPARAM LPFNSVADDPROPSHEETPAGE; cpp_quote("#else") cpp_quote("#include ") cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;") cpp_quote("#endif") HRESULT TranslateAccelerator( [in] MSG *pmsg ); HRESULT EnableModeless( [in] BOOL fEnable ); HRESULT UIActivate( [in] UINT uState ); HRESULT Refresh(); HRESULT CreateViewWindow( [in] IShellView *psvPrevious, [in] LPCFOLDERSETTINGS lpfs, [in] IShellBrowser *psb, [out] RECT *prcView, [out] HWND *phWnd); HRESULT DestroyViewWindow(); HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs ); [local] HRESULT AddPropertySheetPages( [in] DWORD dwReserved, [in] LPFNSVADDPROPSHEETPAGE pfn, [in] LPARAM lparam); HRESULT SaveViewState(); HRESULT SelectItem( [in] LPCITEMIDLIST pidlItem, [in] SVSIF uFlags); HRESULT GetItemObject( [in] UINT uItem, [in] REFIID riid, [out, iid_is(riid)] void **ppv); } /***************************************************************************** * IShellBrowser interface */ [ object, uuid(000214e2-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellBrowser : IOleWindow { typedef IShellBrowser *LPSHELLBROWSER; cpp_quote("#define SBSP_DEFBROWSER 0x00000000") cpp_quote("#define SBSP_SAMEBROWSER 0x00000001") cpp_quote("#define SBSP_NEWBROWSER 0x00000002") cpp_quote("#define SBSP_DEFMODE 0x00000000") cpp_quote("#define SBSP_OPENMODE 0x00000010") cpp_quote("#define SBSP_EXPLOREMODE 0x00000020") cpp_quote("#define SBSP_HELPMODE 0x00000040") cpp_quote("#define SBSP_NOTRANSFERHIST 0x00000080") cpp_quote("#define SBSP_ABSOLUTE 0x00000000") cpp_quote("#define SBSP_RELATIVE 0x00001000") cpp_quote("#define SBSP_PARENT 0x00002000") cpp_quote("#define SBSP_NAVIGATEBACK 0x00004000") cpp_quote("#define SBSP_NAVIGATEFORWARD 0x00008000") cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE 0x00010000") cpp_quote("#define SBSP_NOAUTOSELECT 0x04000000") cpp_quote("#define SBSP_WRITENOHISTORY 0x08000000") cpp_quote("#define SBSP_REDIRECT 0x40000000") cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000") cpp_quote("#define FCW_STATUS 0x0001") cpp_quote("#define FCW_TOOLBAR 0x0002") cpp_quote("#define FCW_TREE 0x0003") cpp_quote("#define FCW_INTERNETBAR 0x0006") cpp_quote("#define FCW_PROGRESS 0x0008") cpp_quote("#define FCT_MERGE 0x0001") cpp_quote("#define FCT_CONFIGABLE 0x0002") cpp_quote("#define FCT_ADDTOEND 0x0004") cpp_quote("#if 0") typedef LPARAM LPTBBUTTONSB; cpp_quote("#else") cpp_quote("#include ") cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;") cpp_quote("#endif") HRESULT InsertMenusSB( [in] HMENU hmenuShared, [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths); HRESULT SetMenuSB( [in] HMENU hmenuShared, [in] HOLEMENU holemenuReserved, [in] HWND hwndActiveObject); HRESULT RemoveMenusSB( [in] HMENU hmenuShared ); HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText ); HRESULT EnableModelessSB( [in] BOOL fEnable ); HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID ); HRESULT BrowseObject( [in] LPCITEMIDLIST pidl, [in] UINT wFlags); HRESULT GetViewStateStream( [in] DWORD grfMode, [out] IStream **ppStrm); HRESULT GetControlWindow( [in] UINT id, [out] HWND *phwnd); [local] HRESULT SendControlMsg( [in] UINT id, [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam, [in] LRESULT *pret); HRESULT QueryActiveShellView( [out] IShellView **ppshv ); HRESULT OnViewWindowActive( [in] IShellView *pshv ); [local] HRESULT SetToolbarItems( [in] LPTBBUTTONSB lpButtons, [in] UINT nButtons, [in] UINT uFlags); } /***************************************************************************** * IShellLinkA interface */ [ object, uuid(000214ee-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellLinkA : IUnknown { typedef enum { SLR_NO_UI = 0x0001, SLR_ANY_MATCH = 0x0002, SLR_UPDATE = 0x0004, SLR_NOUPDATE = 0x0008, SLR_NOSEARCH = 0x0010, SLR_NOTRACK = 0x0020, SLR_NOLINKINFO = 0x0040, SLR_INVOKE_MSI = 0x0080, SLR_NO_UI_WITH_MSG_PUMP = 0x0101, } SLR_FLAGS; typedef enum { SLGP_SHORTPATH = 0x0001, SLGP_UNCPRIORITY = 0x0002, SLGP_RAWPATH = 0x0004, } SLGP_FLAGS; HRESULT GetPath( [out, size_is(cch)] LPSTR pszFile, [in] int cch, [in, out] WIN32_FIND_DATAA *pfd, [in] DWORD fFlags); HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); HRESULT GetDescription( [out, size_is(cch)] LPSTR pszName, [in] int cch); HRESULT SetDescription( [in] LPCSTR pszName ); HRESULT GetWorkingDirectory( [out, size_is(cch)] LPSTR pszDir, [in] int cch); HRESULT SetWorkingDirectory( [in] LPCSTR pszDir ); HRESULT GetArguments( [out, size_is(cch)] LPSTR pszArgs, [in] int cch); HRESULT SetArguments( [in] LPCSTR pszArgs ); HRESULT GetHotkey( [out] WORD *pwHotkey ); HRESULT SetHotkey( [in] WORD wHotkey ); HRESULT GetShowCmd( [out] int *piShowCmd ); HRESULT SetShowCmd( [in] int iShowCmd ); HRESULT GetIconLocation( [out, size_is(cch)] LPSTR pszIconPath, [in] int cch, [out] int *piIcon); HRESULT SetIconLocation( [in] LPCSTR pszIconPath, [in] int iIcon); HRESULT SetRelativePath( [in] LPCSTR pszPathRel, [in] DWORD dwReserved); HRESULT Resolve( [in] HWND hwnd, [in] DWORD fFlags); HRESULT SetPath( [in] LPCSTR pszFile ); } /***************************************************************************** * IShellLinkW interface */ [ object, uuid(000214f9-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellLinkW : IUnknown { HRESULT GetPath( [out, size_is(cch)] LPWSTR pszFile, [in] int cch, [in, out] WIN32_FIND_DATAW *pfd, [in] DWORD fFlags); HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); HRESULT GetDescription( [out, size_is(cch)] LPWSTR pszName, [in] int cch); HRESULT SetDescription( [in] LPCWSTR pszName ); HRESULT GetWorkingDirectory( [out, size_is(cch)] LPWSTR pszDir, [in] int cch); HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir ); HRESULT GetArguments( [out, size_is(cch)] LPWSTR pszArgs, [in] int cch); HRESULT SetArguments( [in] LPCWSTR pszArgs ); HRESULT GetHotkey( [out] WORD *pwHotkey ); HRESULT SetHotkey( [in] WORD wHotkey ); HRESULT GetShowCmd( [out] int *piShowCmd ); HRESULT SetShowCmd( [in] int iShowCmd ); HRESULT GetIconLocation( [out, size_is(cch)] LPWSTR pszIconPath, [in] int cch, [out] int *piIcon); HRESULT SetIconLocation( [in] LPCWSTR pszIconPath, [in] int iIcon); HRESULT SetRelativePath( [in] LPCWSTR pszPathRel, [in] DWORD dwReserved); HRESULT Resolve( [in] HWND hwnd, [in] DWORD fFlags); HRESULT SetPath( [in] LPCWSTR pszFile ); } cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)") /***************************************************************************** * IShellExtInit interface */ [ object, uuid(000214e8-0000-0000-c000-000000000046), pointer_default(unique) ] interface IShellExtInit : IUnknown { typedef IShellExtInit *LPSHELLEXTINIT; HRESULT Initialize( [in] LPCITEMIDLIST pidlFolder, [in] IDataObject *pdtobj, [in] HKEY hkeyProgID); }