// Borland C++ Builder
// Copyright (c) 1995, 2002 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'ahmshellobject.pas' rev: 6.00

#ifndef ahmshellobjectHPP
#define ahmshellobjectHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <UrlMon.hpp>	// Pascal unit
#include <WinInet.hpp>	// Pascal unit
#include <Messages.hpp>	// Pascal unit
#include <RegStr.hpp>	// Pascal unit
#include <ShellAPI.hpp>	// Pascal unit
#include <CommCtrl.hpp>	// Pascal unit
#include <ActiveX.hpp>	// Pascal unit
#include <SysUtils.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.hpp>	// Pascal unit

//-- user supplied -----------------------------------------------------------
#include <ole2.h>
#include <prsht.h>
#include <commctrl.h>   // for LPTBBUTTON
#include <shlguid.h>
DECLARE_DINTERFACE_TYPE(IDropTargetHelper);
DECLARE_DINTERFACE_TYPE(IDragSourceHelper);
DECLARE_DINTERFACE_TYPE(IDropTarget);
DECLARE_DINTERFACE_TYPE(IContextMenu3);
typedef System::DelphiInterface<IAdviseSink> _di_IAdviseSink;
typedef System::DelphiInterface<IShellBrowser> _di_IShellBrowser;
typedef System::DelphiInterface<IShellView> _di_IShellView;
typedef System::DelphiInterface<IContextMenu> _di_IContextMenu;
typedef System::DelphiInterface<IShellIcon> _di_IShellIcon;
typedef System::DelphiInterface<IShellFolder> _di_IShellFolder;
typedef System::DelphiInterface<IShellExtInit> _di_IShellExtInit;
typedef System::DelphiInterface<IShellPropSheetExt> _di_IShellPropSheetExt;
typedef System::DelphiInterface<IPersistFolder> _di_IPersistFolder;
typedef System::DelphiInterface<ICommDlgBrowser> _di_ICommDlgBrowser;
typedef System::DelphiInterface<IEnumIDList> _di_IEnumIDList;
typedef System::DelphiInterface<IFileViewerSite> _di_IFileViewerSite;
typedef System::DelphiInterface<IContextMenu2> _di_IContextMenu2;
typedef System::DelphiInterface<IContextMenu3> _di_IContextMenu3;
typedef System::DelphiInterface<IShellView2> _di_IShellView2;
typedef System::DelphiInterface<INewShortcutHookA> _di_INewShortcutHookA;
typedef System::DelphiInterface<INewShortcutHookW> _di_INewShortcutHookW;
typedef System::DelphiInterface<IFileViewerA> _di_IFileViewerA;
typedef System::DelphiInterface<IFileViewerW> _di_IFileViewerW;
typedef System::DelphiInterface<IShellLinkA> _di_IShellLinkA;
typedef System::DelphiInterface<IShellLinkW> _di_IShellLinkW;
typedef System::DelphiInterface<IExtractIconA> _di_IExtractIconA;
typedef System::DelphiInterface<IExtractIconW> _di_IExtractIconW;
typedef System::DelphiInterface<IShellExecuteHookA> _di_IShellExecuteHookA;
typedef System::DelphiInterface<IShellExecuteHookW> _di_IShellExecuteHookW;
typedef System::DelphiInterface<ICopyHookA> _di_ICopyHookA;
typedef System::DelphiInterface<ICopyHookW> _di_ICopyHookW;
#ifdef UNICODE
typedef _di_INewShortcutHookW _di_INewShortcutHook;
typedef _di_IFileViewerW _di_IFileViewer;
typedef _di_IShellLinkW _di_IShellLink;
typedef _di_IExtractIconW _di_IExtractIcon;
typedef _di_IShellExecuteHookW _di_IShellExecuteHook;
typedef _di_ICopyHookW _di_ICopyHook;
#else
typedef _di_INewShortcutHookA _di_INewShortcutHook;
typedef _di_IFileViewerA _di_IFileViewer;
typedef _di_IShellLinkA _di_IShellLink;
typedef _di_IExtractIconA _di_IExtractIcon;
typedef _di_IShellExecuteHookA _di_IShellExecuteHook;
typedef _di_ICopyHookA _di_ICopyHook;
#endif

namespace Ahmshellobject
{
//-- type declarations -------------------------------------------------------
typedef _SHITEMID *PSHItemID;

typedef _SHITEMID  TSHItemID;

typedef _ITEMIDLIST *PItemIDList;

typedef _ITEMIDLIST  TItemIDList;

typedef DynamicArray<PItemIDList >  TItemIDListArray;

typedef TItemIDListArray *PItemIDListArray;

typedef DynamicArray<tagFORMATETC >  TFormatListArray;

typedef _CMINVOKECOMMANDINFO *PCMInvokeCommandInfo;

typedef _CMINVOKECOMMANDINFO  TCMInvokeCommandInfo;

typedef _CMInvokeCommandInfoEx *PCMInvokeCommandInfoEx;

typedef _CMInvokeCommandInfoEx  TCMInvokeCommandInfoEx;

struct _SHDRAGIMAGE;
typedef _SHDRAGIMAGE *PSHDRAGIMAGE;

#pragma pack(push, 1)
struct _SHDRAGIMAGE
{
	tagSIZE sizeDragImage;
	Types::TPoint ptOffset;
	HBITMAP hbmpDragImage;
	unsigned crColorKey;
} ;
#pragma pack(pop)

typedef _SHDRAGIMAGE  TSHDRAGIMAGE;

typedef _SHDRAGIMAGE  SHDRAGIMAGE;

typedef FVSHOWINFO *PFVShowInfo;

typedef FVSHOWINFO  TFVShowInfo;

typedef FOLDERSETTINGS *PFolderSettings;

typedef FOLDERSETTINGS  TFolderSettings;

typedef GUID  TShellViewID;

typedef GUID *PShellViewID;

typedef _SV2CVW2_PARAMS *PSV2CreateParams;

typedef _SV2CVW2_PARAMS  TSV2CreateParams;

#pragma pack(push, 4)
struct TSTRRET
{
	unsigned uType;
	union
	{
		struct 
		{
			char cStr[260];
			
		};
		struct 
		{
			unsigned uOffset;
			
		};
		struct 
		{
			char *pStr;
			
		};
		struct 
		{
			wchar_t *pOleStr;
			
		};
		
	};
} ;
#pragma pack(pop)

#pragma option push -b-
enum TAHMShellFolder { SFCSIDL_DESKTOP, SFCSIDL_INTERNET, SFCSIDL_PROGRAMS, SFCSIDL_CONTROLS, SFCSIDL_PRINTERS, SFCSIDL_PERSONAL, SFCSIDL_FAVORITES, SFCSIDL_STARTUP, SFCSIDL_RECENT, SFCSIDL_SENDTO, SFCSIDL_BITBUCKET, SFCSIDL_STARTMENU, SFCSIDL_DESKTOPDIRECTORY, SFCSIDL_DRIVES, SFCSIDL_NETWORK, SFCSIDL_NETHOOD, SFCSIDL_FONTS, SFCSIDL_TEMPLATES, SFCSIDL_COMMON_STARTMENU, SFCSIDL_COMMON_PROGRAMS, SFCSIDL_COMMON_STARTUP, SFCSIDL_COMMON_DESKTOPDIRECTORY, SFCSIDL_APPDATA, SFCSIDL_PRINTHOOD, SFCSIDL_ALTSTARTUP, SFCSIDL_COMMON_ALTSTARTUP, SFCSIDL_COMMON_FAVORITES, SFCSIDL_INTERNET_CACHE, SFCSIDL_COOKIES, SFCSIDL_HISTORY };
#pragma option pop

typedef int __stdcall (*TFNBFFCallBack)(HWND Wnd, unsigned uMsg, int lParam, int lpData);

typedef _browseinfoA *PBrowseInfoA;

typedef _browseinfoW *PBrowseInfoW;

typedef _browseinfoA *PBrowseInfo;

typedef _browseinfoA  TBrowseInfoA;

typedef _browseinfoW  TBrowseInfoW;

typedef _browseinfoA  TBrowseInfo;

__interface IEnumExtraSearch;
typedef System::DelphiInterface<IEnumExtraSearch> _di_IEnumExtraSearch;
__interface INTERFACE_UUID("{0E700BE1-9DB6-11D1-A1CE-00C04FD75D13}") IEnumExtraSearch  : public IInterface 
{
	
public:
	virtual HRESULT __stdcall Next(unsigned celt, /* out */ PItemIDList &rgelt, unsigned &pceltFetched) = 0 ;
	virtual HRESULT __stdcall Skip(unsigned celt) = 0 ;
	virtual HRESULT __stdcall Reset(void) = 0 ;
	virtual HRESULT __stdcall Clone(/* out */ _di_IEnumIDList &ppenum) = 0 ;
};

#pragma pack(push, 4)
struct TSHCOLUMNID
{
	GUID fmtid;
	unsigned pid;
} ;
#pragma pack(pop)

#pragma pack(push, 1)
struct TSHDETAILS
{
	unsigned fmt;
	int cxChar;
	TSTRRET str;
} ;
#pragma pack(pop)

__interface IShellDetails;
typedef System::DelphiInterface<IShellDetails> _di_IShellDetails;
__interface INTERFACE_UUID("{000214EC-0000-0000-C000-000000000046}") IShellDetails  : public IInterface 
{
	
public:
	virtual HRESULT __stdcall GetDetailsOf(PItemIDList Pidl, int Col, TSHDETAILS &data) = 0 ;
	virtual void __stdcall ColumnClick(int Col) = 0 ;
};

#pragma pack(push, 1)
struct TSHCOLUMNINIT
{
	int dwFlags;
	int dwReserved;
	wchar_t wszFolder;
} ;
#pragma pack(pop)

#pragma pack(push, 1)
struct TSHCOLUMNDATA
{
	int dwFlags;
	unsigned dwFileAttributes;
	int dwReserved;
	wchar_t *pwszExt;
	wchar_t wszFile;
} ;
#pragma pack(pop)

#pragma pack(push, 1)
struct TSHCOLUMNINFO
{
	TSHCOLUMNID scID;
	int vt;
	unsigned fmt;
	int cChars;
	unsigned csFlags;
	wchar_t wszTitle;
	wchar_t wszDescription;
} ;
#pragma pack(pop)

typedef DESKBANDINFO *PDeskBandInfo;

typedef DESKBANDINFO  TDeskBandInfo;

typedef _NRESARRAY *PNResArray;

typedef _NRESARRAY  TNResArray;

typedef _IDA *PIDA;

typedef _IDA  TIDA;

typedef _FILEDESCRIPTORA *PFileDescriptorA;

typedef _FILEDESCRIPTORW *PFileDescriptorW;

typedef _FILEDESCRIPTORA *PFileDescriptor;

typedef _FILEDESCRIPTORA  TFileDescriptorA;

typedef _FILEDESCRIPTORW  TFileDescriptorW;

typedef _FILEDESCRIPTORA  TFileDescriptor;

typedef _FILEGROUPDESCRIPTORA *PFileGroupDescriptorA;

typedef _FILEGROUPDESCRIPTORW *PFileGroupDescriptorW;

typedef _FILEGROUPDESCRIPTORA *PFileGroupDescriptor;

typedef _FILEGROUPDESCRIPTORA  TFileGroupDescriptorA;

typedef _FILEGROUPDESCRIPTORW  TFileGroupDescriptorW;

typedef _FILEGROUPDESCRIPTORA  TFileGroupDescriptor;

typedef _DROPFILES *PDropFiles;

typedef _DROPFILES  TDropFiles;

typedef _SHDESCRIPTIONID *PSHDescriptionID;

typedef _SHDESCRIPTIONID  TSHDescriptionID;

typedef SHELLFLAGSTATE *PShellFlagState;

typedef SHELLFLAGSTATE  TShellFlagState;

struct NOTIFYREGISTER;
typedef NOTIFYREGISTER *PNOTIFYREGISTER;

#pragma pack(push, 4)
struct NOTIFYREGISTER
{
	_ITEMIDLIST *pidlPath;
	bool bWatchSubtree;
} ;
#pragma pack(pop)

#pragma pack(push, 4)
struct TPIDLLIST
{
	void *pidlist[2];
} ;
#pragma pack(pop)

typedef TPIDLLIST *PIDARRAY;

typedef PItemIDList __stdcall (*FUNC_ILGetNext)(PItemIDList pidl);

typedef PItemIDList __stdcall (*FUNC_ILFindLastID)(PItemIDList pidl);

typedef PItemIDList __stdcall (*FUNC_ILFindChild)(PItemIDList pidlParent, PItemIDList pidlChild);

typedef PItemIDList __stdcall (*FUNC_ILClone)(PItemIDList pidl);

typedef PItemIDList __stdcall (*FUNC_ILCloneFirst)(PItemIDList pidl);

typedef PItemIDList __stdcall (*FUNC_ILCombine)(PItemIDList pidl1, PItemIDList pidl2);

typedef PItemIDList __stdcall (*FUNC_ILAppendID)(PItemIDList pidl, PItemIDList lpItemID, BOOL bAddToEnd);

typedef BOOL __stdcall (*FUNC_ILRemoveLastID)(PItemIDList pidl);

typedef BOOL __stdcall (*FUNC_ILIsEqual)(PItemIDList pidl1, PItemIDList pidl2);

typedef BOOL __stdcall (*FUNC_ILIsParent)(PItemIDList pidlParent, PItemIDList pidlChild, BOOL bImmediate);

typedef int __stdcall (*FUNC_ILGetSize)(PItemIDList pidl);

typedef HWND __stdcall (*FUNC_SHChangeNotifyRegister)(HWND hWnd, int dwFlags, unsigned wEventMask, unsigned uMsg, int cItems, PNOTIFYREGISTER lpItems);

typedef bool __stdcall (*FUNC_SHChangeNotifyDeregister)(HWND hWnd);

typedef HRESULT __stdcall (*FUNC_SHILCreateFromPath)(void * Path, PItemIDList PIDL, unsigned &Attributes);

typedef HRESULT __stdcall (*FUNC_SHBindToParent)(PItemIDList pidl, const GUID &riid, /* out */ void *ppvObj, PItemIDList ppvOut);

//-- var, const, procedure ---------------------------------------------------
extern PACKAGE _di_IMalloc InternalShellMalloc;
extern PACKAGE GUID CLSID_ActiveDesktop;
extern PACKAGE GUID CLSID_DragDropHelper;
#define SID_DragDropHelper "{4657278A-411B-11d2-839A-00C04FD918D0}"
extern PACKAGE GUID IID_IDropTargetHelper;
#define SID_IDropTargetHelper "{4657278B-411B-11d2-839A-00C04FD918D0}"
extern PACKAGE GUID IID_IDragSourceHelper;
#define SID_IDragSourceHelper "{DE5BF786-477A-11d2-839D-00C04FD918D0}"
extern PACKAGE GUID IID_IShellChangeNotify;
extern PACKAGE GUID IID_IColumnProvider;
#define SID_IColumnProvider "{E8025004-1C42-11d2-BE2C-00A0C9A83DA1}"
#define SID_INewShortcutHookA "{000214E1-0000-0000-C000-000000000046}"
#define SID_IShellBrowser "{000214E2-0000-0000-C000-000000000046}"
#define SID_IShellView "{000214E3-0000-0000-C000-000000000046}"
#define SID_IContextMenu "{000214E4-0000-0000-C000-000000000046}"
#define SID_IShellIcon "{000214E5-0000-0000-C000-000000000046}"
#define SID_IShellDetails "{000214EC-0000-0000-C000-000000000046}"
#define SID_IShellDetails3 "{D2A105C0-87D5-11d1-8391-0000F80461CF}"
#define SID_IShellFolder "{000214E6-0000-0000-C000-000000000046}"
#define SID_IShellFolder2 "{93F2F68C-1D1B-11d3-A30E-00C04F79ABD1}"
#define SID_IEnumExtraSearch "{0E700BE1-9DB6-11d1-A1CE-00C04FD75D13}"
#define SID_IShellExtInit "{000214E8-0000-0000-C000-000000000046}"
#define SID_IShellPropSheetExt "{000214E9-0000-0000-C000-000000000046}"
#define SID_IPersistFolder "{000214EA-0000-0000-C000-000000000046}"
#define SID_IExtractIconA "{000214EB-0000-0000-C000-000000000046}"
#define SID_IShellLinkA "{000214EE-0000-0000-C000-000000000046}"
#define SID_IShellCopyHookA "{000214EF-0000-0000-C000-000000000046}"
#define SID_IFileViewerA "{000214F0-0000-0000-C000-000000000046}"
#define SID_ICommDlgBrowser "{000214F1-0000-0000-C000-000000000046}"
#define SID_IEnumIDList "{000214F2-0000-0000-C000-000000000046}"
#define SID_IFileViewerSite "{000214F3-0000-0000-C000-000000000046}"
#define SID_IContextMenu2 "{000214F4-0000-0000-C000-000000000046}"
#define SID_IShellExecuteHookA "{000214F5-0000-0000-C000-000000000046}"
#define SID_IPropSheetPage "{000214F6-0000-0000-C000-000000000046}"
#define SID_INewShortcutHookW "{000214F7-0000-0000-C000-000000000046}"
#define SID_IFileViewerW "{000214F8-0000-0000-C000-000000000046}"
#define SID_IShellLinkW "{000214F9-0000-0000-C000-000000000046}"
#define SID_IExtractIconW "{000214FA-0000-0000-C000-000000000046}"
#define SID_IShellExecuteHookW "{000214FB-0000-0000-C000-000000000046}"
#define SID_IShellCopyHookW "{000214FC-0000-0000-C000-000000000046}"
#define SID_IShellView2 "{88E39E80-3578-11CF-AE69-08002B2E1262}"
#define SID_IContextMenu3 "{BCFCE0A0-EC17-11d0-8D10-00A0C90F2719}"
#define SID_IPersistFolder2 "{1AC3D9F0-175C-11d1-95BE-00609797EA4F}"
#define SID_IShellIconOverlayIdentifier "{0C6C4200-C589-11D0-999A-00C04FD655E1}"
#define SID_IShellIconOverlay "{7D688A70-C613-11D0-999B-00C04FD655E1}"
#define SID_IURLSearchHook "{AC60F6A0-0FD9-11D0-99CB-00C04FD64497}"
#define SID_IInputObjectSite "{f1db8392-7331-11d0-8c99-00a0c92dbfe8}"
#define SID_IInputObject "{68284faa-6a48-11d0-8c78-00c04fd918b4}"
#define SID_IDockingWindowSite "{2a342fc2-7b26-11d0-8ca9-00a0c92dbfe8}"
#define SID_IDockingWindowFrame "{47d2657a-7b27-11d0-8ca9-00a0c92dbfe8}"
#define SID_IDockingWindow "{012dd920-7b26-11d0-8ca9-00a0c92dbfe8}"
#define SID_IDeskBand "{EB0FE172-1A3A-11D0-89B3-00A0C90A90AC}"
#define SID_IActiveDesktop "{F490EB00-1240-11D1-9888-006097DEACF9}"
#define SID_IShellChangeNotify "{00000000-0000-0000-0000-000000000000}"
#define SID_IQueryInfo "{00021500-0000-0000-C000-000000000046}"
extern PACKAGE int IntShellFolder[30];
static const Shortint SHCOLSTATE_TYPE_STR = 0x1;
static const Shortint SHCOLSTATE_TYPE_INT = 0x2;
static const Shortint SHCOLSTATE_TYPE_DATE = 0x3;
static const Shortint SHCOLSTATE_TYPEMASK = 0xf;
static const Shortint SHCOLSTATE_ONBYDEFAULT = 0x10;
static const Shortint SHCOLSTATE_SLOW = 0x20;
static const Shortint SHCOLSTATE_EXTENDED = 0x40;
static const Byte SHCOLSTATE_SECONDARYUI = 0x80;
static const Word SHCOLSTATE_HIDDEN = 0x100;
static const int SHCNE_EXTENDED_EVENT_PRE_IE4 = 0x80000;
static const Shortint SHCNF_ACCEPT_INTERRUPTS = 0x1;
static const Shortint SHCNF_ACCEPT_NON_INTERRUPTS = 0x2;
static const Word SHCNF_NO_PROXY = 0x8000;
extern PACKAGE FUNC_ILGetNext ILGetNext;
extern PACKAGE FUNC_ILFindLastID ILFindLastID;
extern PACKAGE FUNC_ILFindChild ILFindChild;
extern PACKAGE FUNC_ILClone ILClone;
extern PACKAGE FUNC_ILCloneFirst ILCloneFirst;
extern PACKAGE FUNC_ILCombine ILCombine;
extern PACKAGE FUNC_ILAppendID ILAppendID;
extern PACKAGE FUNC_ILRemoveLastID ILRemoveLastID;
extern PACKAGE FUNC_ILIsEqual ILIsEqual;
extern PACKAGE FUNC_ILIsParent ILIsParent;
extern PACKAGE FUNC_ILGetSize ILGetSize;
extern PACKAGE FUNC_SHChangeNotifyRegister SHChangeNotifyRegister;
extern PACKAGE FUNC_SHChangeNotifyDeregister SHChangeNotifyDeregister;
extern PACKAGE FUNC_SHILCreateFromPath SHILCreateFromPath;

}	/* namespace Ahmshellobject */
using namespace Ahmshellobject;
#pragma option pop	// -w-
#pragma option pop	// -Vx

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// ahmshellobject
