#ifndef _HOOKPROC_ENUMDESKTOPHOOK_HPP_ #define _HOOKPROC_ENUMDESKTOPHOOK_HPP_ #ifndef _HOOKPROC_APIENTRY_HPP_ #include #endif #ifndef _HOOKPROC_PROCADDRESS_HPP_ #include #endif class EnumDesktopHook; typedef ProcAddress EnumDesktopHookProc; class EnumDesktopHook : protected APIEntry, private EnumDesktopHookProc { public: typedef int (__stdcall *LPFNENUMDESKTOPPROC)(LPTSTR lpszDesktop,LPARAM lParam); EnumDesktopHook(void); virtual ~EnumDesktopHook(); DWORD getHookAddress(void); protected: virtual bool enumDesktopProc(const String &strDesktop); private: enum {ParamLength=8}; EnumDesktopHook &operator=(const EnumDesktopHook &someEnumDesktopHook); bool entryProc(LPTSTR lpszDesktop,LPARAM lParam); }; inline EnumDesktopHook::EnumDesktopHook(void) : APIEntry(ParamLength,(DWORD)this,getProcAddress((ProcAddress::LPFNMETHODVOID)&EnumDesktopHook::entryProc)) { } inline EnumDesktopHook &EnumDesktopHook::operator=(const EnumDesktopHook &someEnumDesktopHook) { // no implementation return *this; } inline DWORD EnumDesktopHook::getHookAddress(void) { return codeBase(); } #endif