//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992-1997. // // File: shlobj.idl // //---------------------------------------------------------------------------- cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright (C) Microsoft Corporation, 1992-1997.") cpp_quote("//") cpp_quote("//--------------------------------------------------------------------------") cpp_quote("#if ( _MSC_VER >= 800 )") cpp_quote("#pragma warning(disable:4201)") cpp_quote("#endif") #ifndef DO_NO_IMPORTS import "objidl.idl"; import "oleidl.idl"; import "commctrl.idl"; import "prsht.idl"; #endif interface IContextMenu; interface IEnumIDList; interface IPersistFolder; interface IPersistFolder2; interface IShellBrowser; interface IShellExtInit; interface IShellFolder; interface IShellView; interface IExtractIconA; interface IExtractIconW; interface IQueryInfo; interface IExplorerToolbar; interface IShellDetails; typedef struct _CMINVOKECOMMANDINFO { DWORD cbSize; // sizeof(CMINVOKECOMMANDINFO) DWORD fMask; // any combination of CMIC_MASK_* HWND hwnd; // might be NULL (indicating no owner window) LPCSTR lpVerb; // either a string or MAKEINTRESOURCE(idOffset) LPCSTR lpParameters; // might be NULL (indicating no parameter) LPCSTR lpDirectory; // might be NULL (indicating no specific directory) int nShow; // one of SW_ values for ShowWindow() API DWORD dwHotKey; HANDLE hIcon; } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO; // // SHITEMID -- Item ID // typedef struct _SHITEMID // mkid { USHORT cb; // Size of the ID (including cb itself) BYTE abID[1]; // The item ID (variable length) } SHITEMID; typedef SHITEMID *LPSHITEMID; typedef const SHITEMID *LPCSHITEMID; // // ITEMIDLIST -- List if item IDs (combined with 0-terminator) // typedef struct _ITEMIDLIST // idl { SHITEMID mkid; } ITEMIDLIST; typedef ITEMIDLIST * LPITEMIDLIST; typedef const ITEMIDLIST * LPCITEMIDLIST; #define MAX_PATH 260 typedef struct _STRRET { UINT uType; // One of the STRRET_* values union { LPWSTR pOleStr; // must be freed by caller of GetDisplayNameOf LPSTR pStr; // NOT USED UINT uOffset; // Offset into SHITEMID char cStr[MAX_PATH]; // Buffer to fill in (ANSI) } DUMMYUNIONNAME; } STRRET, *LPSTRRET; typedef struct { UINT ViewMode; // View mode (FOLDERVIEWMODE values) UINT fFlags; // View options (FOLDERFLAGS bits) } FOLDERSETTINGS, *LPFOLDERSETTINGS; typedef const FOLDERSETTINGS * LPCFOLDERSETTINGS; typedef struct _TBBUTTON { int iBitmap; int idCommand; BYTE fsState; BYTE fsStyle; #ifdef _WIN32 BYTE bReserved[2]; #endif DWORD dwData; int iString; } TBBUTTON, *PTBBUTTON, *LPTBBUTTON; typedef const TBBUTTON* LPCTBBUTTON; //+--------------------------------------------------------------------------- // IContextMenu - // [ local, object, uuid(000214E4-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IContextMenu : IUnknown { HRESULT QueryContextMenu( HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags); HRESULT InvokeCommand( LPCMINVOKECOMMANDINFO lpici); HRESULT GetCommandString( UINT idCmd, UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax); }; //+--------------------------------------------------------------------------- // IEnumIDList - // [ local, object, uuid(000214F2-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IEnumIDList : IUnknown { 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); }; //+--------------------------------------------------------------------------- // IPersistFolder - // [ local, object, uuid(000214EA-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IPersistFolder : IPersist { HRESULT Initialize( [in] LPCITEMIDLIST pidl); }; //+--------------------------------------------------------------------------- // IPersistFolder2 - // [ local, object, uuid(1AC3D9F0-175C-11d1-95BE-00609797EA4F), pointer_default(unique) ] interface IPersistFolder2 : IPersistFolder { HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl); }; //+--------------------------------------------------------------------------- // IShellExtInit - // [ local, object, uuid(000214E8-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IShellExtInit : IUnknown { HRESULT Initialize( [in] LPCITEMIDLIST pidl, [in] LPDATAOBJECT pdobj, [in] HKEY hkeyProgID); }; //+--------------------------------------------------------------------------- // IShellBrowser - // [ local, object, uuid(000214E2-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IShellBrowser : IOleWindow { HRESULT InsertMenusSB( HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths); HRESULT SetMenuSB( HMENU hmenuShared, HOLEMENU holemenuReserved, HWND hwndActiveObject); HRESULT RemoveMenusSB( HMENU hmenuShared); HRESULT SetStatusTextSB( LPCOLESTR lpszStatusText); HRESULT EnableModelessSB( BOOL fEnable); HRESULT TranslateAcceleratorSB( LPMSG lpmsg, WORD wID); HRESULT BrowseObject ( LPCITEMIDLIST pidl, UINT wFlags); HRESULT GetViewStateStream( DWORD grfMode, LPSTREAM* ppStrm); HRESULT GetControlWindow( UINT id, HWND* lphwnd); HRESULT SendControlMsg( UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pret); HRESULT QueryActiveShellView( IShellView** ppshv); HRESULT OnViewWindowActive( IShellView* ppshv); HRESULT SetToolbarItems( LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags); }; //+--------------------------------------------------------------------------- // IShellFolder - // [ local, object, uuid(000214E6-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IShellFolder : IUnknown { HRESULT ParseDisplayName( HWND hwndOwner, LPBC pbcReserved, LPOLESTR lpszDisplayName, ULONG* pchEaten, LPITEMIDLIST* ppidl, ULONG* pdwAttributes); HRESULT EnumObjects( HWND hwndOwner, DWORD grfFlags, IEnumIDList** ppenumIDList); HRESULT BindToObject( LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID* ppvOut); HRESULT BindToStorage( LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID* ppvObj); HRESULT CompareIDs( LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2); HRESULT CreateViewObject( HWND hwndOwner, REFIID riid, LPVOID* ppvOut); HRESULT GetAttributesOf( UINT cidl, LPCITEMIDLIST* apidl, ULONG* rgfInOut); HRESULT GetUIObjectOf( HWND hwndOwner, UINT cidl, LPCITEMIDLIST* apidl, REFIID riid, UINT* prgfInOut, LPVOID* ppvOut); HRESULT GetDisplayNameOf( LPCITEMIDLIST pidl, DWORD uFlags, LPSTRRET lpName); HRESULT SetNameOf( HWND hwndOwner, LPCITEMIDLIST pidl, LPCOLESTR lpszName, DWORD uFlags, LPITEMIDLIST* ppidlOut); }; //+--------------------------------------------------------------------------- // IShellView - // [ local, object, uuid(000214E3-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IShellView : IOleWindow { HRESULT TranslateAccelerator( LPMSG lpmsg); HRESULT EnableModeless( BOOL fEnable); HRESULT UIActivate( UINT uState); HRESULT Refresh(); HRESULT CreateViewWindow( IShellView* lpPrevView, LPCFOLDERSETTINGS lpfs, IShellBrowser* psb, RECT* prcView, HWND* phWnd); HRESULT DestroyViewWindow(); HRESULT GetCurrentInfo( LPFOLDERSETTINGS lpfs); HRESULT AddPropertySheetPages( DWORD dwReserved, LPFNADDPROPSHEETPAGE lpfn, LPARAM lparam); HRESULT SaveViewState(); HRESULT SelectItem( LPCITEMIDLIST pidlItem, UINT uFlags); HRESULT GetItemObject( UINT uItem, REFIID riid, LPVOID* ppv); }; //+--------------------------------------------------------------------------- // IExtractIconW - // [ local, object, uuid(000214FA-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IExtractIconW : IUnknown { HRESULT GetIconLocation( UINT uFlags, LPWSTR szIconFile, UINT cchMax, int * piIndex, UINT * pwFlags); HRESULT Extract( LPCWSTR pszFile, UINT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIconSize); }; //+--------------------------------------------------------------------------- // IExtractIconA - // [ local, object, uuid(000214EB-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IExtractIconA : IUnknown { HRESULT GetIconLocation( UINT uFlags, LPWSTR szIconFile, UINT cchMax, int * piIndex, UINT * pwFlags); HRESULT Extract( LPCWSTR pszFile, UINT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIconSize); }; //+--------------------------------------------------------------------------- // IQueryInfo - // [ local, object, uuid(00021500-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IQueryInfo : IUnknown { HRESULT GetInfoTip( DWORD dwFlags, WCHAR ** ppwszTip); HRESULT GetInfoFlags( DWORD * pdwFlags); }; //+--------------------------------------------------------------------------- // IOleCommandTarget - // // [ // local, // object, // uuid(b722bccb-4e68-101b-a2bc-00aa00404770), // pointer_default(unique) // ] // interface IOleCommandTarget : IUnknown // { // HRESULT QueryStatus( // const GUID * pguidCmdGroup, // ULONG cCmds, // OLECMD prgCmds[], // OLECMDTEXT * pCmdText); // // HRESULT Exec( // const GUID * pguidCmdGroup, // DWORD nCmdID, // DWORD nCmdexecopt, // VARIANTARG * pvaIn, // VARIANTARG * pvaOut); // }; typedef struct tagTBADDBITMAP { HINSTANCE hInst; UINT nID; } TBADDBITMAP, *LPTBADDBITMAP; //+--------------------------------------------------------------------------- // IExplorerToolbar - // [ local, object, uuid(8455F0C1-158F-11D0-89AE-00A0C90A90AC), pointer_default(unique) ] interface IExplorerToolbar : IUnknown { // *** IExplorerToolbar methods *** HRESULT SetCommandTarget( IUnknown * punkCmdTarget, const GUID * pguidCmdGrp, DWORD dwFlags); HRESULT AddStdBrowserButtons(); HRESULT AddButtons( const GUID * pguidButtonGroup, UINT nButtons, const TBBUTTON * lpButtons); HRESULT AddString( const GUID * pguidButtonGroup, HINSTANCE hInst, UINT uiResID, LRESULT * pOffset); HRESULT GetButton( const GUID * pguidButtonGroup, UINT uiCommand, LPTBBUTTON lpButton); HRESULT GetState( const GUID * pguidButtonGroup, UINT uiCommand, UINT * pfState); HRESULT SetState( const GUID * pguidButtonGroup, UINT uiCommand, UINT fState); HRESULT AddBitmap( const GUID * pguidButtonGroup, UINT uiBMPType, UINT uiCount, TBADDBITMAP * ptb, LRESULT * pOffset, COLORREF rgbMask); HRESULT GetBitmapSize( UINT * uiID); HRESULT SendToolbarMsg( const GUID * pguidButtonGroup, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT * plRes); HRESULT SetImageList( const GUID* pguidCmdGroup, HIMAGELIST himlNormal, HIMAGELIST himlHot, HIMAGELIST himlDisabled); HRESULT ModifyButton( const GUID * pguidButtonGroup, UINT uiCommand, LPTBBUTTON lpButton); }; //=========================================================================== // Defview related API and interface // // Notes: At this point, we have no plan to publish this mechanism. //=========================================================================== typedef struct _SHELLDETAILS { int fmt; // LVCFMT_* value (header only) int cxChar; // Number of "average" characters (header only) STRRET str; // String information } SHELLDETAILS, *LPSHELLDETAILS; //+--------------------------------------------------------------------------- // IShellDetails // [ local, object, uuid(000214EC-0000-0000-0000-C00000000046), pointer_default(unique) ] interface IShellDetails : IUnknown { // *** IShellDetails methods *** HRESULT GetDetailsOf( LPCITEMIDLIST pidl, UINT iColumn, LPSHELLDETAILS pDetails); HRESULT ColumnClick( UINT iColumn); };