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

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

#ifndef ahmshellnotifierHPP
#define ahmshellnotifierHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <ahmshellobject.hpp>	// Pascal unit
#include <Dialogs.hpp>	// Pascal unit
#include <Forms.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <SysUtils.hpp>	// Pascal unit
#include <Messages.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.hpp>	// Pascal unit

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

namespace Ahmshellnotifier
{
//-- type declarations -------------------------------------------------------
typedef void __fastcall (__closure *TAHMOnShellUpdate)(int ChangeType, Ahmshellobject::PItemIDList Item1, Ahmshellobject::PItemIDList Item2);

class DELPHICLASS TAHMNotifierClass;
class PASCALIMPLEMENTATION TAHMNotifierClass : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	TAHMOnShellUpdate fOnShellUpdate;
	unsigned fFlags;
	
protected:
	void __fastcall HandleNotify(int ChangeType, Ahmshellobject::PItemIDList Item1, Ahmshellobject::PItemIDList Item2);
	
public:
	__property unsigned Flags = {read=fFlags, nodefault};
	__fastcall virtual TAHMNotifierClass(unsigned AFlags);
	__property TAHMOnShellUpdate OnShellUpdate = {read=fOnShellUpdate, write=fOnShellUpdate};
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TAHMNotifierClass(void) { }
	#pragma option pop
	
};


class DELPHICLASS TAHMShellNotifier;
class PASCALIMPLEMENTATION TAHMShellNotifier : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	HWND ShellNotifyHandle;
	Ahmshellobject::NOTIFYREGISTER NotifyArray[26];
	Classes::TList* ReceiverList;
	HWND NotifyHandle;
	
protected:
	__fastcall TAHMShellNotifier(void);
	__fastcall TAHMShellNotifier(int NullVal);
	virtual void __fastcall WndProc(Messages::TMessage &AMsg);
	void __fastcall StartNameSpaceMonitor(void);
	void __fastcall StopNameSpaceMonitor(void);
	/*         class method */ static TAHMShellNotifier* __fastcall AccessInstance(TMetaClass* vmt, int Request);
	/*         class method */ static void __fastcall ReleaseInstance(TMetaClass* vmt);
	
public:
	__fastcall virtual ~TAHMShellNotifier(void);
	/*         class method */ static TAHMShellNotifier* __fastcall Instance(TMetaClass* vmt);
	void __fastcall RegisterReceiver(TAHMNotifierClass* ANotifier);
	void __fastcall NotifyReceiver(int ChangeType, Ahmshellobject::PItemIDList Item1, Ahmshellobject::PItemIDList Item2);
	void __fastcall UnregisterReceiver(TAHMNotifierClass* ANotifier);
};


//-- var, const, procedure ---------------------------------------------------
extern PACKAGE System::ResourceString _ETAHMShellNotifierIllegalRequest;
#define Ahmshellnotifier_ETAHMShellNotifierIllegalRequest System::LoadResourceString(&Ahmshellnotifier::_ETAHMShellNotifierIllegalRequest)
extern PACKAGE System::ResourceString _ETAHMShellNotifierAccessDenied;
#define Ahmshellnotifier_ETAHMShellNotifierAccessDenied System::LoadResourceString(&Ahmshellnotifier::_ETAHMShellNotifierAccessDenied)

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

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