#ifndef _GM_MANAGE_CLIENT_DISPATCH_H_ #define _GM_MANAGE_CLIENT_DISPATCH_H_ #pragma warning(disable:4800) #include #include #include #include #include #include // CManageClientDispatch¸¦ ¾²´Â Ŭ¶óÀÌ¾ðÆ®¸¸ ÀÌ ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇÔ. #pragma comment(lib, "psapi.lib") class CManageClientDispatch : public CRylServerDispatch { public: struct RunExtraInfo { typedef std::set CommandSet; ServerManage::RunInfo m_RunInfo; HANDLE m_hProcess; HWND m_hWnd; unsigned long m_dwProcessID; unsigned long m_dwCustomStatus; unsigned long m_dwLastSetWindowHandleTime; CommandSet m_CommandSet; RunExtraInfo(); RunExtraInfo(const ServerManage::RunInfo& runInfo, HANDLE hProcess, unsigned long dwProcessID); }; // Key - RunID typedef std::map, boost::pool_allocator > > RunTable; static CSingleDispatch& GetDispatchTable(); CManageClientDispatch(CSession& Session); virtual ~CManageClientDispatch(); void CheckProcessStatus(); bool DoPatchNow() const { return m_bDoPatchNow; } const TCHAR* GetTempPatchFileName() const { return m_szTempPatchFileName; } bool SetAppData(unsigned long dwRunID, HWND hWnd, unsigned long dwPID, unsigned long dwCustomStatus); bool GetRunIDFromPID(unsigned long dwPID, unsigned long& dwRunID_Out); bool GetRunIDFromString(const char* szAppName, const char* szCommandLine, unsigned long& dwRunID_Out); RunTable& GetRunTable() { return m_RunTable; } private: virtual void Connected(); virtual void Disconnected(); virtual bool DispatchPacket(PktBase* lpPktBase); bool ProcessUpdateRunList(const char* szData, unsigned short usDataLen, unsigned short usFlags); bool ProcessRunServer(unsigned long dwRunID); bool ProcessQuitServer(unsigned long dwRunID); bool ProcessTerminateServer(unsigned long dwRunID); bool ProcessExecuteConsoleCommand(ServerManage::ManageCommand* lpManageCmd); bool ProcessRelayCommand(unsigned int nMessage, WPARAM wParam, LPARAM lParam, const char* szWindowName, const char* lpData, unsigned short usDataLen, unsigned char cFlag); bool ProcessAutoPatch(const char* lpData, unsigned short usDataLen, unsigned short usFlag); // Member variable; HANDLE m_hPatchFile; // ÆÐÄ¡ ÆÄÀÏ ÇÚµé. TCHAR m_szTempPatchFileName[MAX_PATH]; // Àӽà ÆÐÄ¡ ÆÄÀÏ À̸§. bool m_bDoPatchNow; // ÆÐÄ¡ Áغñ°¡ µÇ¾ú´ÂÁö ¿©ºÎ¸¦ ¾Ë¾Æ¿È. RunTable m_RunTable; }; #endif