#ifndef _HOOKPROC_DESKTOPWINDOWENUMERATOR_HPP_ #define _HOOKPROC_DESKTOPWINDOWENUMERATOR_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_BLOCK_HPP_ #include #endif #ifndef _COMMON_DESKTOP_HPP_ #include #endif #ifndef _HOOKPROC_ENUMWINDOWSHOOK_HPP_ #include #endif class DesktopWindowEnumerator : public EnumWindowsHook, public Block { public: DesktopWindowEnumerator(); virtual ~DesktopWindowEnumerator(); bool enumerateDesktopWindows(Desktop &desktop); DWORD size(void)const; protected: virtual bool enumWindowsProc(HWND hWnd,LPARAM lParam); private: }; inline DesktopWindowEnumerator::DesktopWindowEnumerator() { } inline DesktopWindowEnumerator::~DesktopWindowEnumerator() { } inline bool DesktopWindowEnumerator::enumerateDesktopWindows(Desktop &desktop) { Block::remove(); if(!desktop.isOkay())return false; ::EnumDesktopWindows(desktop.getHandle(),(LPFNENUMWINDOWPROC)getHookAddress(),0L); return size()?true:false; } inline bool DesktopWindowEnumerator::enumWindowsProc(HWND hWnd,LPARAM lParam) { Block::insert(&hWnd); return true; } inline DWORD DesktopWindowEnumerator::size(void)const { return Block::size(); } #endif