#pragma once #include #include "CHThreadPools/TimerThreadPools.h" enum MonitorProcessType { MonitorProcessType_Copy=0, MonitorProcessType_Move, MonitorProcessType_Count }; typedef std::vector VecString; typedef std::vector::iterator VecStringIt; typedef std::vector::const_iterator constVecStringIt; struct SFolderMonitorParam { SFolderMonitorParam() { strMonitorFolderPath = _T(""); strMonitorFileExt = _T(""); strProcessFolderPath = _T(""); nProcessType = MonitorProcessType_Copy; } CString strMonitorFolderPath; // ¿øº» Æú´õ °æ·Î CString strMonitorFileExt; // ¸ð´ÏÅ͸µ ÆÄÀÏ È®ÀåÀÚ CString strProcessFolderPath; // º¹»ç Æú´õ °æ·Î int nProcessType; // 0.Copy, 1.Move }; struct SFolderMonitorResult { SFolderMonitorResult() { strProcessFileName = _T(""); } CString strProcessFileName; // º¹»çÇÑ ÆÄÀÏ À̸§ }; typedef std::vector VecFolderMonitorResult; typedef std::vector::iterator VecFolderMonitorResultIt; typedef std::vector::const_iterator constVecFolderMonitorResultIt; class AFX_EXT_CLASS CFolderMonitoring : public CTimerThreadPools { public: CFolderMonitoring(DWORD dwPeriod=50); virtual ~CFolderMonitoring(void); // command virtual BOOL StartMonitoring(); virtual void StopMonitoring(); virtual void SetMonitorParam(const SFolderMonitorParam& monitorParam); protected: virtual BOOL MainProcessing(VecString& vecFilePath, const SFolderMonitorParam& sMonitorParam); virtual BOOL PostProcessing(const VecString& vecFilePath, const SFolderMonitorParam& sMonitorParam); virtual void TimerThreadProcess(PVOID pParameter); BOOL IsProcessedFile(const CString& strFilename); protected: SFolderMonitorParam m_sMonitorParam; // ¸ð´ÏÅ͸µ ÆÄ¶ó¹ÌÅÍ VecFolderMonitorResult m_vecMonitorResult; // ¸ð´ÏÅ͸µ ÆÄÀÏ À̸§ ¹éÅÍ CCriticalSection m_csMonioring; };