// CodeGear C++Builder
// Copyright (c) 1995, 2007 by CodeGear
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Mpshellutilities.pas' rev: 11.00

#ifndef MpshellutilitiesHPP
#define MpshellutilitiesHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <Sysinit.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <Messages.hpp>	// Pascal unit
#include <Sysutils.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Forms.hpp>	// Pascal unit
#include <Imglist.hpp>	// Pascal unit
#include <Shlobj.hpp>	// Pascal unit
#include <Shellapi.hpp>	// Pascal unit
#include <Activex.hpp>	// Pascal unit
#include <Registry.hpp>	// Pascal unit
#include <Mpshelltypes.hpp>	// Pascal unit
#include <Mpcommonobjects.hpp>	// Pascal unit
#include <Mpcommonutilities.hpp>	// Pascal unit
#include <Mpthreadmanager.hpp>	// Pascal unit
#include <Mpresources.hpp>	// Pascal unit
#include <Mpdataobject.hpp>	// Pascal unit
#include <Variants.hpp>	// Pascal unit
#include <Contnrs.hpp>	// Pascal unit
#include <Menus.hpp>	// Pascal unit

//-- user supplied -----------------------------------------------------------

namespace Mpshellutilities
{
//-- type declarations -------------------------------------------------------
#pragma option push -b-
enum TDefaultFolderIcon { diNormalFolder, diOpenFolder, diUnknownFile, diLink, diMyDocuments };
#pragma option pop

#pragma option push -b-
enum TMPBrowseFlag { mpbfComputers, mpbfPrinters, mpbfDontGoBelowDomain, mpbfFileSysAncestors, mpbfFileSysFolder, mpbfIncludeFiles, mpbfNewStyleDialog, mpbfEditBox, mpbfIncludeURLs, mpbfSharable, mpbfMustExist };
#pragma option pop

typedef Set<TMPBrowseFlag, mpbfComputers, mpbfMustExist>  TMPBrowseFlags;

#pragma option push -b-
enum TNamespaceState { nsFreePIDLOnDestroy, nsIsRecycleBin, nsRecycleBinChecked, nsOwnsParent, nsShellDetailsSupported, nsShellFolder2Supported, nsShellOverlaySupported, nsThreadedIconLoaded, nsThreadedIconLoading, nsThreadedImageLoaded, nsThreadedImageLoading, nsThreadedImageResizing, nsThreadedTileInfoLoaded, nsThreadedTileInfoLoading, nsIconIndexChanged };
#pragma option pop

typedef Set<TNamespaceState, nsFreePIDLOnDestroy, nsIconIndexChanged>  TNamespaceStates;

typedef HRESULT __stdcall (*TSHLimitInputEdit)(HWND hWndEdit, _di_IShellFolder psf);

typedef IShellDetailsBCB6 IVETShellDetails;
;

#pragma option push -b-
enum MPShellUtilities__1 { scInFolderName, scNormalName, scParsedName, scSmallIcon, scSmallOpenIcon, scOverlayIndex, scCreationTime, scLastAccessTime, scLastWriteTime, scFileSize, scFileSizeKB, scFileSizeInt64, scFileType, scInvalidIDListData, scFileSystem, scFolder, scCanDelete, scCanRename, scGhosted, scCanCopy, scCanMove, scCanLink, scLink, scFileSysAncestor, scCompressed, scFileTimes, scSupportedColumns, scFolderSize, scVirtualHook, scHookedNamespace, scVirtualNamespace, scRootVirtualNamespace, scHardHookedNamespace, scDetailsOfCache, scBrowsable };
#pragma option pop

typedef Set<MPShellUtilities__1, scInFolderName, scBrowsable>  TShellCache;

#pragma option push -b-
enum MPShellUtilities__2 { caFileSystem, caFolder, caCanDelete, caCanRename, caGhosted, caCanCopy, caCanMove, caCanLink, caLink, caFileSysAncestor, caCompressed, caVirtualHook, caHookedNamespace, caVirtualNamespace, caRootVirtualNamespace, caHardHookedNamespace, caBrowsable };
#pragma option pop

typedef Set<MPShellUtilities__2, caFileSystem, caBrowsable>  TCacheAttributes;

#pragma option push -b-
enum TSHColumnState { csTypeString, csTypeInt, csTypeDate, csOnByDefault, csSlow, csExtended, csSecondaryUI, csHidden };
#pragma option pop

typedef Set<TSHColumnState, csTypeString, csHidden>  TSHColumnStates;

#pragma option push -b-
enum THotKeyModifier { hkmAlt, hkmControl, hkmExtendedKey, hkmShift };
#pragma option pop

typedef Set<THotKeyModifier, hkmAlt, hkmShift>  THotKeyModifiers;

#pragma option push -b-
enum TCmdShow { swHide, swMaximize, swMinimize, swRestore, swShow, swShowDefault, swShowMinimized, swShowMinNoActive, swShowNA, swShowNoActive, swShowNormal };
#pragma option pop

#pragma option push -b-
enum TIconSize { icSmall, icLarge };
#pragma option pop

#pragma option push -b-
enum TFileSort { fsFileType, fsFileExtension };
#pragma option pop

#pragma option push -b-
enum TObjectDescription { odError, odRootRegistered, odFile, odDirectory, odUnidentifiedFileItem, od35Floppy, od525Floppy, odRemovableDisk, odFixedDrive, odMappedDrive, odCDROMDrive, odRAMDisk, odUnidentifiedDevice, odNetworkDomain, odNetworkServer, odNetworkShare, odNetworkRestOfNet, odUnidentifiedNetwork, odComputerImaging, odComputerAudio, odShareDocuments };
#pragma option pop

#pragma option push -b-
enum TDetailsColumnTitleInfo { tiCenterAlign, tiLeftAlign, tiRightAlign, tiContainsImage };
#pragma option pop

#pragma option push -b-
enum MPShellUtilities__3 { foFolders, foNonFolders, foHidden, foShareable, foNetworkPrinters };
#pragma option pop

typedef Set<MPShellUtilities__3, foFolders, foNetworkPrinters>  TFileObjects;

typedef DynamicArray<Mpshelltypes::tagSHCOLUMNID >  TSHColumnIDArray;

typedef DynamicArray<GUID >  TGUIDArray;

typedef DynamicArray<WideString >  TWideStringArray;

typedef DynamicArray<Mpshelltypes::_di_ICategorizer >  TCategoryArray;

#pragma pack(push,4)
struct TCategoryInfo
{
	
public:
	WideString Description;
	bool Collapsed;
	bool Hidden;
} ;
#pragma pack(pop)

typedef DynamicArray<TCategoryInfo >  TCategoryInfoArray;

typedef DynamicArray<bool >  TBooleanArray;

#pragma pack(push,4)
struct TCategoriesInfo
{
	
public:
	DynamicArray<Mpshelltypes::tagSHCOLUMNID >  ColumnID;
	DynamicArray<GUID >  CatGUID;
	DynamicArray<WideString >  CategoryNames;
	DynamicArray<TCategoryInfo >  Categories;
	DynamicArray<bool >  CanCatatorize;
	int DefaultColumn;
	int CategoryCount;
} ;
#pragma pack(pop)

#pragma option push -b-
enum TBtyeSize { bsKiloBytes, bsMegaBytes, bsGigiBytes, bsTereBytes, bsCustom };
#pragma option pop

typedef DynamicArray<unsigned >  TMenuItemIDArray;

typedef DynamicArray<Word >  TVisibleColumnIndexArray;

#pragma option push -b-
enum TDetailsOfCacheFlag { docCaptionValid, docStatesValid, docThreadLoading, docThreadLoaded };
#pragma option pop

typedef Set<TDetailsOfCacheFlag, docCaptionValid, docThreadLoaded>  TDetailsOfCacheFlags;

struct TDetailsOfCacheRec;
typedef TDetailsOfCacheRec *PDetailsOfCacheRec;

#pragma pack(push,1)
struct TDetailsOfCacheRec
{
	
public:
	TDetailsOfCacheFlags Cached;
	WideString Caption;
	TSHColumnStates States;
} ;
#pragma pack(pop)

typedef DynamicArray<TDetailsOfCacheRec >  TDetailsOfCacheArray;

#pragma pack(push,1)
struct TCacheData
{
	
public:
	TCacheAttributes Attributes;
	int SmallIcon;
	int SmallOpenIcon;
	WideString InFolderName;
	WideString NormalName;
	WideString ParsedName;
	WideString CreationTime;
	WideString LastAccessTime;
	WideString LastWriteTime;
	WideString FileSize;
	WideString FileSizeKB;
	WideString FileType;
	__int64 FileSizeInt64;
	int SupportedColumns;
	__int64 FolderSize;
	int OverlayIndex;
	int OverlayIconIndex;
	DynamicArray<TDetailsOfCacheRec >  DetailsOfCache;
} ;
#pragma pack(pop)

#pragma pack(push,1)
struct TShellCacheRec
{
	
public:
	TShellCache ShellCacheFlags;
	TCacheData Data;
} ;
#pragma pack(pop)

struct TSHGetFileInfoRec;
typedef TSHGetFileInfoRec *PSHGetFileInfoRec;

#pragma pack(push,1)
struct TSHGetFileInfoRec
{
	
public:
	WideString FileType;
} ;
#pragma pack(pop)

#pragma option push -b-
enum TShellContextMenuFlag { cmfCanRename, cmfDefaultOnly, cmfExplore, cmfExtendedVerbs, cmfIncludeStatic, cmfItemMenu, cmfNoDefault, cmfNormal, cmfNoVerbs, cmfVerbsOnly };
#pragma option pop

typedef Set<TShellContextMenuFlag, cmfCanRename, cmfVerbsOnly>  TShellContextMenuFlags;

class DELPHICLASS TNamespace;
typedef DynamicArray<TNamespace* >  TNamespaceArray;

class DELPHICLASS TCommonShellContextMenu;
typedef void __fastcall (__closure *TCommonShellMenuEvent)(TCommonShellContextMenu* Sender);

typedef void __fastcall (__closure *TCommonShellMenuInvokeEvent)(TCommonShellContextMenu* Sender, Menus::TMenuItem* MenuItem, Shlobj::PCMInvokeCommandInfo InvokeInfo, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuMergeEvent)(TCommonShellContextMenu* Sender, HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags);

typedef void __fastcall (__closure *TCommonShellMenuItemEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuNewItemEvent)(TCommonShellContextMenu* Sender, TNamespace* NS);

typedef void __fastcall (__closure *TCommonShellMenuCopyEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuCreateShortcutEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuCutEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuDeleteEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuNewFolderEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuPasteEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuPasteLinkEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuPasteShortCutEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

typedef void __fastcall (__closure *TCommonShellMenuProperitesEvent)(TCommonShellContextMenu* Sender, _di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &Handled);

class DELPHICLASS EVSTInvalidFileName;
class PASCALIMPLEMENTATION EVSTInvalidFileName : public Sysutils::Exception 
{
	typedef Sysutils::Exception inherited;
	
public:
	#pragma option push -w-inl
	/* Exception.Create */ inline __fastcall EVSTInvalidFileName(const AnsiString Msg) : Sysutils::Exception(Msg) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateFmt */ inline __fastcall EVSTInvalidFileName(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateRes */ inline __fastcall EVSTInvalidFileName(int Ident)/* overload */ : Sysutils::Exception(Ident) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmt */ inline __fastcall EVSTInvalidFileName(int Ident, System::TVarRec const * Args, const int Args_Size)/* overload */ : Sysutils::Exception(Ident, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateHelp */ inline __fastcall EVSTInvalidFileName(const AnsiString Msg, int AHelpContext) : Sysutils::Exception(Msg, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateFmtHelp */ inline __fastcall EVSTInvalidFileName(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResHelp */ inline __fastcall EVSTInvalidFileName(int Ident, int AHelpContext)/* overload */ : Sysutils::Exception(Ident, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmtHelp */ inline __fastcall EVSTInvalidFileName(System::PResStringRec ResStringRec, System::TVarRec const * Args, const int Args_Size, int AHelpContext)/* overload */ : Sysutils::Exception(ResStringRec, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~EVSTInvalidFileName(void) { }
	#pragma option pop
	
};


class DELPHICLASS TStreamableClass;
class PASCALIMPLEMENTATION TStreamableClass : public Classes::TPersistent 
{
	typedef Classes::TPersistent inherited;
	
private:
	int FStreamVersion;
	
public:
	__fastcall TStreamableClass(void);
	virtual void __fastcall LoadFromFile(WideString FileName, int Version = 0x0, bool ReadVerFromStream = false);
	virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version = 0x0, bool ReadVerFromStream = false);
	virtual void __fastcall SaveToFile(WideString FileName, int Version = 0x0, bool ReadVerFromStream = false);
	virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x0, bool WriteVerToStream = false);
	__property int StreamVersion = {read=FStreamVersion, nodefault};
public:
	#pragma option push -w-inl
	/* TPersistent.Destroy */ inline __fastcall virtual ~TStreamableClass(void) { }
	#pragma option pop
	
};


class DELPHICLASS TStreamableList;
class PASCALIMPLEMENTATION TStreamableList : public Classes::TList 
{
	typedef Classes::TList inherited;
	
private:
	int FStreamVersion;
	
public:
	__fastcall TStreamableList(void);
	virtual void __fastcall LoadFromFile(WideString FileName, int Version = 0x0, bool ReadVerFromStream = false);
	virtual void __fastcall LoadFromStream(Classes::TStream* S, int Version = 0x0, bool ReadVerFromStream = false);
	virtual void __fastcall SaveToFile(WideString FileName, int Version = 0x0, bool ReadVerFromStream = false);
	virtual void __fastcall SaveToStream(Classes::TStream* S, int Version = 0x0, bool WriteVerToStream = false);
	__property int StreamVersion = {read=FStreamVersion, nodefault};
public:
	#pragma option push -w-inl
	/* TList.Destroy */ inline __fastcall virtual ~TStreamableList(void) { }
	#pragma option pop
	
};


class DELPHICLASS TReferenceCounted;
class PASCALIMPLEMENTATION TReferenceCounted : public System::TObject 
{
	typedef System::TObject inherited;
	
protected:
	int FRefCount;
	
public:
	void __fastcall AddRef(void);
	void __fastcall Release(void);
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TReferenceCounted(void) : System::TObject() { }
	#pragma option pop
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TReferenceCounted(void) { }
	#pragma option pop
	
};


class DELPHICLASS TReferenceCountedList;
class PASCALIMPLEMENTATION TReferenceCountedList : public Classes::TList 
{
	typedef Classes::TList inherited;
	
protected:
	int FRefCount;
	
public:
	void __fastcall AddRef(void);
	void __fastcall Release(void);
	__property int RefCount = {read=FRefCount, nodefault};
public:
	#pragma option push -w-inl
	/* TList.Destroy */ inline __fastcall virtual ~TReferenceCountedList(void) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TReferenceCountedList(void) : Classes::TList() { }
	#pragma option pop
	
};


class DELPHICLASS TExtractImage;
class PASCALIMPLEMENTATION TExtractImage : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	unsigned FFlags;
	unsigned FPriority;
	unsigned FHeight;
	unsigned FWidth;
	unsigned FColorDepth;
	Mpshelltypes::_di_IExtractImage FExtractImageInterface;
	Mpshelltypes::_di_IExtractImage2 FExtractImage2Interface;
	TNamespace* FOwner;
	bool FPathExtracted;
	Graphics::TBitmap* __fastcall GetImage(void);
	WideString __fastcall GetImagePath();
	Mpshelltypes::_di_IExtractImage __fastcall GetExtractImageInterface();
	Mpshelltypes::_di_IExtractImage2 __fastcall GetExtractImageInterface2();
	
protected:
	__property bool PathExtracted = {read=FPathExtracted, write=FPathExtracted, nodefault};
	
public:
	__fastcall TExtractImage(void);
	__property unsigned ColorDepth = {read=FColorDepth, write=FColorDepth, nodefault};
	__property WideString ImagePath = {read=GetImagePath};
	__property Graphics::TBitmap* Image = {read=GetImage};
	__property Mpshelltypes::_di_IExtractImage ExtractImageInterface = {read=GetExtractImageInterface};
	__property Mpshelltypes::_di_IExtractImage2 ExtractImage2Interface = {read=GetExtractImageInterface2};
	__property unsigned Flags = {read=FFlags, write=FFlags, nodefault};
	__property unsigned Height = {read=FHeight, write=FHeight, nodefault};
	__property TNamespace* Owner = {read=FOwner, write=FOwner};
	__property unsigned Priority = {read=FPriority, nodefault};
	__property unsigned Width = {read=FWidth, write=FWidth, nodefault};
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TExtractImage(void) { }
	#pragma option pop
	
};


class DELPHICLASS TVirtualShellLink;
class PASCALIMPLEMENTATION TVirtualShellLink : public Classes::TComponent 
{
	typedef Classes::TComponent inherited;
	
private:
	WideString FFileName;
	_di_IShellLinkA FShellLinkA;
	_di_IShellLinkW FShellLinkW;
	int FIconIndex;
	_ITEMIDLIST *FTargetIDList;
	TCmdShow FShowCmd;
	THotKeyModifiers FHotKeyModifiers;
	WideString FTargetPath;
	WideString FArguments;
	WideString FDescription;
	WideString FWorkingDirectory;
	WideString FIconLocation;
	Word FHotKey;
	bool FSilentWrite;
	_di_IShellLinkA __fastcall GetShellLinkAInterface();
	_di_IShellLinkW __fastcall GetShellLinkWInterface();
	
protected:
	void __fastcall FreeTargetIDList(void);
	
public:
	__fastcall virtual ~TVirtualShellLink(void);
	bool __fastcall ReadLink(WideString LinkFileName);
	bool __fastcall WriteLink(WideString LinkFileName);
	__property WideString Arguments = {read=FArguments, write=FArguments};
	__property WideString Description = {read=FDescription, write=FDescription};
	__property WideString FileName = {read=FFileName, write=FFileName};
	__property Word HotKey = {read=FHotKey, write=FHotKey, nodefault};
	__property THotKeyModifiers HotKeyModifiers = {read=FHotKeyModifiers, write=FHotKeyModifiers, nodefault};
	__property int IconIndex = {read=FIconIndex, write=FIconIndex, nodefault};
	__property WideString IconLocation = {read=FIconLocation, write=FIconLocation};
	__property Shlobj::PItemIDList TargetIDList = {read=FTargetIDList, write=FTargetIDList};
	__property _di_IShellLinkA ShellLinkAInterface = {read=GetShellLinkAInterface};
	__property _di_IShellLinkW ShellLinkWInterface = {read=GetShellLinkWInterface};
	__property TCmdShow ShowCmd = {read=FShowCmd, write=FShowCmd, nodefault};
	__property bool SilentWrite = {read=FSilentWrite, write=FSilentWrite, nodefault};
	__property WideString TargetPath = {read=FTargetPath, write=FTargetPath};
	__property WideString WorkingDirectory = {read=FWorkingDirectory, write=FWorkingDirectory};
public:
	#pragma option push -w-inl
	/* TComponent.Create */ inline __fastcall virtual TVirtualShellLink(Classes::TComponent* AOwner) : Classes::TComponent(AOwner) { }
	#pragma option pop
	
};


class DELPHICLASS TShellSortHelper;
class PASCALIMPLEMENTATION TShellSortHelper : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	TFileSort FFileSort;
	
public:
	virtual int __fastcall CompareIDSort(int SortColumn, TNamespace* NS1, TNamespace* NS2);
	virtual int __fastcall DiscriminateFolders(TNamespace* NS1, TNamespace* NS2);
	virtual int __fastcall SortFileSize(TNamespace* NS1, TNamespace* NS2);
	virtual int __fastcall SortFileTime(const _FILETIME &FT1, const _FILETIME &FT2, TNamespace* NS1, TNamespace* NS2);
	virtual int __fastcall SortString(WideString S1, WideString S2, TNamespace* NS1, TNamespace* NS2);
	virtual int __fastcall SortType(TNamespace* NS1, TNamespace* NS2);
	__property TFileSort FileSort = {read=FFileSort, write=FFileSort, nodefault};
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TShellSortHelper(void) : System::TObject() { }
	#pragma option pop
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TShellSortHelper(void) { }
	#pragma option pop
	
};


typedef bool __fastcall (__closure *TEnumFolderCallback)(HWND MessageWnd, Shlobj::PItemIDList APIDL, TNamespace* AParent, void * Data, bool &Terminate);

typedef void __fastcall (__closure *TContextMenuCmdCallback)(TNamespace* Namespace, WideString Verb, int MenuItemID, bool &Handled);

typedef void __fastcall (__closure *TContextMenuShowCallback)(TNamespace* Namespace, HMENU Menu, bool &Allow);

typedef void __fastcall (__closure *TContextMenuAfterCmdCallback)(TNamespace* Namespace, WideString Verb, int MenuItemID, bool Successful);

class PASCALIMPLEMENTATION TNamespace : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	_ITEMIDLIST *FAbsolutePIDL;
	TCategoriesInfo FCatInfo;
	Mpshelltypes::_di_IContextMenu FCurrentContextMenu;
	Mpshelltypes::_di_IContextMenu2 FCurrentContextMenu2;
	_di_IDropTarget FDropTargetInterface;
	TExtractImage* FExtractImage;
	Graphics::TBitmap* FImage;
	int FNamespaceID;
	Classes::TWndMethod FOldWndProcForContextMenu;
	TNamespace* FParent;
	_ITEMIDLIST *FRelativePIDL;
	Mpshelltypes::_di_IShellDetailsBCB6 FShellDetailsInterface;
	_di_IShellFolder FShellFolder;
	_di_IShellFolder2 FShellFolder2;
	_di_IShellIcon FShellIconInterface;
	TVirtualShellLink* FShellLink;
	TSHGetFileInfoRec *FSHGetFileInfoRec;
	TNamespaceStates FStates;
	int FTag;
	DynamicArray<int >  FTileDetail;
	_di_IQueryInfo FQueryInfoInterface;
	_WIN32_FIND_DATAA *FWin32FindDataA;
	_WIN32_FIND_DATAW *FWin32FindDataW;
	bool FSystemIsSuperHidden;
	Mpshelltypes::_di_IShellIconOverlay FShellIconOverlayInterface;
	Mpshelltypes::_di_ICategoryProvider FCategoryProviderInterface;
	Mpshelltypes::_di_IBrowserFrameOptions FBrowserFrameOptionsInterface;
	Mpshelltypes::_di_IQueryAssociations FQueryAssociationsInterface;
	int __fastcall GetCategoryCount(void);
	TNamespace* __fastcall GetParent(void);
	
protected:
	TShellCacheRec FShellCache;
	virtual bool __fastcall GetArchive(void);
	virtual WideString __fastcall GetAttributesString();
	virtual bool __fastcall GetBrowsable(void);
	virtual Mpshelltypes::_di_IBrowserFrameOptions __fastcall GetBrowserFrameOptionsInterface();
	virtual bool __fastcall GetCanCopy(void);
	virtual bool __fastcall GetCanDelete(void);
	virtual bool __fastcall GetCanLink(void);
	virtual bool __fastcall GetCanMoniker(void);
	virtual bool __fastcall GetCanMove(void);
	virtual bool __fastcall GetCanRename(void);
	virtual Mpshelltypes::_di_ICategoryProvider __fastcall GetCategoryProviderInterface();
	virtual GUID __fastcall GetCLSID();
	virtual bool __fastcall GetCompressed(void);
	virtual Mpshelltypes::_di_IContextMenu2 __fastcall GetContextMenu2Interface();
	virtual Mpshelltypes::_di_IContextMenu3 __fastcall GetContextMenu3Interface();
	virtual Mpshelltypes::_di_IContextMenu __fastcall GetContextMenuInterface();
	virtual System::TDateTime __fastcall GetCreationDateTime(void);
	virtual WideString __fastcall GetCreationTime();
	virtual _FILETIME __fastcall GetCreationTimeRaw();
	virtual _di_IDataObject __fastcall GetDataObjectInterface();
	virtual TObjectDescription __fastcall GetDescription(void);
	virtual bool __fastcall GetDetailsSupported(void);
	virtual bool __fastcall GetDirectory(void);
	virtual bool __fastcall GetDropTarget(void);
	virtual _di_IDropTarget __fastcall GetDropTargetInterface();
	virtual bool __fastcall GetEncrypted(void);
	virtual WideString __fastcall GetExtension();
	virtual _di_IExtractIconA __fastcall GetExtractIconAInterface();
	virtual _di_IExtractIconW __fastcall GetExtractIconWInterface();
	virtual TExtractImage* __fastcall GetExtractImage(void);
	virtual WideString __fastcall GetFileName();
	virtual bool __fastcall GetFileSysAncestor(void);
	virtual bool __fastcall GetFileSystem(void);
	virtual WideString __fastcall GetFileType();
	virtual bool __fastcall GetFolder(void);
	virtual bool __fastcall GetFreePIDLOnDestroy(void);
	virtual bool __fastcall GetGhosted(void);
	virtual bool __fastcall GetHasPropSheet(void);
	virtual bool __fastcall GetHasStorage(void);
	virtual bool __fastcall GetHasSubFolder(void);
	virtual bool __fastcall GetHidden(void);
	virtual bool __fastcall GetIconIndexChanged(void);
	virtual WideString __fastcall GetInfoTip();
	virtual bool __fastcall GetIsSlow(void);
	virtual System::TDateTime __fastcall GetLastAccessDateTime(void);
	virtual WideString __fastcall GetLastAccessTime();
	virtual _FILETIME __fastcall GetLastAccessTimeRaw();
	virtual System::TDateTime __fastcall GetLastWriteDateTime(void);
	virtual WideString __fastcall GetLastWriteTime();
	virtual _FILETIME __fastcall GetLastWriteTimeRaw();
	virtual bool __fastcall GetLink(void);
	virtual WideString __fastcall GetNameAddressbar();
	virtual WideString __fastcall GetNameAddressbarInFolder();
	virtual WideString __fastcall GetNameForEditing();
	virtual WideString __fastcall GetNameForEditingInFolder();
	virtual WideString __fastcall GetNameForParsing();
	virtual WideString __fastcall GetNameForParsingInFolder();
	virtual WideString __fastcall GetNameInFolder();
	virtual WideString __fastcall GetNameNormal();
	virtual WideString __fastcall GetNameParseAddress();
	virtual WideString __fastcall GetNameParseAddressInFolder();
	virtual bool __fastcall GetNewContent(void);
	virtual bool __fastcall GetNonEnumerated(void);
	virtual bool __fastcall GetNormal(void);
	virtual bool __fastcall GetOffLine(void);
	virtual int __fastcall GetOverlayIconIndex(void);
	virtual int __fastcall GetOverlayIndex(void);
	virtual Mpshelltypes::_di_IShellDetailsBCB6 __fastcall GetParentShellDetailsInterface();
	virtual _di_IShellFolder __fastcall GetParentShellFolder();
	virtual _di_IShellFolder2 __fastcall GetParentShellFolder2();
	virtual Mpshelltypes::_di_IQueryAssociations __fastcall GetQueryAssociationsInterface();
	virtual _di_IQueryInfo __fastcall GetQueryInfoInterface();
	virtual bool __fastcall GetReadOnly(void);
	virtual bool __fastcall GetReadOnlyFile(void);
	virtual bool __fastcall GetReparsePoint(void);
	virtual bool __fastcall GetRemovable(void);
	virtual bool __fastcall GetShare(void);
	virtual Mpshelltypes::_di_IShellDetailsBCB6 __fastcall GetShellDetailsInterface();
	virtual _di_IShellFolder __fastcall GetShellFolder();
	virtual _di_IShellFolder2 __fastcall GetShellFolder2();
	virtual _di_IShellIcon __fastcall GetShellIconInterface();
	virtual Mpshelltypes::_di_IShellIconOverlay __fastcall GetShellIconOverlayInterface();
	virtual TVirtualShellLink* __fastcall GetShellLink(void);
	virtual WideString __fastcall GetShortFileName();
	virtual WideString __fastcall GetSizeOfFile();
	virtual WideString __fastcall GetSizeOfFileDiskUsage();
	virtual __int64 __fastcall GetSizeOfFileInt64(void);
	virtual WideString __fastcall GetSizeOfFileKB();
	virtual bool __fastcall GetSparseFile(void);
	virtual bool __fastcall GetStorage(void);
	virtual bool __fastcall GetStorageAncestor(void);
	virtual bool __fastcall GetStream(void);
	virtual bool __fastcall GetSubFolders(void);
	virtual bool __fastcall GetSubItems(void);
	virtual bool __fastcall GetSystem(void);
	virtual bool __fastcall GetTemporary(void);
	virtual bool __fastcall GetThreadedDetailLoaded(int ColumnIndex);
	virtual bool __fastcall GetThreadedDetailLoading(int ColumnIndex);
	virtual bool __fastcall GetThreadedIconLoaded(void);
	virtual bool __fastcall GetThreadedImageLoaded(void);
	virtual bool __fastcall GetThreadedImageLoading(void);
	virtual bool __fastcall GetThreadIconLoading(void);
	virtual bool __fastcall GetValid(void);
	HWND __fastcall ParentWnd(void);
	void __fastcall EnsureDetailCache(void);
	void __fastcall ExecuteContextMenuVerbMultiPath(WideString Verb, TNamespaceArray Namespaces);
	void __fastcall LoadCategoryInfo(void);
	virtual void __fastcall SetFreePIDLOnDestroy(const bool Value);
	virtual void __fastcall SetIconIndexChanged(const bool Value);
	virtual void __fastcall SetThreadedDetailLoaded(int ColumnIndex, bool Value);
	virtual void __fastcall SetThreadedDetailLoading(int ColumnIndex, bool Value);
	virtual void __fastcall SetThreadIconLoading(const bool Value);
	virtual void __fastcall SetThreadImageLoading(const bool Value);
	Mpshelltypes::_di_ICategorizer __fastcall CreateCategory(const GUID &GUID);
	bool __fastcall EnumFuncDummy(HWND MessageWnd, Shlobj::PItemIDList APIDL, TNamespace* AParent, void * Data, bool &Terminate);
	WideString __fastcall ExplorerStyleAttributeStringList(bool CapitalLetters);
	WideString __fastcall DisplayNameOf(unsigned Flags);
	void __fastcall GetDataFromIDList(void);
	void __fastcall GetFileTimes(void);
	void __fastcall GetSHFileInfo(void);
	TMenuItemIDArray __fastcall InjectCustomSubMenu(HMENU Menu, AnsiString Caption, Menus::TPopupMenu* PopupMenu, HMENU &SubMenu);
	Mpshelltypes::_di_IContextMenu __fastcall InternalGetContextMenuInterface(Mpcommonobjects::TPIDLArray PIDLArray);
	_di_IDataObject __fastcall InternalGetDataObjectInterface(Mpcommonobjects::TPIDLArray PIDLArray);
	bool __fastcall InternalShowContextMenu(Controls::TWinControl* Owner, TContextMenuCmdCallback ContextMenuCmdCallback, TContextMenuShowCallback ContextMenuShowCallback, TContextMenuAfterCmdCallback ContextMenuAfterCmdCallback, Mpcommonobjects::TPIDLArray PIDLArray, Types::PPoint Position, Menus::TPopupMenu* CustomShellSubMenu, WideString CustomSubMenuCaption);
	bool __fastcall InternalSubItems(unsigned Flags);
	void __fastcall ReplacePIDL(Shlobj::PItemIDList NewPIDL, TNamespace* AParent);
	bool __fastcall ShowContextMenuMultiPath(Controls::TWinControl* Owner, TNamespace* Focused, TNamespaceArray Namespaces, Types::PPoint Position = (void *)(0x0));
	void __fastcall WindowProcForContextMenu(Messages::TMessage &Message);
	__property TCategoriesInfo CatInfo = {read=FCatInfo, write=FCatInfo};
	__property Mpshelltypes::_di_IContextMenu2 CurrentContextMenu2 = {read=FCurrentContextMenu2, write=FCurrentContextMenu2};
	__property Mpshelltypes::_di_IContextMenu CurrentContextMenu = {read=FCurrentContextMenu, write=FCurrentContextMenu};
	__property TShellCacheRec ShellCache = {read=FShellCache, write=FShellCache};
	__property bool SystemIsSuperHidden = {read=FSystemIsSuperHidden, write=FSystemIsSuperHidden, nodefault};
	
public:
	__fastcall TNamespace(Shlobj::PItemIDList PIDL, TNamespace* AParent);
	__fastcall virtual ~TNamespace(void);
	__fastcall virtual TNamespace(int CustomID, TNamespace* AParent);
	__fastcall virtual TNamespace(WideString FileName);
	virtual bool __fastcall CanCopyAll(TNamespaceArray NamespaceArray);
	virtual bool __fastcall CanCutAll(TNamespaceArray NamespaceArray);
	virtual bool __fastcall CanDeleteAll(TNamespaceArray NamespaceArray);
	virtual bool __fastcall CanPasteToAll(TNamespaceArray NamespaceArray);
	virtual bool __fastcall CanShowPropertiesOfAll(TNamespaceArray NamespaceArray);
	virtual TNamespace* __fastcall Clone(bool ReleasePIDLOnDestroy);
	virtual Shortint __fastcall ComparePIDL(Shlobj::PItemIDList PIDLToCompare, bool IsAbsolutePIDL, int Column = 0x0);
	virtual WideString __fastcall ContextMenuItemHelp(unsigned MenuItemID);
	virtual WideString __fastcall ContextMenuVerb(unsigned MenuItemID);
	virtual bool __fastcall Copy(TNamespaceArray NamespaceArray);
	virtual bool __fastcall Cut(TNamespaceArray NamespaceArray);
	virtual _di_IDataObject __fastcall DataObjectMulti(TNamespaceArray NamespaceArray);
	virtual bool __fastcall Delete(TNamespaceArray NamespaceArray);
	virtual Classes::TAlignment __fastcall DetailsAlignment(int ColumnIndex);
	virtual WideString __fastcall DetailsColumnTitle(int ColumnIndex);
	virtual WideString __fastcall DetailsDefaultColumnTitle(int ColumnIndex);
	virtual WideString __fastcall DetailsDefaultOf(int ColumnIndex);
	virtual int __fastcall DetailsDefaultSupportedColumns(void);
	virtual TSHColumnStates __fastcall DetailsGetDefaultColumnState(int ColumnIndex);
	virtual WideString __fastcall DetailsOf(int ColumnIndex);
	virtual WideString __fastcall DetailsOfEx(int ColumnIndex);
	virtual int __fastcall DetailsSupportedColumns(void);
	virtual TVisibleColumnIndexArray __fastcall DetailsSupportedVisibleColumns();
	virtual bool __fastcall DetailsValidIndex(int DetailsIndex);
	virtual HRESULT __fastcall DragEffect(int grfKeyState);
	virtual HRESULT __fastcall DragEnter(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint &pt, int &dwEffect);
	virtual HRESULT __fastcall DragLeave(void);
	virtual HRESULT __fastcall DragOver(int grfKeyState, const Types::TPoint &pt, int &dwEffect);
	virtual HRESULT __fastcall Drop(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint &pt, int &dwEffect);
	virtual int __fastcall EnumerateFolder(HWND MessageWnd, bool Folders, bool NonFolders, bool IncludeHidden, TEnumFolderCallback EnumFunc, void * UserData);
	virtual int __fastcall EnumerateFolderEx(HWND MessageWnd, TFileObjects FileObjects, TEnumFolderCallback EnumFunc, void * UserData, Classes::TNotifyEvent AfterValidEnumIDList = 0x0);
	virtual bool __fastcall ExecuteContextMenuVerb(WideString AVerb, Mpcommonobjects::TPIDLArray APIDLArray, HWND MessageWindowParent = (HWND)(0x0));
	virtual __int64 __fastcall FolderSize(bool Invalidate, bool RecurseFolder = false);
	virtual int __fastcall GetIconIndex(bool OpenIcon, TIconSize IconSize, bool ForceLoad = true);
	virtual Graphics::TBitmap* __fastcall GetImage(void);
	bool __fastcall VerifyPIDLRelationship(TNamespaceArray NamespaceArray, bool Silent = false);
	virtual void __fastcall HandleContextMenuMsg(int Msg, int wParam, int lParam, int &Result);
	virtual void __fastcall InvalidateCache(void);
	void __fastcall InvalidateDetailsOfCache(bool FlushStrings);
	virtual void __fastcall InvalidateNamespace(bool RefreshIcon = true);
	virtual void __fastcall InvalidateRelativePIDL(TFileObjects FileObjects);
	virtual void __fastcall InvalidateThumbImage(void);
	virtual bool __fastcall IsChildByNamespace(TNamespace* TestNamespace, bool Immediate);
	virtual bool __fastcall IsChildByPIDL(Shlobj::PItemIDList TestPIDL, bool Immediate);
	virtual bool __fastcall IsChildOfRemovableDrive(void);
	virtual bool __fastcall IsControlPanel(void);
	virtual bool __fastcall IsControlPanelChildFolder(void);
	virtual bool __fastcall IsDesktop(void);
	virtual bool __fastcall IsMyComputer(void);
	virtual bool __fastcall IsNetworkNeighborhood(void);
	virtual bool __fastcall IsNetworkNeighborhoodChild(void);
	virtual bool __fastcall IsParentByNamespace(TNamespace* TestNamespace, bool Immediate);
	virtual bool __fastcall IsParentByPIDL(Shlobj::PItemIDList TestPIDL, bool Immediate);
	bool __fastcall IsRecycleBin(void);
	virtual bool __fastcall OkToBrowse(bool ShowExplorerMsg);
	virtual Shlobj::PItemIDList __fastcall ParseDisplayName(void)/* overload */;
	virtual Shlobj::PItemIDList __fastcall ParseDisplayName(WideString Path)/* overload */;
	virtual bool __fastcall Paste(TNamespaceArray NamespaceArray, bool AsShortCut = false);
	void __fastcall SetDetailByThread(int ColumnIndex, WideString Detail);
	virtual void __fastcall SetIconIndexByThread(int IconIndex, bool ClearThreadLoading);
	virtual void __fastcall SetImageByThread(Graphics::TBitmap* Bitmap, bool ClearThreadLoading);
	virtual bool __fastcall SetNameOf(WideString NewName);
	virtual bool __fastcall ShellExecuteNamespace(WideString WorkingDir, WideString CmdLineArguments, bool ExecuteFolder = false, bool ExecuteFolderShortCut = false, bool RunInThread = false);
	virtual bool __fastcall ShowContextMenu(Controls::TWinControl* Owner, TContextMenuCmdCallback ContextMenuCmdCallback, TContextMenuShowCallback ContextMenuShowCallback, TContextMenuAfterCmdCallback ContextMenuAfterCmdCallback, Types::PPoint Position = (void *)(0x0), Menus::TPopupMenu* CustomShellSubMenu = (Menus::TPopupMenu*)(0x0), WideString CustomSubMenuCaption = L"");
	virtual bool __fastcall ShowContextMenuMulti(Controls::TWinControl* Owner, TContextMenuCmdCallback ContextMenuCmdCallback, TContextMenuShowCallback ContextMenuShowCallback, TContextMenuAfterCmdCallback ContextMenuAfterCmdCallback, TNamespaceArray NamespaceArray, Types::PPoint Position = (void *)(0x0), Menus::TPopupMenu* CustomShellSubMenu = (Menus::TPopupMenu*)(0x0), WideString CustomSubMenuCaption = L"");
	virtual void __fastcall ShowPropertySheet(void);
	virtual void __fastcall ShowPropertySheetMulti(TNamespaceArray NamespaceArray, bool UseSHMultiFileProperties = true, bool ForceNonMultiPath = false);
	virtual bool __fastcall SubFoldersEx(unsigned Flags = (unsigned)(0x20));
	virtual bool __fastcall SubItemsEx(unsigned Flags = (unsigned)(0x40));
	virtual bool __fastcall TestAttributesOf(unsigned Flags, bool FlushCache, bool SoftFlush = false);
	__property Shlobj::PItemIDList AbsolutePIDL = {read=FAbsolutePIDL, write=FAbsolutePIDL};
	__property bool AdvDetailsSupported = {read=GetDetailsSupported, nodefault};
	__property bool Browsable = {read=GetBrowsable, nodefault};
	__property Mpshelltypes::_di_IBrowserFrameOptions BrowserFrameOptionsInterface = {read=GetBrowserFrameOptionsInterface};
	__property bool CanCopy = {read=GetCanCopy, nodefault};
	__property bool CanDelete = {read=GetCanDelete, nodefault};
	__property bool CanLink = {read=GetCanLink, nodefault};
	__property bool CanMoniker = {read=GetCanMoniker, nodefault};
	__property bool CanMove = {read=GetCanMove, nodefault};
	__property bool CanRename = {read=GetCanRename, nodefault};
	__property int CategoryCount = {read=GetCategoryCount, nodefault};
	__property Mpshelltypes::_di_ICategoryProvider CategoryProviderInterface = {read=GetCategoryProviderInterface};
	__property GUID CLSID = {read=GetCLSID};
	__property Mpshelltypes::_di_IContextMenu ContextMenuInterface = {read=GetContextMenuInterface};
	__property Mpshelltypes::_di_IContextMenu2 ContextMenu2Interface = {read=GetContextMenu2Interface};
	__property Mpshelltypes::_di_IContextMenu3 ContextMenu3Interface = {read=GetContextMenu3Interface};
	__property _di_IDataObject DataObjectInterface = {read=GetDataObjectInterface};
	__property TObjectDescription Description = {read=GetDescription, nodefault};
	__property bool DropTarget = {read=GetDropTarget, nodefault};
	__property _di_IDropTarget DropTargetInterface = {read=GetDropTargetInterface};
	__property bool Encrypted = {read=GetEncrypted, nodefault};
	__property TExtractImage* ExtractImage = {read=GetExtractImage};
	__property _di_IExtractIconA ExtractIconAInterface = {read=GetExtractIconAInterface};
	__property _di_IExtractIconW ExtractIconWInterface = {read=GetExtractIconWInterface};
	__property bool FileSystem = {read=GetFileSystem, nodefault};
	__property bool FileSysAncestor = {read=GetFileSysAncestor, nodefault};
	__property bool Folder = {read=GetFolder, nodefault};
	__property bool FreePIDLOnDestroy = {read=GetFreePIDLOnDestroy, write=SetFreePIDLOnDestroy, nodefault};
	__property bool Ghosted = {read=GetGhosted, nodefault};
	__property bool HasPropSheet = {read=GetHasPropSheet, nodefault};
	__property bool HasStorage = {read=GetHasStorage, nodefault};
	__property bool HasSubFolder = {read=GetHasSubFolder, nodefault};
	__property bool IconIndexChanged = {read=GetIconIndexChanged, write=SetIconIndexChanged, nodefault};
	__property bool IsSlow = {read=GetIsSlow, nodefault};
	__property bool Link = {read=GetLink, nodefault};
	__property WideString InfoTip = {read=GetInfoTip};
	__property WideString NameAddressbar = {read=GetNameAddressbar};
	__property WideString NameAddressbarInFolder = {read=GetNameAddressbarInFolder};
	__property WideString NameForEditing = {read=GetNameForEditing};
	__property WideString NameForEditingInFolder = {read=GetNameForEditingInFolder};
	__property WideString NameForParsing = {read=GetNameForParsing};
	__property WideString NameForParsingInFolder = {read=GetNameForParsingInFolder};
	__property WideString NameInFolder = {read=GetNameInFolder};
	__property WideString NameNormal = {read=GetNameNormal};
	__property WideString NameParseAddress = {read=GetNameParseAddress};
	__property WideString NameParseAddressInFolder = {read=GetNameParseAddressInFolder};
	__property int NamespaceID = {read=FNamespaceID, nodefault};
	__property bool NewContent = {read=GetNewContent, nodefault};
	__property bool NonEnumerated = {read=GetNonEnumerated, nodefault};
	__property TNamespace* Parent = {read=GetParent};
	__property _di_IShellFolder ParentShellFolder = {read=GetParentShellFolder};
	__property _di_IShellFolder2 ParentShellFolder2 = {read=GetParentShellFolder2};
	__property Mpshelltypes::_di_IShellDetailsBCB6 ParentShellDetailsInterface = {read=GetParentShellDetailsInterface};
	__property Mpshelltypes::_di_IQueryAssociations QueryAssociationsInterface = {read=GetQueryAssociationsInterface};
	__property bool ReadOnly = {read=GetReadOnly, nodefault};
	__property Shlobj::PItemIDList RelativePIDL = {read=FRelativePIDL};
	__property bool Removable = {read=GetRemovable, nodefault};
	__property bool Share = {read=GetShare, nodefault};
	__property _di_IShellFolder ShellFolder = {read=GetShellFolder};
	__property _di_IShellFolder2 ShellFolder2 = {read=GetShellFolder2};
	__property Mpshelltypes::_di_IShellDetailsBCB6 ShellDetailsInterface = {read=GetShellDetailsInterface};
	__property TVirtualShellLink* ShellLink = {read=GetShellLink};
	__property _di_IShellIcon ShellIconInterface = {read=GetShellIconInterface};
	__property Mpshelltypes::_di_IShellIconOverlay ShellIconOverlayInterface = {read=GetShellIconOverlayInterface};
	__property WideString ShortFileName = {read=GetShortFileName};
	__property bool SparseFile = {read=GetSparseFile, nodefault};
	__property TNamespaceStates States = {read=FStates, write=FStates, nodefault};
	__property bool Storage = {read=GetStorage, nodefault};
	__property bool StorageAncestor = {read=GetStorageAncestor, nodefault};
	__property bool Stream = {read=GetStream, nodefault};
	__property bool SubFolders = {read=GetSubFolders, nodefault};
	__property bool SubItems = {read=GetSubItems, nodefault};
	__property int Tag = {read=FTag, write=FTag, nodefault};
	__property bool ThreadedDetailLoaded[int Column] = {read=GetThreadedDetailLoaded, write=SetThreadedDetailLoaded};
	__property bool ThreadedDetailLoading[int Column] = {read=GetThreadedDetailLoading, write=SetThreadedDetailLoading};
	__property bool ThreadedIconLoaded = {read=GetThreadedIconLoaded, nodefault};
	__property bool ThreadIconLoading = {read=GetThreadIconLoading, write=SetThreadIconLoading, nodefault};
	__property bool ThreadImageLoaded = {read=GetThreadedImageLoaded, nodefault};
	__property bool ThreadImageLoading = {read=GetThreadedImageLoading, write=SetThreadImageLoading, nodefault};
	__property Mpcommonutilities::TCommonIntegerDynArray TileDetail = {read=FTileDetail, write=FTileDetail};
	__property _di_IQueryInfo QueryInfoInterface = {read=GetQueryInfoInterface};
	__property Windows::PWin32FindDataA Win32FindDataA = {read=FWin32FindDataA};
	__property Windows::PWin32FindDataW Win32FindDataW = {read=FWin32FindDataW};
	__property WideString AttributesString = {read=GetAttributesString};
	__property bool Archive = {read=GetArchive, nodefault};
	__property bool Compressed = {read=GetCompressed, nodefault};
	__property WideString CreationTime = {read=GetCreationTime};
	__property System::TDateTime CreationDateTime = {read=GetCreationDateTime};
	__property _FILETIME CreationTimeRaw = {read=GetCreationTimeRaw};
	__property bool Directory = {read=GetDirectory, nodefault};
	__property WideString Extension = {read=GetExtension};
	__property WideString FileName = {read=GetFileName};
	__property WideString FileType = {read=GetFileType};
	__property bool Hidden = {read=GetHidden, nodefault};
	__property WideString LastAccessTime = {read=GetLastAccessTime};
	__property System::TDateTime LastAccessDateTime = {read=GetLastAccessDateTime};
	__property _FILETIME LastAccessTimeRaw = {read=GetLastAccessTimeRaw};
	__property WideString LastWriteTime = {read=GetLastWriteTime};
	__property System::TDateTime LastWriteDateTime = {read=GetLastWriteDateTime};
	__property _FILETIME LastWriteTimeRaw = {read=GetLastWriteTimeRaw};
	__property bool Normal = {read=GetNormal, nodefault};
	__property bool OffLine = {read=GetOffLine, nodefault};
	__property int OverlayIndex = {read=GetOverlayIndex, nodefault};
	__property int OverlayIconIndex = {read=GetOverlayIconIndex, nodefault};
	__property bool ReadOnlyFile = {read=GetReadOnlyFile, nodefault};
	__property bool ReparsePoint = {read=GetReparsePoint, nodefault};
	__property WideString SizeOfFile = {read=GetSizeOfFile};
	__property __int64 SizeOfFileInt64 = {read=GetSizeOfFileInt64};
	__property WideString SizeOfFileKB = {read=GetSizeOfFileKB};
	__property WideString SizeOfFileDiskUsage = {read=GetSizeOfFileDiskUsage};
	__property bool SystemFile = {read=GetSystem, nodefault};
	__property bool Temporary = {read=GetTemporary, nodefault};
	__property bool Valid = {read=GetValid, nodefault};
};


class DELPHICLASS TVirtualNameSpaceList;
class PASCALIMPLEMENTATION TVirtualNameSpaceList : public Contnrs::TObjectList 
{
	typedef Contnrs::TObjectList inherited;
	
public:
	TNamespace* operator[](int Index) { return Items[Index]; }
	
private:
	TNamespace* __fastcall GetItems(int Index);
	void __fastcall SetItems(int Index, TNamespace* ANamespace);
	
public:
	HIDESBASE int __fastcall Add(TNamespace* ANamespace);
	void __fastcall FillArray(TNamespaceArray &NamespaceArray);
	HIDESBASE int __fastcall IndexOf(TNamespace* ANamespace);
	HIDESBASE void __fastcall Insert(int Index, TNamespace* ANamespace);
	__property TNamespace* Items[int Index] = {read=GetItems, write=SetItems/*, default*/};
public:
	#pragma option push -w-inl
	/* TObjectList.Create */ inline __fastcall TVirtualNameSpaceList(void)/* overload */ : Contnrs::TObjectList() { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TList.Destroy */ inline __fastcall virtual ~TVirtualNameSpaceList(void) { }
	#pragma option pop
	
};


struct TMenuItemLink;
typedef TMenuItemLink *PMenuItemLink;

#pragma pack(push,4)
struct TMenuItemLink
{
	
public:
	unsigned MenuID;
	Menus::TMenuItem* Item;
} ;
#pragma pack(pop)

class DELPHICLASS TMenuItemMap;
class PASCALIMPLEMENTATION TMenuItemMap : public Classes::TList 
{
	typedef Classes::TList inherited;
	
public:
	PMenuItemLink operator[](int Index) { return Items[Index]; }
	
protected:
	HIDESBASE PMenuItemLink __fastcall Get(int Index);
	HIDESBASE void __fastcall Put(int Index, PMenuItemLink Item);
	
public:
	HIDESBASE PMenuItemLink __fastcall Add(void);
	HIDESBASE PMenuItemLink __fastcall First(void);
	HIDESBASE int __fastcall IndexOf(PMenuItemLink Item);
	virtual void __fastcall Clear(void);
	HIDESBASE PMenuItemLink __fastcall Insert(int Index);
	HIDESBASE PMenuItemLink __fastcall Last(void);
	HIDESBASE int __fastcall Remove(PMenuItemLink Item);
	__property PMenuItemLink Items[int Index] = {read=Get, write=Put/*, default*/};
public:
	#pragma option push -w-inl
	/* TList.Destroy */ inline __fastcall virtual ~TMenuItemMap(void) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TMenuItemMap(void) : Classes::TList() { }
	#pragma option pop
	
};


class PASCALIMPLEMENTATION TCommonShellContextMenu : public Classes::TComponent 
{
	typedef Classes::TComponent inherited;
	
private:
	_di_IShellFolder FActiveFolder;
	DynamicArray<Shlobj::PItemIDList >  FActivePIDLs;
	bool FCopyValidated;
	Mpshelltypes::_di_IContextMenu FCurrentContextMenu;
	Mpshelltypes::_di_IContextMenu2 FCurrentContextMenu2;
	bool FCutValidated;
	Mpcommonobjects::TCommonShellContextMenuExtensions FExtensions;
	bool FFromDesktop;
	TNamespace* FLocalFocused;
	DynamicArray<TNamespace* >  FLocalNamespaces;
	TMenuItemMap* FMenuMap;
	Classes::TWndMethod FOldWndProcForContextMenu;
	Classes::TStringList* FKeyStrings;
	TCommonShellMenuEvent FOnHide;
	TCommonShellMenuInvokeEvent FOnInvokeCommand;
	TCommonShellMenuMergeEvent FOnMenuMerge;
	TCommonShellMenuMergeEvent FOnMenuMergeBottom;
	TCommonShellMenuMergeEvent FOnMenuMergeTop;
	TCommonShellMenuItemEvent FOnShellMenuCopy;
	TCommonShellMenuItemEvent FOnShellMenuCreateShortcut;
	TCommonShellMenuItemEvent FOnShellMenuCut;
	TCommonShellMenuItemEvent FOnShellMenuDelete;
	TCommonShellMenuItemEvent FOnShellMenuNewFolder;
	TCommonShellMenuItemEvent FOnShellMenuPaste;
	TCommonShellMenuItemEvent FOnShellMenuPasteLink;
	TCommonShellMenuItemEvent FOnShellMenuPasteShortCut;
	TCommonShellMenuItemEvent FOnShellMenuProperites;
	TCommonShellMenuEvent FOnShow;
	bool FRenameMenuItem;
	void *FStub;
	bool FPasteMenuItem;
	_di_IDataObject FUIObjectOfDataObject;
	_di_IDropTarget FUIObjectOfDropTarget;
	
protected:
	virtual HRESULT __stdcall QueryInterface(const GUID &IID, /* out */ void *Obj);
	HIDESBASE int __stdcall _AddRef(void);
	HIDESBASE int __stdcall _Release(void);
	HRESULT __stdcall ParseDisplayName(HWND hwndOwner, void * pbcReserved, WideChar * lpszDisplayName, /* out */ unsigned &pchEaten, /* out */ Shlobj::PItemIDList &ppidl, unsigned &dwAttributes);
	HRESULT __stdcall EnumObjects(HWND hwndOwner, unsigned grfFlags, /* out */ _di_IEnumIDList &EnumIDList);
	HRESULT __stdcall BindToObject(Shlobj::PItemIDList pidl, void * pbcReserved, const GUID &riid, /* out */ void *ppvOut);
	HRESULT __stdcall BindToStorage(Shlobj::PItemIDList pidl, void * pbcReserved, const GUID &riid, /* out */ void *ppvObj);
	HRESULT __stdcall CompareIDs(int lParam, Shlobj::PItemIDList pidl1, Shlobj::PItemIDList pidl2);
	HRESULT __stdcall CreateViewObject(HWND hwndOwner, const GUID &riid, /* out */ void *ppvOut);
	HRESULT __stdcall GetAttributesOf(unsigned cidl, Shlobj::PItemIDList &apidl, unsigned &rgfInOut);
	HRESULT __stdcall GetUIObjectOf(HWND hwndOwner, unsigned cidl, Shlobj::PItemIDList &apidl, const GUID &riid, void * prgfInOut, /* out */ void *ppvOut);
	HRESULT __stdcall GetDisplayNameOf(Shlobj::PItemIDList pidl, unsigned uFlags, _STRRET &lpName);
	HRESULT __stdcall SetNameOf(HWND hwndOwner, Shlobj::PItemIDList pidl, WideChar * lpszName, unsigned uFlags, Shlobj::PItemIDList &ppidlOut);
	HRESULT __stdcall DragEnter(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint pt, int &dwEffect);
	HRESULT __stdcall DragOver(int grfKeyState, const Types::TPoint pt, int &dwEffect);
	HRESULT __stdcall DragLeave(void);
	HRESULT __stdcall Drop(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint pt, int &dwEffect);
	HRESULT __stdcall DefMenuCreateCallback(const _di_IShellFolder psf, HWND wnd, const _di_IDataObject pdtObj, unsigned uMsg, int WParm, int lParm);
	void __fastcall AddMenuKey(WideString Key);
	void __fastcall AddMenuKeys(Classes::TStringList* Keys);
	void __fastcall ClearKeys(void);
	virtual void __fastcall DoCopy(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoCreateShortCut(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoCut(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoDelete(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoHide(void);
	virtual void __fastcall DoInvokeCommand(Menus::TMenuItem* MenuItem, Shlobj::PCMInvokeCommandInfo InvokeInfo);
	virtual void __fastcall DoMenuMerge(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags);
	virtual void __fastcall DoMenuMergeBottom(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags);
	virtual void __fastcall DoMenuMergeTop(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags);
	virtual void __fastcall DoNewFolder(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoPaste(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoPasteLink(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoPasteShortCut(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoProperties(_di_IShellFolder ShellFolder, _di_IDataObject DataObject, bool &DoDefault);
	virtual void __fastcall DoShow(void);
	HKEY __fastcall DuplicateKey(HKEY Key);
	bool __fastcall FindCommandId(unsigned CmdID, Menus::TMenuItem* &MenuItem);
	void __stdcall HandleContextMenuMsg(int Msg, int wParam, int lParam, int &Result);
	bool __fastcall InternalShowContextMenu(Controls::TWinControl* Owner, Shlobj::PItemIDList ParentPIDL, Mpcommonobjects::TPIDLArray ChildPIDLs, WideString Verb, Types::PPoint Position = (void *)(0x0));
	void __fastcall LoadMultiFolderPIDLArray(TNamespaceArray Namespaces, Mpcommonobjects::TPIDLArray &PIDLs);
	virtual void __fastcall LoadRegistryKeyStrings(TNamespace* Focused) = 0 ;
	void __fastcall WindowProcForContextMenu(Messages::TMessage &Message);
	__property _di_IShellFolder ActiveFolder = {read=FActiveFolder, write=FActiveFolder};
	__property Mpcommonobjects::TPIDLArray ActivePIDLs = {read=FActivePIDLs, write=FActivePIDLs};
	__property bool CopyValidated = {read=FCopyValidated, write=FCopyValidated, nodefault};
	__property Mpshelltypes::_di_IContextMenu2 CurrentContextMenu2 = {read=FCurrentContextMenu2, write=FCurrentContextMenu2};
	__property Mpshelltypes::_di_IContextMenu CurrentContextMenu = {read=FCurrentContextMenu, write=FCurrentContextMenu};
	__property bool CutValidated = {read=FCutValidated, write=FCutValidated, nodefault};
	__property Mpcommonobjects::TCommonShellContextMenuExtensions Extensions = {read=FExtensions, write=FExtensions, nodefault};
	__property bool FromDesktop = {read=FFromDesktop, write=FFromDesktop, nodefault};
	__property Classes::TStringList* KeyStrings = {read=FKeyStrings, write=FKeyStrings};
	__property TNamespace* LocalFocused = {read=FLocalFocused, write=FLocalFocused};
	__property TNamespaceArray LocalNamespaces = {read=FLocalNamespaces, write=FLocalNamespaces};
	__property TMenuItemMap* MenuMap = {read=FMenuMap, write=FMenuMap};
	__property TCommonShellMenuEvent OnHide = {read=FOnHide, write=FOnHide};
	__property TCommonShellMenuInvokeEvent OnInvokeCommand = {read=FOnInvokeCommand, write=FOnInvokeCommand};
	__property TCommonShellMenuMergeEvent OnMenuMerge = {read=FOnMenuMerge, write=FOnMenuMerge};
	__property TCommonShellMenuMergeEvent OnMenuMergeBottom = {read=FOnMenuMergeBottom, write=FOnMenuMergeBottom};
	__property TCommonShellMenuMergeEvent OnMenuMergeTop = {read=FOnMenuMergeTop, write=FOnMenuMergeTop};
	__property TCommonShellMenuItemEvent OnShellMenuCopy = {read=FOnShellMenuCopy, write=FOnShellMenuCopy};
	__property TCommonShellMenuItemEvent OnShellMenuCreateShortCut = {read=FOnShellMenuCreateShortcut, write=FOnShellMenuCreateShortcut};
	__property TCommonShellMenuItemEvent OnShellMenuCut = {read=FOnShellMenuCut, write=FOnShellMenuCut};
	__property TCommonShellMenuItemEvent OnShellMenuDelete = {read=FOnShellMenuDelete, write=FOnShellMenuDelete};
	__property TCommonShellMenuItemEvent OnShellMenuNewFolder = {read=FOnShellMenuNewFolder, write=FOnShellMenuNewFolder};
	__property TCommonShellMenuItemEvent OnShellMenuPaste = {read=FOnShellMenuPaste, write=FOnShellMenuPaste};
	__property TCommonShellMenuItemEvent OnShellMenuPasteLink = {read=FOnShellMenuPasteLink, write=FOnShellMenuPasteLink};
	__property TCommonShellMenuItemEvent OnShellMenuPasteShortCut = {read=FOnShellMenuPasteShortCut, write=FOnShellMenuPasteShortCut};
	__property TCommonShellMenuItemEvent OnShellMenuProperites = {read=FOnShellMenuProperites, write=FOnShellMenuProperites};
	__property TCommonShellMenuEvent OnShow = {read=FOnShow, write=FOnShow};
	__property void * Stub = {read=FStub, write=FStub};
	__property bool RenameMenuItem = {read=FRenameMenuItem, write=FRenameMenuItem, default=1};
	__property bool PasteMenuItem = {read=FPasteMenuItem, write=FPasteMenuItem, default=1};
	__property _di_IDataObject UIObjectOfDataObject = {read=FUIObjectOfDataObject, write=FUIObjectOfDataObject};
	__property _di_IDropTarget UIObjectOfDropTarget = {read=FUIObjectOfDropTarget, write=FUIObjectOfDropTarget};
	
public:
	__fastcall virtual TCommonShellContextMenu(Classes::TComponent* AOwner);
	__fastcall virtual ~TCommonShellContextMenu(void);
	int __fastcall MergeMenuIntoContextMenu(Menus::TPopupMenu* Menu, HMENU ContextMenu, int Index, unsigned idStart);
	void __fastcall ClearMenuMap(void);
private:
	void *__IDropTarget;	/* IDropTarget */
	void *__IShellFolder;	/* IShellFolder */
	
public:
	#if defined(MANAGED_INTERFACE_OPERATORS)
	operator _di_IDropTarget()
	{
		_di_IDropTarget intf;
		GetInterface(intf);
		return intf;
	}
	#else
	operator IDropTarget*(void) { return (IDropTarget*)&__IDropTarget; }
	#endif
	#if defined(MANAGED_INTERFACE_OPERATORS)
	operator _di_IShellFolder()
	{
		_di_IShellFolder intf;
		GetInterface(intf);
		return intf;
	}
	#else
	operator IShellFolder*(void) { return (IShellFolder*)&__IShellFolder; }
	#endif
	#if defined(MANAGED_INTERFACE_OPERATORS)
	operator System::_di_IInterface()
	{
		System::_di_IInterface intf;
		GetInterface(intf);
		return intf;
	}
	#else
	operator IInterface*(void) { return (IInterface*)&__IDropTarget; }
	#endif
	
};


class DELPHICLASS TCommonShellBackgroundContextMenu;
class PASCALIMPLEMENTATION TCommonShellBackgroundContextMenu : public TCommonShellContextMenu 
{
	typedef TCommonShellContextMenu inherited;
	
private:
	bool FAutoDetectNewItem;
	Mpcommonobjects::TCommonPIDLList* FFinalItemList;
	Mpcommonobjects::TCommonPIDLList* FInitialItemList;
	TCommonShellMenuNewItemEvent FOnNewItem;
	Menus::TMenuItem* FPaste;
	Menus::TMenuItem* FPasteShortCut;
	Menus::TPopupMenu* FPopupMenuProperties;
	Menus::TPopupMenu* FPopupMenuPaste;
	Menus::TPopupMenu* FPopupMenuPasteShortCut;
	Menus::TMenuItem* FProperties;
	bool FShowPasteItem;
	bool FShowPasteShortCutItem;
	bool FShowPropertiesItem;
	
protected:
	void __fastcall ClickPaste(System::TObject* Sender);
	void __fastcall ClickPasteShortCut(System::TObject* Sender);
	void __fastcall ClickProperties(System::TObject* Sender);
	virtual void __fastcall DoHide(void);
	virtual void __fastcall DoMenuMerge(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags);
	virtual void __fastcall DoMenuMergeBottom(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags);
	virtual void __fastcall DoMenuMergeTop(HMENU Menu, unsigned IndexMenu, unsigned &CmdFirst, unsigned CmdLast, TShellContextMenuFlags Flags);
	virtual void __fastcall DoNewItem(TNamespace* NS);
	virtual void __fastcall DoShow(void);
	virtual void __fastcall LoadRegistryKeyStrings(TNamespace* Focused);
	__property Mpcommonobjects::TCommonPIDLList* FinalItemList = {read=FFinalItemList, write=FFinalItemList};
	__property Mpcommonobjects::TCommonPIDLList* InitialItemList = {read=FInitialItemList, write=FInitialItemList};
	__property Menus::TMenuItem* Paste = {read=FPaste, write=FPaste};
	__property Menus::TMenuItem* PasteShortCut = {read=FPasteShortCut, write=FPasteShortCut};
	__property Menus::TPopupMenu* PopupMenuProperties = {read=FPopupMenuProperties, write=FPopupMenuProperties};
	__property Menus::TPopupMenu* PopupMenuPaste = {read=FPopupMenuPaste, write=FPopupMenuPaste};
	__property Menus::TPopupMenu* PopupMenuPasteShortCut = {read=FPopupMenuPasteShortCut, write=FPopupMenuPasteShortCut};
	__property Menus::TMenuItem* Properties = {read=FProperties, write=FProperties};
	__property RenameMenuItem  = {default=0};
	__property PasteMenuItem  = {default=0};
	
public:
	__fastcall virtual TCommonShellBackgroundContextMenu(Classes::TComponent* AOwner);
	__fastcall virtual ~TCommonShellBackgroundContextMenu(void);
	bool __fastcall EnumCallback(HWND MessageWnd, Shlobj::PItemIDList APIDL, TNamespace* AParent, void * Data, bool &Terminate);
	virtual bool __fastcall ShowContextMenu(Controls::TWinControl* Owner, TNamespace* Root, Types::PPoint Position = (void *)(0x0));
	
__published:
	__property bool AutoDetectNewItem = {read=FAutoDetectNewItem, write=FAutoDetectNewItem, nodefault};
	__property OnHide ;
	__property OnInvokeCommand ;
	__property OnMenuMerge ;
	__property OnMenuMergeBottom ;
	__property OnMenuMergeTop ;
	__property TCommonShellMenuNewItemEvent OnNewItem = {read=FOnNewItem, write=FOnNewItem};
	__property OnShow ;
	__property bool ShowPasteItem = {read=FShowPasteItem, write=FShowPasteItem, default=1};
	__property bool ShowPasteShortCutItem = {read=FShowPasteShortCutItem, write=FShowPasteShortCutItem, default=1};
	__property bool ShowPropertiesItem = {read=FShowPropertiesItem, write=FShowPropertiesItem, default=1};
};


class DELPHICLASS TCommonShellMultiParentContextMenu;
class PASCALIMPLEMENTATION TCommonShellMultiParentContextMenu : public TCommonShellContextMenu 
{
	typedef TCommonShellContextMenu inherited;
	
protected:
	virtual void __fastcall LoadRegistryKeyStrings(TNamespace* Focused);
	
public:
	virtual bool __fastcall ExecuteContextMenuVerb(Controls::TWinControl* Owner, TNamespaceArray Namespaces, AnsiString Verb);
	virtual bool __fastcall ShowContextMenu(Controls::TWinControl* Owner, TNamespace* Focused, TNamespaceArray Namespaces, Types::PPoint Position = (void *)(0x0));
	
__published:
	__property OnHide ;
	__property OnShellMenuCopy ;
	__property OnShellMenuCreateShortCut ;
	__property OnShellMenuCut ;
	__property OnShellMenuDelete ;
	__property OnShellMenuNewFolder ;
	__property OnShellMenuPaste ;
	__property OnShellMenuPasteLink ;
	__property OnShellMenuPasteShortCut ;
	__property OnShellMenuProperites ;
	__property RenameMenuItem  = {default=1};
	__property PasteMenuItem  = {default=1};
	__property OnShow ;
public:
	#pragma option push -w-inl
	/* TCommonShellContextMenu.Create */ inline __fastcall virtual TCommonShellMultiParentContextMenu(Classes::TComponent* AOwner) : TCommonShellContextMenu(AOwner) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TCommonShellContextMenu.Destroy */ inline __fastcall virtual ~TCommonShellMultiParentContextMenu(void) { }
	#pragma option pop
	
};


//-- var, const, procedure ---------------------------------------------------
static const Shortint DefaultDetailColumns = 0x5;
static const Shortint ID_TIMER_NOTIFY = 0x64;
static const Shortint ID_TIMER_ENUMBKGND = 0x65;
static const Shortint ID_TIMER_AUTOSCROLL = 0x66;
static const Shortint ID_TIMER_SHELLNOTIFY = 0x67;
static const Shortint SHORTCUT_ICON_INDEX = 0x1d;
static const Shortint SHELL_NAMESPACE_ID = -1;
static const Word SHGDN_FOREDITING = 0x1000;
static const Word DEFAULTPIDLARRAYSIZE = 0x2000;
static const Shortint STREAM_VERSION_DEFAULT = -1;
#define STR_IMAGE_THREAD_EVENT "jdkImageThreadEvent"
extern PACKAGE int VET_DEFAULT_COLUMNWIDTHS[37];
extern PACKAGE int VET_DEFAULT_DRIVES_COLUMNWIDTHS[4];
extern PACKAGE int VET_DEFAULT_CONTROLPANEL_COLUMNWIDTHS[2];
extern PACKAGE int VET_DEFAULT_NETWORK_COLUMNWIDTHS[2];
extern PACKAGE Mpcommonobjects::TCommonPIDLManager* PIDLMgr;
extern PACKAGE TNamespace* DesktopFolder;
extern PACKAGE TNamespace* RecycleBinFolder;
extern PACKAGE TNamespace* PhysicalDesktopFolder;
extern PACKAGE TNamespace* DrivesFolder;
extern PACKAGE TNamespace* HistoryFolder;
extern PACKAGE TNamespace* PrinterFolder;
extern PACKAGE TNamespace* ControlPanelFolder;
extern PACKAGE TNamespace* NetworkNeighborHoodFolder;
extern PACKAGE TNamespace* TemplatesFolder;
extern PACKAGE TNamespace* MyDocumentsFolder;
extern PACKAGE TNamespace* FavoritesFolder;
extern PACKAGE TNamespace* ProgramFilesFolder;
extern PACKAGE TNamespace* UserDocumentsFolder;
extern PACKAGE TSHLimitInputEdit SHLimitInputEdit;
extern PACKAGE Word __stdcall (*AnimateWindow)(HWND Wnd, unsigned dwTime, unsigned dwFlags);
extern PACKAGE bool MP_UseModalDialogs;
extern PACKAGE bool MP_UseSpecialReparsePointOverlay;
extern PACKAGE bool MP_ThreadedShellExecute;
extern PACKAGE bool __fastcall SpecialVariableReplacePath(WideString &Path);
extern PACKAGE bool __fastcall IsSpecialVariable(WideString TestPath, TNamespace* &NS);
extern PACKAGE AnsiString __fastcall GUIDToInterfaceStr(const GUID &riid);
extern PACKAGE TShellContextMenuFlags __fastcall CFM_FlagsToShellContextMenuFlags(unsigned Flags);
extern PACKAGE bool __fastcall ClipboardContainsShellFormats(void);
extern PACKAGE bool __fastcall MPBrowseForFolder(WideString Title, Shlobj::PItemIDList RootFolder, Shlobj::PItemIDList InitialPath, TMPBrowseFlags BrowseFlags, Shlobj::PItemIDList &SelectedPath)/* overload */;
extern PACKAGE bool __fastcall MPBrowseForFolder(WideString Title, WideString RootFolder, WideString InitialPath, TMPBrowseFlags BrowseFlags, WideString &SelectedPath)/* overload */;
extern PACKAGE int __fastcall MergeMenuIntoContextMenu(Menus::TPopupMenu* Menu, HMENU ContextMenu, int Index, unsigned idStart);
extern PACKAGE Mpcommonobjects::TPIDLArray __fastcall NamespaceToRelativePIDLArray(TNamespaceArray Namespaces);
extern PACKAGE Shlobj::PItemIDList __fastcall FindBrowseableRootPIDL(TNamespace* NS);
extern PACKAGE bool __fastcall IsParentBrowseable(TNamespace* NS);
extern PACKAGE Mpcommonobjects::TPIDLArray __fastcall NamespaceToAbsolutePIDLArray(TNamespaceArray Namespaces);
extern PACKAGE Shlobj::PItemIDList __fastcall PathToPIDL(WideString APath);
extern PACKAGE WideString __fastcall PIDLToPath(Shlobj::PItemIDList APIDL);
extern PACKAGE bool __fastcall IENamespaceShown(bool PerUser);
extern PACKAGE bool __fastcall DirExistsVET(WideString APath, bool ShowSystemMessages)/* overload */;
extern PACKAGE bool __fastcall DirExistsVET(TNamespace* NS, bool ShowSystemMessages)/* overload */;
extern PACKAGE int __fastcall RectWidth(const Types::TRect &ARect);
extern PACKAGE int __fastcall RectHeight(const Types::TRect &ARect);
extern PACKAGE bool __fastcall PotentialMappedDrive(TNamespace* NS);
extern PACKAGE unsigned __fastcall FileObjectsToFlags(TFileObjects FileObjects);
extern PACKAGE WideString __fastcall FileObjectsToString(TFileObjects FileObjects);
extern PACKAGE bool __fastcall ConvertLocalStrToTFileTime(WideString LocalStr, _FILETIME &FileTime);
extern PACKAGE WideString __fastcall ConvertTFileTimeToLocalStr(const _FILETIME &AFileTime);
extern PACKAGE System::TDateTime __fastcall ConvertFileTimetoDateTime(const _FILETIME &AFileTime);
extern PACKAGE TNamespace* __fastcall CreateSpecialNamespace(int FolderID);
extern PACKAGE int __fastcall DefaultSystemImageIndex(TDefaultFolderIcon FolderType);
extern PACKAGE BOOL __stdcall FileIconInit(BOOL FullInit);
extern PACKAGE bool __fastcall CreateShellLink(WideString ALnkFilePath, WideString ATargetFilePath, WideString AnArguments = L"", WideString AWorkingDir = L"", WideString ADescription = L"", TCmdShow AShowCmd = (TCmdShow)(0xa), Word AHotKey = (Word)(0x0), THotKeyModifiers AHotKeyModifier = THotKeyModifiers() , WideString AnIconLocation = L"", int AnIconIndex = 0x0);
extern PACKAGE WideString __fastcall HotKeyModifiersToStr(THotKeyModifiers HotKeyMod);
extern PACKAGE void __fastcall PIDLQuickSort(Mpcommonobjects::TPIDLArray PIDLList, const _di_IShellFolder ParentFolder, int L, int R);
extern PACKAGE void __fastcall PIDLListQuickSort(Mpcommonobjects::TCommonPIDLList* PIDLList, const _di_IShellFolder ParentFolder, int L, int R);
extern PACKAGE bool __fastcall GetDiskFreeSpaceMP(WideChar * Drive, unsigned &SectorsperCluster, unsigned &BytesperSector, unsigned &FreeClusters, unsigned &TotalClusters);
extern PACKAGE __int64 __fastcall DriveSize(WideChar * Drive)/* overload */;
extern PACKAGE WideString __fastcall DriveSize(WideChar * Drive, TBtyeSize ByteSize)/* overload */;
extern PACKAGE __int64 __fastcall DriveFreeSpace(WideChar * Drive)/* overload */;
extern PACKAGE WideString __fastcall DriveFreeSpace(WideChar * Drive, TBtyeSize ByteSize)/* overload */;

}	/* namespace Mpshellutilities */
using namespace Mpshellutilities;
#pragma pack(pop)
#pragma option pop

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