#ifndef _HOOKPROC_DESKTOPENUMERATOR_HPP_ #define _HOOKPROC_DESKTOPENUMERATOR_HPP_ #ifndef _HOOKPROC_ENUMDESKTOPHOOK_HPP_ #include #endif #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _COMMON_BLOCK_HPP_ #include #endif #ifndef _COMMON_WINDOWSTATION_HPP_ #include #endif class DesktopEnumerator : public EnumDesktopHook, public Block { public: DesktopEnumerator(void); virtual ~DesktopEnumerator(); bool enumerateDesktops(WindowStation &windowStation); DWORD size(void)const; protected: virtual bool enumDesktopProc(const String &strDesktop); private: }; inline DesktopEnumerator::DesktopEnumerator(void) { } inline DesktopEnumerator::~DesktopEnumerator() { } inline bool DesktopEnumerator::enumerateDesktops(WindowStation &windowStation) { Block::remove(); if(!windowStation.isOkay())return false; ::EnumDesktops(windowStation.getHandle(),(LPFNENUMDESKTOPPROC)getHookAddress(),0); return Block::size()?true:false; } inline bool DesktopEnumerator::enumDesktopProc(const String &strDesktop) { Block::insert(&strDesktop); return true; } inline DWORD DesktopEnumerator::size(void)const { return Block::size(); } #endif