Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

611 lines
15 KiB

//+---------------------------------------------------------------------------
//
// 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);
};