HD简介

HD RPG引擎框架(GDK)
Help >
HD简介

教程以官网为准

后面会出帖子教程

供大家学习使用

教程链接: 不定时更新

http://www.didacollege.com/site-list-39

B站:

https://space.bilibili.com/436340181

官网:

https://www.hdgdk.com

HD【RPG引擎库】交流群(3群):882724064

(有事请主动找群主和管理，群主和管理不会主动私聊任何人,请勿上当受骗！！！！)

(有事请主动找群主和管理，群主和管理不会主动私聊任何人,请勿上当受骗！！！！)

(有事请主动找群主和管理，群主和管理不会主动私聊任何人,请勿上当受骗！！！！)

功能:

1.自研驱动注入，模拟键鼠 ，读写内存相关操作，进程以及线程相关操作等.

2.自研接口注入模式框架.

3.目前支持 32 位/64位/ASCII/UNICODE(8个版本中控)<->32/64位 (目标程序)

4.还支持LUA编写,自定义模块,谷歌内置浏览器,主板机投屏,多线程框架模块,yolov5,等操作

5.支持易语言 C/C++ 火山 Python C# 炫语言 golong等语言（支持调用C++DLL的语言）

6.具体看对应的模块功能接口

备注:

仅供学习交流 切勿用作非法用途

最终解释权归<迪大学院>所有

HD平台升级工具界面：

HD引擎测试软件界面：

HD综合工具界面：

Copyright ? 2023. All rights reserved.(迪大学院.)


免责声明

Help >
免责声明

免责声明

一. 本软件完全出于个人兴趣爱好，由本人在业余时间开发，是一款安全，绿色，可靠的软件产品.

二. 利用本软件所做出的任何软件作品，和本人无关.

三. 本软件绝对不针对任何一款游戏或者游戏开发商，如果有人利用本软件开发非法游戏辅助，本人将保留追究其民事以及刑事责任的权利.

四. 因使用本软件而引致的任何意外、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其所造成的任何损失，本人概不负责，亦概不承担任何民事或刑事法律责任。

五. 当你第一次开始使用本人所提供的任何软件及资源的那一刻起就将被视为对本声明全部内容的认可。同时您必须认可上述免责条款，方可使用本软件及资源。如有任何异议，建议立刻删除本软件及资源并且停止使用.

六. 以上内容，本人保留最终解释权。


HD返回值表

Help >
HD返回值表

所有接口返回值 :

备注:也可以可通过工具后台查看

=============================================

需要拿到json字符串信息,请调用接口后调用 HCEnv_GetRetJson

=============================================

接口返回值： 小于等于0 为错误代码 大于 0为成功 (驱动接口返回值在下面↓)

=============================================
#define RET_环境已卸载 7
#define RET_重连窗口序号不一致 6
#define
RET_重连窗口 5
#define RET_状态变动 4
#define RET_暂停过 3
#define RET_结束
2
#define RET_成功 1
#define RET_失败 0
#define RET_真 1
#define RET_非
0
#define ERROR_未初始化全局环境 -1000
#define ERROR_未找到进程环境 -1001
#define
ERROR_进程环境内存为NULL -1002
#define ERROR_获取CALL环境失败 -1003
#define ERROR_超时返回
-1004
#define ERROR_主线程调用超时返回 -1005
#define ERROR_数据异常 -1006
#define
ERROR_参数错误 -1007
#define ERROR_未挂接主线程 -1008
#define ERROR_后台绑定句柄无效
-1009
#define ERROR_未绑定后台 -1010
#define ERROR_多开超出限制 -1011
#define
ERROR_字符串为空 -1012
#define ERROR_地址为空 -1013
#define ERROR_未知错误
-1014
#define ERROR_远进程申请内存失败 -1015
#define ERROR_文件夹创建失败 -1016
#define
ERROR_异步无法获取返回值 -1017
#define ERROR_语法错误 -1018
#define ERROR_申请内存失败
-1019
#define ERROR_创建线程失败 -1020
#define ERROR_缓冲区大小不足 -1021
#define
ERROR_未初始化LUA -1022
#define ERROR_LUA状态机为NULL -1023
#define ERROR_未找到LUA函数
-1024
#define ERROR_返回值未知类型 -1025
#define ERROR_LUA线程标识符不符合
-1026
#define ERROR_模块获取失败 -1027
#define ERROR_地址不可读 -1028
#define
ERROR_返回值为JSON -1029
#define ERROR_获取数据失败 -1030
#define ERROR_未初始化
-1031
#define ERROR_已经开启 -1032
#define ERROR_已经结束 -1033
#define
ERROR_未开启 -1034
#define ERROR_未结束 -1035
#define ERROR_高宽为0
-1036
#define ERROR_数据为NULL -1037
#define ERROR_数据不符合要求 -1038
#define
ERROR_文件打开失败 -1039
#define ERROR_打开失败 -1040
#define ERROR_解析失败
-1041
#define ERROR_无游戏类型 -1042
#define ERROR_HOOK失败 -1043
#define
ERROR_UNHOOK失败 -1044
#define ERROR_功能失效 -1045
#define ERROR_无效PE文件格式
-1046
#define ERROR_未找到PE头 -1047
#define ERROR_重定位表失败 -1048
#define
ERROR_未找到函数入口 -1049
#define ERROR_无法附加DLL -1050
#define ERROR_接口数量上限
-1051
#define ERROR_已经存在 -1052
#define ERROR_打开句柄失败 -1053
#define
ERROR_未找到全局环境 -1054
#define ERROR_组件数量上限 -1055
#define ERROR_未找到组件接口
-1056
#define ERROR_接口类型不匹配 -1057
#define ERROR_组件无效 -1058
#define
ERROR_接口地址无效 -1059
#define ERROR_生成密钥失败 -1060
#define ERROR_加密失败
-1061
#define ERROR_解密失败 -1062
#define ERROR_DLL中无此接口 -1063
#define
ERROR_下载失败 -1064
#define ERROR_注册表操作失败 -1065
#define ERROR_路径获取失败
-1066
#define ERROR_提权失败 -1067
#define ERROR_驱动已安装 -1068
#define
ERROR_HD驱动已安装无法安装HN驱动 -1069
#define ERROR_资源未找到 -1070
#define ERROR_资源加载失败
-1071
#define ERROR_提取资源失败 -1072
#define ERROR_未加载插件 -1073
#define
ERROR_文件无法保存 -1074
#define ERROR_打开目录失败 -1075
#define ERROR_写入文件的字节大小不符合要求
-1076
#define ERROR_删除文件失败 -1077
#define ERROR_获取字符串失败 -1078
#define
ERROR_获取注册表值失败 -1079
#define ERROR_类型错误 -1080
#define ERROR_参数不符合要求
-1081
#define ERROR_区域超出 -1082
#define ERROR_文件不存在 -1083
#define
ERROR_创建文件失败 -1084
#define ERROR_文件读取失败 -1085
#define ERROR_与系统驱动通讯失败
-1086
#define ERROR_创建管道失败 -1087
#define ERROR_创建进程失败 -1088
#define
ERROR_未找到相关字符串信息 -1089
#define ERROR_缓冲区大小不充足 -1090
#define ERROR_数据类型转换失败
-1091
#define ERROR_格式化字符串失败 -1092
#define ERROR_网络超时 -1093
#define
ERROR_网络连接失败 -1094
#define ERROR_加载指定DLL失败 -1095
#define ERROR_解析字符串失败
-1096
#define ERROR_窗口大小变动导致数据不一致 -1097
#define ERROR_打开剪切板失败
-1098
#define ERROR_加锁失败 -1099
#define ERROR_获取剪切板数据失败 -1100
#define
ERROR_版本号获取失败 -1101
#define ERROR_已经绑定其他设备 -1102
#define ERROR_已经达到最大在线数
-1103
#define ERROR_账号或密码为空 -1104
#define ERROR_验证失败 -1105
#define
ERROR_打开进程失败 -1106
#define ERROR_进程位数不匹配 -1107
#define ERROR_添加进程环境失败
-1108
#define ERROR_定位特征地址失败 -1109
#define ERROR_寻找空白地址失败 -1110
#define
ERROR_无操作类型 -1111
#define ERROR_无相关句柄 -1112
#define ERROR_无HDC句柄
-1113
#define ERROR_获取矩形大小失败 -1114
#define ERROR_拷贝数据失败 -1115
#define
ERROR_无效句柄 -1116
#define ERROR_创建对象失败 -1117
#define ERROR_截图方式需要重开才能切换
-1118
#define ERROR_格式有误 -1119
#define ERROR_字库数据为空 -1120
#define
ERROR_字库中未找到相应字 -1121
#define ERROR_大小计算为0 -1122
#define ERROR_容器大小不一致
-1123
#define ERROR_句柄无效 -1124
#define ERROR_获取PID无效 -1125
#define
ERROR_获取大小失败 -1126
#define ERROR_获取失败 -1127
#define ERROR_未找到
-1128
#define ERROR_立即返回无效值 -1129
#define ERROR_未设置路径 -1130
#define
ERROR_文件操作失败 -1131
#define ERROR_写入内存失败 -1132
#define ERROR_模块查找失败
-1133
#define ERROR_接口查找失败 -1134
#define ERROR_组件信息保存失败 -1135
#define
ERROR_组件加载失败 -1136
#define ERROR_组件卸载失败 -1137
#define ERROR_组件不符合卸载要求
-1138
#define ERROR_进程环境句柄为NULL -1139
#define ERROR_未绑定PID
-1140
#define ERROR_读取图片失败 -1141
#define ERROR_打开注册表失败 -1142
#define
ERROR_获取注册表失败 -1143
#define ERROR_写内存失败 -1144
#define ERROR_清除缓存失败
-1145
#define ERROR_字体无宽度 -1146
#define ERROR_裁剪矩形数据失败 -1147
#define
ERROR_图片无宽或高 -1148
#define ERROR_功能未开放 -1149
#define ERROR_模块信息获取失败
-1150
#define ERROR_未找到合适的JMP地址 -1151
#define ERROR_HOOK初始化失败
-1152
#define ERROR_无HOOK接口类型 -1153
#define ERROR_CALL类型不匹配
-1154
#define ERROR_创建通讯失败 -1155
#define ERROR_加载通讯失败 -1156
#define
ERROR_数据格式错误 -1157
#define ERROR_地址失效 -1158
#define ERROR_坐标转换失败
-1159
#define ERROR_容器为空 -1160
#define ERROR_数据为空 -1161
#define
ERROR_特征不符合 -1162
#define ERROR_范围未确定 -1163
#define ERROR_缓冲区不足
-1164
#define ERROR_此接口调试版本无效 -1165
#define ERROR_子图不在范围内 -1166
#define
ERROR_插件数量上限 -1167
#define ERROR_API枚举失败 -1168
#define ERROR_无法定位模块
-1169
#define ERROR_无效HOOK地址 -1170
#define ERROR_无对应的HOOK函数
-1171
#define ERROR_破坏字节超过容量 -1172
#define ERROR_指定地址不适合HOOK
-1173
#define ERROR_没有充足的HOOK大小 -1174
#define ERROR_设置回调地址失败
-1175
#define ERROR_API获取时间失败 -1176
#define ERROR_无效插件序号 -1177
#define
ERROR_进程不存在 -1178
#define ERROR_未安装插件 -1179
#define ERROR_初始化通讯失败
-1180
#define ERROR_未初始化通讯序号 -1181
#define ERROR_当前线程字库为空 -1182
#define
ERROR_线程数量超出限制 -1183
#define ERROR_字库序号不存在 -1184
#define ERROR_释放资源失败
-1185
#define ERROR_超出容量 -1186
#define ERROR_空模型 -1187
#define
ERROR_环境序号不存在 -1188
#define ERROR_回调处理中 -1189
#define ERROR_无法操作绑定窗口
-1190
#define ERROR_接口已被移除 -1191
#define ERROR_不支持类型 -1192
#define
ERROR_初始化失败 -1193
#define ERROR_环境被卸载 -1194
#define ERROR_进程已经关闭
-1195
#define ERROR_中控环境未初始化 -1196
#define ERROR_未加载HD驱动 -1197
#define
ERROR_未绑定设备 -1198
#define ERROR_未找到进程 -1199
#define ERROR_进程PID不匹配
-1200
#define ERROR_前台模式无法后台 -1201
#define ERROR_JMP地址无效 -1202
#define ERROR_HOOK地址无效
-1203
#define ERROR_类型和HOOK地址不匹配 -1204
#define ERROR_不在HD多线程环境下 -1205
#define ERROR_未连接 -1206
#define ERROR_进程环境已被卸载
-1207
#define ERROR_安装插件失败 -1208 //检查是否安装了驱动
#define ERROR_安装驱动失败 -1209
//检查是否管理员或者杀毒或者关闭内核隔离
#define ERROR_加载环境失败 -1210
//检查账号是否欠费或者网络问题或者参数不符合要求
#define ERROR_初始化序号失败 -1211 //一般不会失败
#define
ERROR_获取PID超时返回 -1212 //确定是否打开进程成功或者增大等待时间
#define ERROR_获取状态值20超时返回 -1213
//未安装插件或被拦截或增大等待时间
#define ERROR_获取状态值120超时返回 -1214
//未安装插件或被拦截或增大等待时间
#define ERROR_继续失败 -1215 //可能未初始化相关环境 一般不会失败
#define
ERROR_当前进程插件序号不一致 -1216 //说明指定的PID进程绑定的窗口序号已经存在 与指定的序号不一致
调用HCInject_GetPreWinIndex 获取指定PID的绑定的窗口序号
#define ERROR_PID无效 -1217
#define
ERROR_扩展序号不能用 -1218//扩展序号不能自己指定
#define ERROR_接口丢弃 -1219//老版本的接口丢弃
#define
ERROR_序号超出限制 -1220
#define ERROR_已经重启 -1221
#define ERROR_登录中无法重启
-1222
#define ERROR_暂停中无法重启 -1223
#define ERROR_操作中无法重启 -1224
#define
ERROR_强制关闭线程中无法发送 -1225
#define ERROR_卸载失败
-1226
#define ERROR_未完全开启 -1227
#define ERROR_逻辑异常 -1228

=============================================

验证接口返回值: 登录操作 大于等于0 为剩余点数

=============================================
#define
LOGINERROR_错误        -2000 //如果大于这个值也表示成功
可能返回的是点数不足 小于这个值表示错误
#define LOGINERROR_客户端数据为空 -2001
#define
LOGINERROR_账号卡密不匹配 -2002
#define LOGINERROR_登记登录数据失败 -2003
#define
LOGINERROR_客户端数据太多 -2004
#define LOGINERROR_未找到客户端数据 -2005
#define
LOGINERROR_账号类型为空 -2006
#define LOGINERROR_账号扣点失败 -2007
#define
LOGINERROR_更新客户端加载信息失败 -2008
#define LOGINERROR_账号点数不足 -2009
#define
LOGINERROR_查询客户端加载信息失败 -2010
#define LOGINERROR_试用卡 -2011
#define
LOGINERROR_发布版本无法使用测试账号 -2012
#define LOGINERROR_老版本丢弃 -2013
#define LOGINERROR_数据错误 -2014
#define ERROR_其他值返回值(ret) (ret)

=============================================

驱动接口返回值： 大于等于0 为成功 特殊:-1068为驱动已经安装 可以忽视！

=============================================
//驱动宏返回值
//宏返回值
//宏返回值
//这个值必须大于0 用在最开始加载驱动的返回
小于0会蓝屏！！
#define LOAD_SUCCESS 0x00000001
//下面的值是其他接口自定义返回值 必须小于0
大于0统一返回的都是0！！
#define DRERROR_SUCCESS 0x00000002
#define DRERROR_SUCCESSEX
0xE0000000
#define DRERROR_SUCCESSTEST 0xE0000001
#define DRERROR_EXIST
0xE0000002
#define DRERROR_FAID 0xE0000003
#define DRERROR_无法打开进程
0xE0000004
#define DRERROR_无效的句柄表 0xE0000005
#define DRERROR_用户验证失败
0xE0000006
#define DRERROR_内存类型不符 0xE0000007
#define DRERROR_超出内存范围
0xE0000008
#define DRERROR_隐藏内存失败 0xE0000009
#define DRERROR_查询内存失败
0xE000000A
#define DRERROR_申请内存失败 0xE000000B
#define DRERROR_超出读写字节
0xE000000C
#define DRERROR_分配内存失败 0xE000000D
#define DRERROR_无效的缓冲区
0xE000000E
#define DRERROR_无法结束自身 0xE000000F
#define DRERROR_无法识别数据
0xE0000010
#define DRERROR_进程位数错误 0xE0000011
#define DRERROR_读写地址错误
0xE0000012
#define DRERROR_劫持线程失败 0xE0000013
#define DRERROR_X86DLL格式有误
0xE0000014
#define DRERROR_X64DLL格式有误 0xE0000015
#define DRERROR_无合适处理器
0xE0000016
#define DRERROR_未找到鼠标   0xE0000017
#define
DRERROR_未找到键盘   0xE0000018
#define DRERROR_未找到入口参数
0xE0000019//没有找到入口参数
#define DRERROR_输入缓冲区为空 0xE0000020//输入缓冲区为空
#define
DRERROR_未找到模块基址 0xE0000021//
#define DRERROR_未找到函数地址 0xE0000022//
#define ERROR_参数有误 0xE0000023//参数有误

=============================================


更新日志

Help >
更新日志

第二期新课程在线班-直播课

交流群:882724064
《HD C++实战X64课程(图色+内存 )国际服夜鸦》实战课程
为了给学学员补基础 10月20号开课
购买在线班的学员福利如下:
1.《C++ WIN32基础课程》 共177节课
2.《[迪大学院]UE5夜鸦专题数据课程》
3.价值500元的HD充值卡(单独账号)

交流群:882724064
1需要报名找我,人数够就开课

====请自行通过HD升级工具下载更新====
HD【2025043001】
1.修复保护驱动加载问题*
2.测试账号限制不能使用定制驱动和相关核心组件*
3.修复内存模块表达式有个接口没有兼容最后不+]的情况*
4.HDTool用户后台工具优化界面库,全新界面皮肤*
5.预计后面给HDTool后台工具增加消费记录查询-包含机器码-点数消费-维护用户利益和查卡防盗号

====请自行通过HD升级工具下载更新====
HD【20250042801】
1.优化兼容win11系统24H2相关系统版本*
-全系列
2.添加读写接口初始化-针对部分游戏检查*
-HCHD_InitFastRW
3.HD驱动添加备用版本和定制版本接口-针对不同游戏使用不同驱动版本和组件*
-HCHD_LoadDrv2
-1:HDEx正式版本(云下发 正常驱动,无特殊处理)
0:HDExx备用版本(云下发 适合驱动快读读写遍历)
1:HDExxx定制版本(云下发 正常驱动,无特殊处理)
2:HDHOOK驱动(云下发 快速读写 VT无痕HOOK)
3:HDPP保护驱动(云下发 进程保护和隐藏等保护)
4:HDYOLOV识别(云下发 HYolov5 8 10 11 组件到当前路径并安装)
4.压缩发布版本库/调试版本 大小-减少50%~75%*
普通用户 ->VIP用户 ->定制版本 ->动态代码
-x86 40M->22M
-x64 52M->26M
5.优化HD整体执行性能和效率和打开速度*
6.增加HD异常关闭退出回调-用于处理验证或者脚本失效等情况-让验证更优雅一些*
-防止国内网络不稳定断线导致的失效*
-HCEnv_SetShutDownCallBack
-typedef __int32(__stdcall *ShutDownEventFunType)(__int32 code);
7.优化全局前台键鼠模式*
8.HD驱动增加强制关闭进程接口参数*
-HCHD_PPKill
9.优化验证*
10.增加虚拟机VNC键鼠模块-HDVNC*
-HCVnc_Connect
-HCVnc_Close
-HCVnc_MoveTo
-HCVnc_MoveToOffset
-HCVnc_LeftClick
-HCVnc_LeftDown
-HCVnc_LeftUp
-HCVnc_LeftDoubleClick
-HCVnc_RightClick
-HCVnc_RightDown
-HCVnc_RightUp
-HCVnc_WheelDown
-HCVnc_WheelUp
-HCVnc_KeyPress
-HCVnc_KeyDown
-HCVnc_KeyUp
-HCVnc_KeyPressStr
-HCVnc_SendString
11.增加yolov识别模块*-HDYOLOV(CPU GPU版本 速度非常快)*
-HCYOLO_AddModel
-HCYOLO_AddModelFile
-HCYOLO_Identify
-HCYOLO_IdentifyByFile
-HCYOLO_IdentifyByMem
12.VT 无痕HOOK 注入模块 -HDHOOK 保护盾-过一切CRC*
-HCHDVT_AllocateMemory
-HCHDVT_FreeMemory
-HCHDVT_Read
-HCHDVT_Write
-HCHDVT_GetModule
-HCHDVT_GetModuleFun
-HCHDVT_Hook
-HCHDVT_RemoteCall
-HCHDVT_InjectX64
-HCHDVT_InjectX86
-HCHDVT_InstallPlugX64
-HCHDVT_InstallPlugX86
13.增加一种新的注入方式*
14.增加最强驱动级别隐藏保护进程-HDPP 保护盾*
-HCHDPP_Protect
15.增加一些异常捕捉*
16.给安装插件方式2和3增加无痕注入方式*
17.优化并增加一种鼠标移动轨迹类型3(直线波动)-过滑块检查*
18.优化DMA服务器占用和截图初始化*

====请自行通过HD升级工具下载更新====
HD【2025040301】
1.增加获取范围截图文件数据*
-HCCS_GetCaptureBmpRangeData
2.HD驱动键鼠扩展键的支持*
3.缓冲区大小扩展到1024*200=(0.2M)*
4.优化多线程窗口过程细节*
5.修改逻辑重启回调的时候卸载环境失败不会导致重启失效-之前会失效*
6.修复WIN10 14393系统版本的一个后台兼容问题*
7.优化DX键鼠相关逻辑X86X64(如:方向键等)*
8.增加开启截图兼容模式-(全屏前台截图 窗口序号指定0)*
9.优化多线程自定义消息注册时候的消息值的范围*
10.优化API HOOK模块 recv系列接口的缓冲区拦截机制*
11.极致优化HD驱动读写-实现百万级别(单线程)的读写效率*
12.增加HD驱动从指定模块获取函数接口地址*
-HCHD_GetModuleCallAddr
13.优化HD驱动接口参数检查-防止填错*
14.增加设置获取自定义数据接口-方便重开中控*
-HCInject_SetData
-HCInject_GetData
15.增加通过窗口序号获取窗口句柄*
-HCInject_GetHwnd
16.增加一些异常捕捉

====请自行通过HD升级工具下载更新====
HD【20250304.1】
1.优化多线程重启细节
-经过长期测试稳定
2.内存模块增加获取DLL导出函数地址
-HCM_GetModuleFunAddr
3.进一步缩小库大小

====请自行通过HD升级工具下载更新====
HD【20250228.1】
1.全面修复优化多线程模块
为了更好的稳定性和健壮性
方案:
-需要及时正常退出线程
-请在执行回调中多加
-多线程模块延迟接口(HCMT_SleepEx)/(HCMT_Sleep)
-运行状态接口(HCMT_IsRunning)
2.增加附加控制调试接口
-HCSD_SetAttachConsole
3.废除智能识字模块-基本用不上
4.增加几个HD返回值
#define ERROR_卸载失败 -1226
#define ERROR_未完全开启 -1227
#define ERROR_逻辑异常 -1228

====请自行通过HD升级工具下载更新====

HD【20250225.1】
1.后台键鼠兼容24H2 win11.26100.3194系列系统

====请自行通过HD升级工具下载更新====
HD【20250222.4】
1.增加多线程重启扩展接口
-HCMT_MsgReStartEx-内置卸载环境 -方便操作
3.增加返回值
-ERROR_卸载失败 -1226

====请自行通过HD升级工具下载更新====
HD【20250222.3】
1.增加HD驱动批读写接口
HCHD_BeginRWEx
HCHD_RWEx
HCHD_EndRWEx

====请自行通过HD升级工具下载更新====
HD【20250222.2】
1.增加部分调试接口的日志信息
HCFS_FindStrMutilsAuto_Debug
2.后台键鼠兼容win11.22635.4945系列系统

====请自行通过HD升级工具下载更新====
HD【20250221.1】
1.多线程框架
-优化小细节
2.添加回调异常捕捉信息返回
-方便调试开发者的异常行为
3.增加多线程接口
-HCMT_IsCanStart 判断是否能开启新的
4.多线程模块增加重启中状态
-防止误操作多次重启
5.增加错误值
-ERROR_序号超出限制 -1220
-ERROR_已经重启 -1221
-ERROR_登录中无法重启 -1222
-ERROR_暂停中无法重启 -1223
-ERROR_操作中无法重启 -1224
-ERROR_强制关闭线程中无法发送 -1225
6.修正并增加一些开发文档描述
7.兼容D3D12后台截图模式
//D3D12
CAPTURETYPE_D3D12_1_x86 = 70,//UE
CAPTURETYPE_D3D12_2_x86 = 71,//U3D
CAPTURETYPE_D3D12_3_x86 = 72,//RGBX D3D12游戏通用
//D3D12
CAPTURETYPE_D3D12_1_x64 = 14,//UE D3D12
CAPTURETYPE_D3D12_2_x64 = 15,//U3D D3D12
CAPTURETYPE_D3D12_3_x64 = 16,//RGBX D3D12 D3D12游戏通用
//
CAPTURETYPE_D3D12_Steam_x86 = 60,//steam游戏专用 steam游戏专用后台截图x64模式 D3D9 也可以是其他游戏 不一定只有steam才能用
CAPTURETYPE_D3D12_Steam_x64 = 61,//steam游戏专用 steam游戏专用后台截图x64模式 D3D9 也可以是其他游戏 不一定只有steam才能用
//
CAPTURETYPE_D3D12_NC_x86 = 62,//NC游戏 D3D12
CAPTURETYPE_D3D12_NC_x64 = 63,//NC游戏 D3D12
8.优化识别

====请自行通过HD升级工具下载更新====
HD【20250207.1】
1.优化心跳和多线程逻辑
-避免强制退出线程
-尽量多加HCMT_Sleep/HCMT_SleepEx/HCMT_IsRunning
2.提供HD易语言模块源码-可以自行修改接口导入和修改DLL名字
3.增加执行汇编执行CALL-通讯内存模块
-HCM_AsmCallX86
-HCM_AsmCallX64
-不同于HD驱动模块里面的远线程汇编调用CALL-不会被拦截

====请自行通过HD升级工具下载更新====
HD【20250131.2】
1.DMA超时时间设置-通过HCEnv_Init初始化接口设置
2.优化全局前台移动坐标计算*
3.修正开发文档相关描述*
-获取剪切板字符串*
4.多线程模块添加异常捕捉*

====请自行通过HD升级工具下载更新====
HD【20250131.1】
1.增加DMA虚拟机图色键鼠功能(直接外部读取操作键鼠图色)
-HCVMDMA_InitCapture
-HCVMDMA_Capture
-HCVMDMA_OpenCapture
-HCVMDMA_CloseCapture
-HCVMDMA_InitMouseKey
-HCVMDMA_MoveTo
-HCVMDMA_LeftDown
-HCVMDMA_LeftUp
-HCVMDMA_LeftClick
-HCVMDMA_LeftDoubleClick
-HCVMDMA_MiddleDown
-HCVMDMA_MiddleUp
-HCVMDMA_MiddleClick
-HCVMDMA_MiddleDoubleClick
-HCVMDMA_RightDown
-HCVMDMA_RightUp
-HCVMDMA_RightClick
-HCVMDMA_RightDoubleClick
-HCVMDMA_WheelUp
-HCVMDMA_WheelDown
-HCVMDMA_KeyDown
-HCVMDMA_KeyUp
-HCVMDMA_KeyClick
-HCVMDMA_SendUnicode
-HCVMDMA_SendAscii
等接口
2.下个预告版本:HD兼容X86X64静态库版本
-插件可以静态编译到中控中
-体积变的更小,更防检测

====请自行通过HD升级工具下载更新====
HD【20250128.1】
1.优化HCWIN_FindTopWindow参数判断-允许“”表示空*
2.优化一下安装插件方式三的返回值-1216*
3.补齐返回值表*
4.增加后台绑定模式 2 3-现有模式 0 1 2 3 共4种针对不同进程而选择*
5.工具显示当前插件版本*
6.更新服务器验证版本
7.修复倒计时显示问题*
8.取消内存池调试打印信息*
9.GDK开发手册分类前缀显示在后面-方便查看*

HD【20250116.1】
1.优化范围CRC校验值的json字符串
2.优化设置字库文件兼容绝对路径
3.优化剪切板操作同时取消utf-8类型
4.完善HD综合工具
5.优化安装插件打开回调返回值(PID或窗口句柄)的覆盖策略-具体看开发文档
6.优化安装插件后的清除缓存操作
7.修正文档描述信息
8.优化VmDma_StartServer接口最后一个路径参数
兼容指定自定义进程名(全路径\\XXXX.exe) XXXX.exe为自定义进程名
不指定进程名表示使用内置进程名(全路径\\HDVMDma.exe )
不指定路径(当前中控exe根目录\\HDVMDma.exe)

HD【20250110.1】
1.识字接口增加4个参数，可以单独设置了* 废除全局设置
水平间距 垂直间距 周围占比 是否独占11
int spaceX = 11, int spaceY = 11,double groundRate = 0.1, BOOL bOne11 = TRUE
2.修正开发文档接口说明*
-HCFS_FindStrMutilsAutoEx 最后2个参数顺序描述反了
3.增加支持自定义HD插件DLL名字接口-进一步过检测*
-HCInject_SetPlugin
4.优化服务器验证*
5.修复截图功能打开查看图片*
6.优化重连过程中设置进程位数*
7.增加指定某个序号绑定的进程位数接口*
-HCEnv_SetProcessTypeEx
8.找图找色增加寻找方向参数-dirType*
-HCFP_FindColor
-HCFP_FindColors
-HCFP_FindPic
-HCFP_FindPicEx
-HCFP_FindColorByFile
-HCFP_FindColorsByFile
-HCFP_FindPicByFile
-HCFP_FindPicExByFile
-HCFP_FindColorByMem
-HCFP_FindColorsByMem
-HCFP_FindPicByMem
-HCFP_FindPicExByMem
-HCFP_FindPicExFromMem
-HCFP_FindColorsOffset
-HCFP_FindColorsOffsetByFile
-HCFP_FindColorsOffsetByMem
9.优化一些扩展键*
10.优化测试工具增加相关测试功能*
11.更新DMA服务器版本(6.0)*
12.增加综合测试工具*
13.增加绑定模式2*
-2内部流程不同于0模式(如果一些按键失效或者错乱或者小键盘失效,可以尝试这个2)*
14.优化网络验证*
15.修正文档SDK HCWIN_FindWindowEx 窗口句柄类型*

HD【20241230.1】
1.增加一个返回最大开数的接口-方便查看*
-HCEnv_GetMaxWindowNum
2.兼容版本*
3.优化目标进程位数绑定到窗口序号-再初始化序号的时候用全局进程位数绑定到序号上*
4.增加DMA虚拟机指定内存地址范围找特征接口*
-HCVMDMA_FindCodeX86Ex
-HCVMDMA_FindCodeX64Ex
5.优化OCR返回该为json数组-防止“|”分隔符与原来文本重复的情况*
6.修改接口名前缀*
-HDEnv_GetGlobalWinExIndex--->HCEnv_GetGlobalWinExIndex
-HDEnv_GetWinExIndex--->HCEnv_GetWinExIndex
7.修复特征码找不到异常崩溃的问题*
8.DMA模块增加获取服务器版本接口*
-HCVMDMA_GetVersion
-HCVMDMA_IsVersion
9.优化后台截图获取
10.优化获取后台BMP数据

HD【20241229.1】
1.优化HCFP_FindColor的json返回*
2.修复SDK文档一些文本描述问题*
3.优化安装插件一个参数赋值和返回值句柄判断*
4.增加获取<窗口扩展序号>和<全局窗口扩展序号>接口-方便一个序号控制多个进程*
4.2窗口扩展序号适用场景:
-HDEnv_GetWinExIndex
-窗口序号可以同时控制游戏+登录器(共2个进程)
-防止之前进程切换带来的麻烦事,相当于游戏进程的助手来控制额外的进程(登录器)
4.3全局窗口扩展序号适用场景:
-HDEnv_GetGlobalWinExIndex
-中控可以单独控制登录器,不在需要和游戏序号重复了
-防止之前进程切换带来的麻烦事,相当于中控进程的助手来控制额外的进程(登录器)
5.增加多点找色*
-HCFP_CmpColorExs
-HCFP_CmpColorExsByFile
-HCFP_CmpColorExsByMem
6.增加后台截图数据获取失败接口-用于判断辅助性判断识别接口*
-HCCS_IsCaptureValid
7.更新优化多开数限制-从原有的31开变为62开*
以下是序号范围说明:
两种模式:
第一种:共享模式可以30开
-0中控序号
-1~30 窗口序号
-31 中控序号的副窗口序号(助手)
-32-61 窗口序号的副窗口序号(助手)
第二种:独立模式(无助手)可以60开
-0中控序号
-1~30 窗口序号
-31 无用
-32-61 窗口序号
8.修改多开数策略*
测试账号仅仅只能调试模式使用并且只能单开
正式账号不再受限
9.优化内存池释放内存接口-加一个窗口序号参数
-HCCS_FreeMemPool

HD【20241221.1】
1.移除一些调试信息
2.工具增加扩展接口模块测试按钮和代码自动生成
3.修复一些扩展犍失效问题-小键盘方向键等

HD【20241219.1】
1.增加HD扩展接口模块-方便操作
-二次封装接口,省去了自己封装通讯安装插件流程
-分3类共7种安装插件方式
-HDEX_InstallPlugin1
-HDEX_InstallPlugin2
-HDEX_InstallPlugin3
2.修复win11后台绑定细节

HD【20241217.1】
1.增加虚拟机DMA特征码搜索接口
-HCVMDMA_FindCodeX86
-HCVMDMA_FindCodeX64

HD【20241215.1】
1.多线程状态机模块增加回溯状态接口
-HCMT_RetraceStatus
2.增加获取后台/前台鼠标位置接口
-HCMKB_GetMousePos
3.增加打开进程命令-扩展接口
-HCSYS_RunAppExxxx

HD【20241212.2】
1.开放调试版本32位普通注入64程序接口
-之前是发布版本才能调用
2.自定义插件增加特征码搜索接口-方便操作
3.同步上线炫语言版本

HD【20241212.1】
1.继续增加虚拟机DMA模块接口
-HCVMDMA_ServerIsStart
-HCVMDMA_CloseServer
2.工具增加DMA相关的测试功能
-一个虚拟机代表一个窗口
3.优化状态机增加优先级策略-使得自由度更高
-可以回溯状态
4.优化多线程模块-内部超时强制结束线程时间改为60秒-之前30秒
-使用多线程延迟接口能即使检查标志
-能正常退出线程就正常退出否则强制结束
5.优化强制结束线程锁的问题-增强稳定性
-防止死锁的一切可能性

HD【20241211.1】
1.继续增加虚拟机DMA模块接口
-HCVMDMA_Close
2.优化内存池

HD【20241210.1】
1.继续增加虚拟机DMA模块接口
-HCVMDMA_ReadBytes
-HCVMDMA_WriteBytes
-HCVMDMA_GetBaseModule
-HCVMDMA_GetModule
-HCVMDMA_ReadFloat
-HCVMDMA_ReadDouble
-HCVMDMA_WriteFloat
-HCVMDMA_WriteDouble

HD【20241209.1】
1.增加虚拟机DMA模块接口-执行CALL-支持线程
-HCVMDMA_GetProcAddr
-HCVMDMA_ShellCodeInitX64
-HCVMDMA_RunShellCodeX64
-HCVMDMA_ShellCodeInitX86
-HCVMDMA_RunShellCodeX86

HD【20241208.1】
1.增加虚拟机DMA模块-物理机读写虚拟机
-HCVMDMA_StartServer
-HCVMDMA_Init
-HCVMDMA_GetPid
-HCVMDMA_Read
-HCVMDMA_Write
2.移除多任务控制器模块-单独编译成静态库使用

HD【20241207.1】
1.增加多线程模块延迟扩展接口
-HCMT_SleepEx

HD【20241206.1】
1.文档添加上捕捉异常调用堆栈
-HCHD_CatchException
2.额外添加设置字库接口-省去遍历
-HCFS_SetDictFileEx
3.优化内存池
4.优化识别接口-捕捉异常方便调试

HD【20241130.1】
1.增加状态机延迟接口
-HCMT_StatusSleep

HD【20241129.2】
1.优化多线程模块-更细致

HD【20241129.1】
1.增加状态机模块-配合多线程模块实现快速开发
-HCMT_IsStatus
-HCMT_EnableStatus
-HCMT_StartStatus
-HCMT_ChangeStatus
-HCMT_AddStatus
-HCMT_GetStatus

HD【20241128.1】
1.优化多线程延迟等待接口

HD【20241127.2】
1.Tem智能识图返回json增加"size"字段信息-去重复容器前的大小
2.优化多线程模块更新UI调用后清除之前缓存文本

HD【20241127.1】
1.优化动态识图结果重叠的情况-内部过滤
2.优化后台键鼠代码细节

HD【20241126.1】
1.优化RAW和3D游戏镜头移动

HD【20241125.1】
1.增加多线程模块单独控制主副接口
-HCMT_SetPauseEx
-HCMT_SetRecoverEx

HD【20241124.2】
1.兼容23H2_win11_22631_2861(X86X64)

HD【20241124.1】
1.增加多线程模块状态获取接口
-HCMT_IsPause
-HCMT_IsStop
-HCMT_GetState

HD【20241123.1】
1.优化某些容易被第三方驱动屏蔽的接口-解决冲突

HD【20241122.1】
1.优化HOOK模块-避免一些保护游戏导致不触发回调

HD【20241121.1】
1.优化主线程响应速度
2.增加前台后台截图随意动态切换-方便处理不同场景

HD【20241119.1】
1.日常维护
2.优化OCR重叠字问题

HD【20241118.1】
1.日常维护
2.修复ocr内存释放问题
3.驱动无痕注入兼容中文进程名

HD【20241114.1】
1.兼容各大反外挂引擎
2.日常维护

HD【20241113.1】
1.优化智能识图-微调参数
2.文档案例
3.优化插件兼容easy反外挂引擎(如:新世界)
4.新增NC平台后台截图模式(如:天堂W)
CAPTURETYPE_D3D9_NC_x64 = 46,//NC游戏
CAPTURETYPE_D3D11_NC_x64 = 47,//NC游戏

HD【20241110.2】
1.兼容WIN10_19044_全系小版本
2.增加几篇相关识字文档案例-方便微调参数提高准确率

HD【20241110.1】
1.优化获取剪切板数据
2.增加浮点数转整数值的浮点数形式-方便兼容其他语言
-HCM_FloatTakeInt
3.增加执行启动控制器程序取返回值信息
-HCSYS_RunAppGetRet

HD【20241107.1】
1.HCFS_SetCharSpaceHV默认值改为水平11垂直11
2.日常维护
3.优化后台变前台会自动解绑

HD【20241106.1】
1.兼容win10_1803.17137.1304
2.绑定窗口增加一个前台属性-方便之前前台接口操作操作
绑定属性:"normal"或"Normal"
说明 ：
2.1.绑定了这个属性表示相对于绑定的窗口的客户区坐标,同时后台属性全部消失,表示窗口前台
2.2.如果没有绑定normal 表示相对于屏幕的绝对坐标,同时还能使用后台键鼠-这种情况前台后台都可以用
3.优化多点找色接口返回范围取色数量接口
-HCFP_FindColors
4.绑定谷歌如果无法后台GDI截图-请关掉谷歌加速
5.增加主板机重启adb接口和IP连接
-HCSC_ResetAdb
6.后台工具增加相关测试按钮

HD【20241104.1】
1.优化内存地址描述格式
相对偏移]+x]+y]+z 取地址
相对偏移]+x]+y]+z] 取地址值
2.优化后台暂停有些游戏不能点击的问题
3.增加主板机操作接口
HCSC_SetPath
HCSC_QueryDevices
HCSC_ConnectDevices

HD【20241102.1】
1.增加steam游戏专用后台截图x64x86模式
CAPTURETYPE_D3D9_Steam_x64 = 42
CAPTURETYPE_D3D11_Steam_x64 = 43

HD【20241101.1】
1.优化枚举窗口相关接口返回值-未找到返回0
-HCWIN_EnumWindowByProcessId
-HCWIN_EnumWindow
-HCWIN_EnumProcess
-HCWIN_EnumWindowByProcess
2.兼容win10_19045.5011

HD【20241031.1】
1.兼容win10_19042.789
2.兼容win10_19045.3448
3.兼容win10_19045.3758

HD【20241030.1】
1.兼容win10_1903.18362.239
2.兼容win11_23H2.22631.4317

HD【20241029.1】
1.兼容19043.928
2.日常维护优化

HD【20241024.1】
1.增加HD驱动接口从模块获取函数地址
-HCHD_GetModuleCallAddr
2.增加排序方向类型2
-从右到左 从上到下 (单点找色)
3.优化代码
4.增加后台截图缓存获取失败判断接口
-HCCS_IsCaptureValid

HD【20241023.1】
1.优化处理一些重连细节-更稳定更安全
2.增加获取最后一个返回值接口-用于调试
-HCEnv_GetRetValue
3.优化一些输出调试信息
4.多线程模块增加一个额外参数
-HCMT_InitProcessEx
5.增加驱动验证

HD【20241021.1】
1.增加窗口排序
-HCWIN_SortWindows
2.优化关闭截图和解绑后台判断进程是否存在
3.优化暂时恢复判断进程是否存在

HD【20241020.1】
1.发布
2.测试账号只能用于32位调试版本(包括heart 111 账号)
3.发布版本账号需要充值才能获取(享受全部功能和全版本)

HD【20241019.1】
1.增加json返回信息 w h 和单个返回x y w h
-HCFS_FindStrMutil
-HCFS_FindStrMutilVPoints
-HCFS_FindStrMutilsHVPoints
-HCFS_FindStrMutilsEx
-HCFS_FindStrEx
-HCFS_FindStrMutilsEx
-HCFS_FindStrMutilsExx
-HCFS_FindStrMutil
-HCFS_FindStr
-HCFS_FindStrEx
2.增加设置11行中 是否只有一个字
-HCFS_IsOne11
3.增加 17 18 19窗口状态设置
4.工具增加相关全局设置参数(窗口系统界面)
5.优化1607版本的后台截图
6.优化强制结束线程和通讯机制更稳定
7.增加识字周围像素占比设置
-HCFS_GroundRate

HD【20241018.1】
1.优化OCR和拼接字符串识字速度更快
2.OCR以及识字全部接口增加排序类型参数dirType-方便后面增加排序算法(具体看文档)
-HCFS_Ocr
-HCFS_OcrByFile
-HCFS_OcrByMem
-HCFS_FindStr
-HCFS_FindStrMutil
-HCFS_FindStrMutilVPoints
-HCFS_FindStrMutilVPointsByFile
-HCFS_FindStrMutilVPointsByMem
-HCFS_FindStrMutilHVPoints
-HCFS_FindStrMutilHVPointsByFile
-HCFS_FindStrMutilHVPointsByMem
-HCFS_FindStrEx
-HCFS_FindStrExx
-HCFS_FindStrMutilsEx
-HCFS_FindStrMutilsExx
-HCFS_FindStrMutilsAuto
-HCFS_FindStrMutilsAutoEx
-HCFS_FindStrMutilsAutoByFile
-HCFS_FindStrMutilsAutoByFileEx
-HCFS_FindStrMutilsAutoByMem
-HCFS_FindStrMutilsAutoByMemEx
3.优化D3D11后台截图-防止与部分游戏冲突
4.修复有概率PID拿不到的情况
5.增加部分识字接口的json返回信息-更多信息(具体看文档)
-FindStr
-HCFS_FindStrEx
-HCFS_FindStrExx
6.优化识字接口中拼接字符串的算法
-HCFS_FindStrMutilsAutoXXX
7.HCFS_SetCharSpaceHV接口的字水平间距改为5像素
8.相关像素识图接口增加排序类型参数-dirType
-HCFP_FindColor
-HCFP_FindColors
-HCFP_FindPic
-HCFP_FindPicEx
-HCFP_FindColorByFile
-HCFP_FindColorsByFile
-HCFP_FindPicByFile
-HCFP_FindPicExByFile
-HCFP_FindColorByMem
-HCFP_FindColorsByMem
-HCFP_FindPicByMem
-HCFP_FindPicExByMem
-HCFP_FindPicExFromMem

HD【20241017.1】
1.优化OCR速度更快
2.OCR接口增加排序类型参数
-HCFS_Ocr
-HCFS_OcrByFile
-HCFS_OcrByMem

HD【20241016.2】
1.优化线程绑定

HD【20241016.1】
1.收费版本
2.清空之前账号记录
3.限制测试账号仅调试版本使用

HD【20241013.1】
1.优化识字和ocr(拼接字符串模式)
-HCFS_FindStr
-HCFS_FindStrEx
-HCFS_FindStrExx
-HCFS_FindStrMutilsAuto_Debug
-HCFS_FindStrMutilsAuto
-HCFS_FindStrMutilsAutoEx
-HCFS_FindStrMutilsAutoByFile
-HCFS_FindStrMutilsAutoByFileEx
-HCFS_FindStrMutilsAutoByMem
-HCFS_FindStrMutilsAutoByMemEx
2.修改识字OCR返回值格式-增加坐标信息
3.增加字间距设置接口
-HCFS_SetCharSpaceHV

HD【20241012.2】
1.HD驱动增加提权
-HCHD_PcrocessRoot
-HCHD_HandleRoot
2.提供配套过游戏保护检测CE
3.增加窗口外部矩形绘制-为了调试追逐窗口
-HCSD_DrawWinodws

HD【20241012.1】
1.增加窗口收费模式-说明见群公告
-预计本月15号开始收费
-测试账号找管理获取
-删除之前所有用户记录
-充值用户会按照之前的充值金额自动到账
2.加强验证校验-发布版本自带防破解

HD【20241010.1】
1.优化调试模式-方便调试
2.增加cmd命令取返回值接口-方便操作主板机模块
-HCSYS_GetCmdRet

HD【20241010.1】
1.优化调试模式-方便调试
2.增加cmd命令取返回值接口-方便操作主板机模块
-HCSYS_GetCmdRet

HD【20241009.1】
1.极致优化响应速度(高效,低耗,稳定,多线程安全)
经测试:
传统算法找图识字:
-基本识别全图在50ms内
-区域识别在5ms内
-内存模块读写0ms延迟(之前延迟很高)
2.测试工具增加相关耗时信息打印

HD【20241008.1】
1.优化通讯代码

HD【20241005.1】
1.继续对已有接口(几个指定范围tem智能识图)增加(全部找出)参数
-FindRangeImageTem(A/W)
-FindRangeImageTemByFile
-FindRangeImageTemByMem
-FindRangeImageTemFromMem

HD【20241004.1】
1.优化插件初始化接口(方便主板机接入)
2.几个全图tem智能识图增加是否全部找出所有否则找出最大的置信度那个
-返回json增加图片索引信息(%d %d %d %d %d %f)
-HCFI_FindImageTemA
-HCFI_FindImageTemW
-HCFI_FindImageTemByFile
-HCFI_FindImageTemByMem
-HCFI_FindImageTemFromMem
3.优化CPU帧数-防止解绑崩溃

HD【20241003.1】
1.优化加载驱动的时候DLL接口获取失败的情况(增加容错率)
2.日常维护优化HD驱动

HD【20241002.1】
1.兼容19043.964
2.增加前台键鼠模块-窗口序号-1表示前台-涉及到的接口如下:
HCMKB_MoveTo
HCMKB_LeftDown
HCMKB_LeftUp
HCMKB_LeftClick
HCMKB_LeftDoubleClick
HCMKB_RightDown
HCMKB_RightUp
HCMKB_RightClick
HCMKB_RightDoubleClick
HCMKB_MiddleDown
HCMKB_MiddleUp
HCMKB_MiddleClick
HCMKB_MiddleDoubleClick
HCMKB_WheelDown
HCMKB_WheelUp
HCMKB_KeyDwon
HCMKB_KeyUp
HCMKB_KeyPress
HCMKB_SendStringW

HD【20241001.1】
1.优化插件版本-全面兼容(共8个版本)
X86X64-ascii/unicode 4个发布版本
X86X64-ascii/unicode 4个调试版本
2.插件兼容64位//version!
修改内容:
------------------------------------------HOOK模块
HDHK_InterceptApi:
__int32 回调地址 ->__int64 回调地址
__int32 附加参数 ->__int64 附加参数
HDInterRecv::HandleCallBack
HDInterRecv::HandleHookCallBack
------------------------------------------心跳模块
HCEnv_AttachHeart：
__int32 funCallbackAddr->__int64 funCallbackAddr
------------------------------------------接受模块
HCEnv_SetHandleEventCallBack:
__int32 funCallBack->__int64 funCallBack
------------------------------------------线程强制结束
HCEnv_TerminateThreadEx:
__int32 threadHandle-> __int64 threadHandle
------------------------------------------shellcode模块
HCSH_GetShellCode:
__int64 返回机器码字节大小变量的地址->__int32 返回机器码字节大小变量的地址
__int64 错误1变量的地址->__int32 错误1变量的地址
__int64 错误2变量的地址->__int32 错误2变量的地址
------------------------------------------截图模块
HCCS_OpenCSEx:
__int32 hwnd ->__int64 hwnd
------------------------------------------GAME模块
HC_HookMainThread:
__int32 窗口句柄-> __int64 窗口句柄
------------------------------------------HD驱动模块
HCHD_MousePressEx:
__int32 hwnd->__int64 hwnd
HCHD_MouseDown:
__int32 hwnd->__int64 hwnd
HCHD_MouseUp:
__int32 hwnd->__int64 hwnd
------------------------------------------HN驱动模块
HCN_NormalInstallPlugX86Ex:
__int32 hwnd->__int64 hwnd
HCN_NormalInstallPlugX64Ex:
__int32 hwnd->__int64 hwnd
------------------------------------------键鼠模块
HCMKB_Bind:
HCMKB_BindEx:
HCMKB_BindModeEx:
HCMKB_SwitchBind:
HCMKB_SwitchBindEx:
HCMKB_SwitchBindModeEx:
HCMKB_SendStringF:
HCMKB_SendDeleteTextF:
HCMKB_SendKeyDownF:
HCMKB_SendKeyUpF:
HCMKB_SendKeyPressF:
__nt32 hwnd->__int64 hwnd
------------------------------------------窗口模块
所有接口窗口句柄类型变动
__nt32 hwnd->__int64 hwnd
__nt32 parentHwnd>__int64 hwnd
-------------------------------------------------------------

HD【20240930.1】
1.整体优化插件文件大小

HD【20240929.1】
1.优化CPU帧数动态调整-稳定帧数

HD【20240928.2】
1.优化CPU帧数设置

HD【20240928.1】
1.增加按键相关接口-适合单独处理某个子控件(例:Edit RichEdit等)
-HCMKB_SendKeyDownF
-HCMKB_SendKeyUpF
-HCMKB_SendKeyPressF
-HCMKB_SendDeleteTextF

HD【20240926.1】
1.优化序号(内部自动转换主序号)
2.兼容系统19044.4894小版本
其他版本不兼容直接反馈给群主

HD【20240923.2】
1.优化多线程模块
2.增加错误信息

HD【20240923.1】
1.测试工具增加多线程模块测试页面

HD【20240922.1】
1.增加HD中控多线程模块
-快速开发
-更稳定的兼容HD接口(防止各种语言的差异性导致中控不稳定)
-HDMT_InitProcess
-HDMT_InitOperate
-HDMT_RegisterMessage
-HDMT_MsgSend
-HDMT_MsgPost
-HDMT_MsgStart
-HDMT_MsgStop
-HDMT_MsgReStart
-HCMT_MsgUpdateUI
-HCMT_MsgStepText
-HDMT_Start
-HDMT_SetAllPause
-HDMT_SetAllRecover
-HDMT_SetAllStop
-HDMT_SetPause
-HDMT_SetRecover
-HDMT_SetStop
-HDMT_Sleep
-HDMT_IsRunning
-HCMT_GetStateString

HD【20240921.1】
1.优化测试工具的抓图功能
-局部抓图
-全屏抓图
-局部放大
-等

HD【20240919.2】
1.优化项目编译环境C++14

HD【20240919.1】
1.优化验证

HD【20240916.2】
1.修复谷歌内置浏览器操作

HD【20240916.1】
1.修复某个坐标显示问题
2.优化自定义插件代码
3.兼容19041.1415系统
4.取消部分调试信息

HD【20240914.1】
1.增加免环境yolov5相关模块接口
-HCYOLO_SetModelFile
-HCYOLO_SwitchModelFile
-HCYOLO_Excute
-HCYOLO_ExcuteByFile
-HCYOLO_ExcuteByMem
2.修改HD驱动接口名字
-HCHD_PHIDE->HCHD_PHide
-HCHD_PSHOW->HCHD_PShow
3.优化通讯

HD【20240913.1】
1.增加yolo相关模块接口

HD【20240912.1】
1.增加HD驱动判断地址是否有效接口
-HCHD_AddrIsRead
2.增加HD驱动进程窗口保护接口
-HCHD_PP
3.增加HD驱动进程隐藏接口
-HCHD_PSHOW
-HCHD_PHIDE
4.增加进程伪装接口X86X64
-HCWIN_CamouflageProcess
5.测试工具增加新接口测试按钮

HD【20240911.1】
1.修复X86任意HOOK模块
2.优化通讯

HD【20240910.4】
1.测试工具找字界面优化
2.优化接口HCFP_GetColor

HD【20240910.3】
1.优化字库调用-支持多线程

HD【20240910.2】
1.优化任意HOOK X64模块-兼容更多情况

HD【20240910.1】
1.优化修复多开通讯问题

HD【20240909.1】
1.优化HD插件通讯-极大的降低CPU使用率

HD【20240907.1】
1.增加IP代理模块-sock5/ss

HD【20240902.1】
1.增加移动轨迹设置相关参数接口
HCMKB_SetRealMouse
2.工具增加轨迹调试功能

HD【20240901.2】
1.修复内存池几率错误
2.增加内置验证时长

HD【20240901.1】
1.修复智能范围找图返回坐标问题

HD【20240830.1】
1.更换服务器-更稳定

HD【20240827.2】
1.优化多点偏移找色

HD【20240827.1】
1.优化DX后台鼠标按键

HD【20240826.1】
1.版本维护-重大更新
2.火山模块发布
3.火山课程开始录制

HD【20240825.2】
1.修复读取整数接口
-HCM_Read

HD【20240825.1】
1.修改HCInject_GetPreWinIndex接口返回值说明

HD【20240824.1】
1.优化后台按键-兼容性更全面
2.优化输入法文本输入接口-部分窗口需要激活窗口
-SendString
-SendString2
3.优化字符串最后一个有“|”分隔符导致失败的情况
4.优化激活窗口类型12 8 1
5.优化测试工具显示
6.优化后台键鼠输入绑定属性
-dx.mouse.input.lock.api
-dx.mouse.input.lock.api
7.增加前台输入接口-通用
-SendStringF

HD【20240823.1】
1.测试工具增加生成绑定属性代码功能
2.修改SetWindowState状态值1的逻辑

HD【20240822.2】
1.修复从文件识别相关接口
-HCFP_FindPicExByFile
-HCFP_FindPicExByMem

HD【20240822.1】
1.优化接口
-HCInject_GetPreWinIndex

HD【20240821.2】
1.前台键鼠兼容win10全系统
20H2
21H1
21H2
22H2
等
2.前台键鼠兼容win11系统
21H2.22000.2245
3.修复前台键鼠移动坐标问题

HD【20240821.1】
1.优化多点偏移找色接口算法
2.图识字获取后台截图文件失败再次尝试获取一次

HD【20240820.2】
1.兼容系统19043.1237

HD【20240820.1】
1.优化修复前台截图
2.测试工具增加前台截图模式

HD【20240818.1】
1.修复浏览器缩小窗口导致的崩溃
2.浏览器增加异常捕捉,稳定性更高

HD【20240817.2】
1.修复普通注入的时候文件占用的情况

HD【20240817.1】
1.修改后台中键弹起BUG
2.修改HOOK封包RecvFrom崩溃BUG

HD【20240815.1】
1.优化修复后台键鼠-模拟器用户会出现的BUG
2.修复重新绑定导致的几率崩溃问题
3.增加内置激活后延迟操作

HD【20240813.3】
1.增加HOOK开启判断
2.优化

HD【20240813.2】
1.优化修复

HD【20240813.1】
1.优化修复

HD【20240812.3】
1.增加后台输入命令
HCMKB_SendStringExW
2.优化获取和设置剪切板接口

HD【20240812.2】
1.增加HOOK模块回调设置接口(X86X64)
-HDHK_SetProcessHookCallBackLparam

HD【20240812.1】
1.测试优化HOOK模块(X86)

HD【20240811.1】
1.优化和增加相关窗口进程操作接口
HCWIN_SetWindowState
HCWIN_SetWindowTransparent
HCSYS_GetCpuUsageByPid
HCSYS_GetMemoryUsageByPid
2.测试优化HOOK模块(X64)
3.工具增加相关测试按钮

HD【20240809.4】
1.测试工具增加抓图功能

HD【20240809.3】
1.测试工具增加识字调试功能

HD【20240809.2】
1.增加识字调试接口-实时查看
HCFS_CloseALLWindow_Debug

HD【20240809.1】
1.增加识字调试接口-实时查看
HCFS_FindStrMutilsAuto_Debug
HCFS_CloseALLWindow_Debug

HD【20240808.1】
1.增加任意HOOK接口(X86)
HDHK_Hook
HDHK_PauseHook
HDHK_RecoverHook
HDHK_UnHook

HD【20240807.2】
1.增加任意HOOK接口(X64)
HDHK_Hook
HDHK_PauseHook
HDHK_RecoverHook
HDHK_UnHook
2.修复HD驱动申请指定内存

HD【20240807.1】
1.修复HD驱动申请指定内存

HD【20240805.1】
1.增加组件卡槽数量到16个
2.兼容X86封包
3.修改相关封包接口-为了兼容X86X64
HDHK_InterceptApiX64--->HDHK_InterceptApi
HDHK_PauseInterceptApiX64--->HDHK_PauseInterceptApi
HDHK_RecoverInterceptApiX64--->HDHK_RecoverInterceptApi
HDHK_UnInterceptApiX64--->HDHK_UnInterceptApi
HDHK_SendApiX64--->HDHK_SendApi
HDHK_SendToApiX64--->HDHK_SendToApi
HDHK_SetProcessCallBackLparamSend-HDHK_SetProcessCallBackLparamSendX64
HDHK_SetProcessCallBackLparamRecv-HDHK_SetProcessCallBackLparamRecvX64
HDHK_SetProcessCallBackLparamSendTo-HDHK_SetProcessCallBackLparamSendToX64
HDHK_SetProcessCallBackLparamRecvFrom-HDHK_SetProcessCallBackLparamRecvFromX64
4.增加X86相关接口
HDHK_SetProcessCallBackLparamSendX86

HDHK_SetProcessCallBackLparamRecvX86
HDHK_SetProcessCallBackLparamSendToX86
HDHK_SetProcessCallBackLparamRecvFromX86

HD【20240727.2】
1.增加识字接口
-HCFS_FindStrMutilsAutoEx
-HCFS_FindStrMutilsAutoByFileEx
-HCFS_FindStrMutilsAutoByMemEx

HD【20240727.1】
1.内置JQL游戏黑屏功能
2.测试工具增加黑屏测试调试按钮

HD【20240725.1】
1.优化更新HD驱动

HD【20240724.1】
1.优化子图没有范围图大的判断

HD【20240721.1】
1.优化-1005主线程超时调用返回
2.增加清除驱动全局注入缓存接口
3.修复智能找图范围识别

HD【20240714.1】
1.增加自定义插件接口
HCModule_CALLEx
2.优化键盘输入接口

HD【20240709.1】
1.优化X32程序注入X64DLL
2.优化键鼠
3.优化自定义插件调用X86X64
4.测试工具增加相关测试按钮-注入模块
5.增强后台键鼠-过更多检测

HD【20240704.2】
1.升级服务器

HD【20240704.1】
1.修复优化细节

HD【20240703.1】
1.修复从内存加载图片BUG
2.优化输入

HD【20240702.1】
1.增加相关识字识图从内存加载子图接口
-HCFP_FindPicExFromMem
-HCFI_FindImageTemFromMem
-HCFI_FindRangeImageTemFromMem
-HCFS_FindStrMutilVPointsByFile
-HCFS_FindStrMutilVPointsByMem
-HCFS_FindStrMutilHVPointsByFile
-HCFS_FindStrMutilHVPointsByMem
2.优化多点偏移找色-排除不在范围内得偏移点
-HCFP_FindColorsOffset
3.修复韩文输入

HD【20240630.1】
1.优化切换绑定
2.新增2个从内存或文件范围识字
-HCFI_FindRangeImageTemByFile
-HCFI_FindRangeImageTemByMem
3.HCFP_FindPicEx系列接口增加返回json信息
4.优化细节

HD【20240629.1】
1.增加前台截图模式
-CAPTURETYPE_NORMAL 50
2.增加智能识图从内存中加载图片
-HCFI_FindImageByFile
-HCFI_FindImageTemByFile
-HCFI_FindImageByMem
-HCFI_FindImageTemByMem
3.优化识字接口结果返回-取消重复过滤
4.兼容b@ 或 B@色彩描述-反色
5.修复识字中指定拼接字符串的BUG
6.新增普通注入2个接口X64
-HCN_NormalInstallPlugX64
-HCN_NormalInstallPlugX64Ex

HD【20240627.1】
1.优化通讯(2种模式自动识别,防止进程保护或者权限不够导致的拒绝访问)
2.增加内存模块接口(指定地址找特征码)
-HCM_FindCodeEx
3.增加绑定模式扩展接口
-HCMKB_BindModeEx
4.增加几个从内存或文件识字接口
-HCFS_FindStrMutilsAutoByMem
-HCFS_OcrByFile
-HCFS_OcrByMem

HD【20240617.1】
1.修复/优化HOOK模块修改回调参数

HD【20240615.1】
1.优化挂接主线程
2.优化底层框架
3.优化HOOK模块下重连的情况
4.兼容19045.4353系统版本
5.增加通过PID获取之前指定的窗口序号接口与HCInject_GetPrePid();同类
-HCInject_GetPreWinIndex();可以通过此接口重连和判断是否绑定过

HD【20240614.2】
1.优化自定义插件-防止重连多次加载

HD【20240614.1】
1.增加2个发包接口
-HDHK_SendApi
-HDHK_SendToApi

HD【20240613.2】
1.增加恢复拦截接口
-HDHK_RecoverInterceptApiX64

HD【20240613.1】
1.修复调试版本捕捉异常的处理

HD【20240612.2】
1.修复重连导致的超时

HD【20240612.1】版本大更新!!!版本大更新!!!版本大更新!!!
1.添加设置通讯检测间隔时间(ms)和跨进程回调函数响应反馈时间
-HCEnv_SetCheckComItlTime
-HCEnv_SetCheckCallBackTime
2.添加扩展初始化接口-提供更多参数用于初始化
-HCEnv_InitEx
3.添加扩展环境加载接口-提供更多的参数
-HCEnv_LoadEx
4.添加用于各种接口/函数/API的跨进程HOOK模块-并跨进程触发回调/拦截/修改
- send(插件序号0) sento(插件序号3) recv(插件序号1) recvfrom(插件序号4)
-HDHK_InterceptApiX64
-HDHK_PauseInterceptApiX64
-HDHK_UnInterceptApiX64
-HDHK_SetProcessCallBackLparamSend
-HDHK_SetProcessCallBackLparamRecv
-HDHK_SetProcessCallBackLparamSendTo
-HDHK_SetProcessCallBackLparamRecvFrom
5.修改HD驱动成功加载返回值-原来0xE0000000成功加载变为0x00000001
6.优化HD驱动的清除注入缓存
7.测试工具增加相关测试按钮-方便操作
8.优化内部通讯反馈机制-效率更高
9.原有的自定义插件卡槽2个扩容到10个
10.同步更新自定义插件库
11.兼容相关识图识字从内存加载图片
-HCFP_FindColorByMem
-HCFP_FindColorsByMem
-HCFP_FindColorsOffsetByMem
-HCFP_FindPicByMem
-HCFP_FindPicExByMem
12.新增找色从文件和内存中加载图片
-HCFP_CmpColorsByFile
-HCFP_CmpColorsByMem
-HCFP_GetColorByFile
-HCFP_GetColorByMem
13.细化绑定后台时系统版本号的识别
14.增加HD驱动申请指定内存地址的内存
-HCHD_MemoryAllocateEx

HD【20240529.1】
1.优化后台按键和绑定-兼容模拟器
2.测试工具增加相关测试按钮
3.优化修改增加按键相关接口
-HCMKB_SendStringA(增加)
-HCMKB_SendStringW(增加)

HD【20240528.1】
1.兼容模拟器(X86X64)
2.优化代码

HD【20240526.1】
1.修复心跳检测

HD【20240524.1】
1.调试版本增加2开

HD【20240523.1】
1.优化重连窗口机制

HD【20240516.1】
1.优化细节

HD【20240514.2】
1.修复内存池初始化数据-之前版本会弹窗

HD【20240514.1】
1.增加超时等待中退出循环标志-防止不必要的等待
2.优化字库文件解析字符串

HD【20240513.2】
1.修复判断驱动是否已经加载返回值
2.优化测试工具返回值显示
3.移除不必要的调试信息

HD【20240513.1】
1.增加驱动前台键鼠模块-不需要插上物理键盘鼠标
-HCHD_MousePress
-HCHD_MousePressEx
-HCHD_MouseDown
-HCHD_MouseUp
-HCHD_KbPress
-HCHD_KbDown
-HCHD_KbUp
2.移除旧接口
-HCHD_Kb
-HCHD_Mouse

HD【20240510.1】
1.兼容WIN10系统19043.1081版本(X86X64)

HD【20240509.1】
1.谷歌浏览器操作模块-内置浏览器操作(X64)
2.js注入模块-操作浏览器(X64)
-HCGB_Attach1
-HCGB_Attach2
-HCGB_Detach
-HCGB_InjectJSCode
-HCGB_ExcuteJSFile

HD【20240508.1】
1.修复N驱动内存释放问题
2.优化鼠标移动的轨迹延迟
3.优化强制关闭线程时锁的处理
4.修复拼接识字的BUG

HD【20240501.1】
1.增加通讯延迟-防止资源占比太大
2.优化内存池-修复弹窗
3.增加释放内存接口-针对内存池内存操作
-HCCS_FreeMemPool
4.经全图测试像素识别速度更效率-比大漠快
5.修复像素识图接口
-多图接口
-从文件多图接口

HD【20240427.1】
1.增加获取当前插件版本接口
-HCHD_GetVersion
2.所有像素识字识图算法改进-速度更快

HD【20240426.1】
1.优化识别范围

HD【20240425.1】
1.优化OCR识字
2.优化部分接口返回值

HD【20240424.1】
1.增加内存池-提高效率
2.优化像素识字像素识图的识别速度-更快(全图测试)

HD【20240423.1】
1.修复多开数量限制
2.修复截图缓存

HD【20240422.1】
1.兼容系统版本19045.3693

HD【20240421.1】
1.修复识字在有效高度不足11的情况的BUG

HD【20240420.1】
1.优化绑定属性字符串拼接
2.兼容系统19045版本4170 4291
3.优化像素识字接口效率提高至少10倍(全图测试)
-HCFS_FindStrMutilsAuto
4.优化找点算法IsGetPos/AddPoint
5.修复兼容系统18363系列
6.识字相关接口添加反相似度参数-(自行修改自己的导入接口)
-HCFS_FindStr
-HCFS_FindStrMutil
-HCFS_FindStrMutilVPoints
-HCFS_FindStrMutilHVPoints
-HCFS_FindStrMutilsEx
-HCFS_FindStrMutilsExx
-HCFS_FindStrMutilsAuto
-HCFS_FindStrMutilsAuto__
-HCFS_FindStrMutilsAutoByFile
-HCFS_FindStrEx
-HCFS_FindStrExx
7.优化像素识图接口效率提高至少20倍(全图测试)(支持透明图)

HD【20240411.1】
1.增加内存释放可读接口*
-HCM_IsBadReadAddr
2.取消全部通讯延迟(为了内存操作更快)*
3.增加截图缓存检查*
4.更新驱动*

HD【20240409.1】
1.增加预加载DLL接口和预加载lua文件-优先于HD框架
-HCInject_InitExx
2.增强强制关闭线程稳定性
-HCEnv_TerminateThread
-HCEnv_TerminateThreadEx
3.自带HD的lua接口

HD【20240408.2】
1.增加R0层驱动DLL模块注入接口(方便再已经打开的情况下注入)(支持32/64位)
-HCHD_NormalInstallPlugX86X64
-HCHD_NormalInjectX86X64ByFile
-HCHD_NormalInstallPlugX86X64Ex
-HCHD_NormalInjectX86X64ByFileEx
2.修改R3层普通注入接口(只支持32位)
-HCN_NormalInstallPlugX64X86->HCN_NormalInstallPlugX86
-HCN_NormalInstallPlugX64X86Ex->HCN_NormalInstallPlugX86Ex

HD【20240408.1】
1.修复打印日志信息标志BUG

HD【20240407.1】
1.优化系统版本号获取
2.兼容Win10 19045版本3693 3930 4046 4170

HD【20240404.1】
1.优化

HD【20240403.1】
1.优化智能识图默认相似度参数
-FindImageXXX系列接口默认0.8相似度
-FindImageTemXXX系列接口默认0.9相似度
2.优化通过文件指定识图识字数据相关接口的路径兼容绝对路径和相对路径
-HCRC_RecognitionCharA/W
-HCRC_RecognitionCharExA/W
-HCFI_FindImageByFile
-HCFI_FindImageTemByFile
-HCFP_FindColorByFile
-HCFP_FindColorsByFile
-HCFP_FindColorsOffsetByFile
-HCFP_FindPicByFile
-HCFP_FindPicExByFile
-HCFS_FindStrMutilsAutoByFile
3.取消相关资源全局路径检测,找不到资源会返回其他错误
4.增加强制关闭线程接口(更稳定安全防止死锁)
-HCEnv_TerminateThread
-HCEnv_TerminateThreadEx

HD【20240402.1】
1.优化初始化前清理截图数据缓存*
2.增加卡屏CRC校验接口*
-HCFP_GetRangeCRC
3.增加相关AI找图接口(和之前算法不同)*
-HCFI_FindImageTemA
-HCFI_FindImageTemW
-HCFI_FindRangeImageTemA
-HCFI_FindRangeImageTemW
4.增加相关识字识图指定图片文件接口*
-HCFI_FindImageByFile
-HCFI_FindImageTemByFile
-HCFP_FindColorByFile
-HCFP_FindColorsByFile
-HCFP_FindColorsOffsetByFile
-HCFP_FindPicByFile
-HCFP_FindPicExByFile
5.优化智能识图相关参数和阈值指定(之前导入的接口参数需要修改!!)*
6.测试工具增加调试找图找字实时标注颜色指定功能*
7.修改智能识字接口范围参数统一为xywh(之前导入的接口参数需要修改!!)*
8.修改像素识字识图范围参数统一默认值-1表示全部*

HD【20240330.2】
1.修复已知BUG

HD【20240330.1】
1.修改读字节流接口参数(HCM_ReadData/HCM_ReadDataAddr)-方便传参

HD【20240329.1】
1.智能识字工具添加删除项目,移动文件功能
2.shellcode相关接口修改形参引用改为指针-兼容别的语言无法引用问题
3.修复已知Bug

HD【20240328.1】
1.另外增加R3层内存操作接口获取模块句柄(x86x64)
2.另外增加R3层读写字节集数据接口(x86x64)
3.另外增加R3层读写单双浮点数数据接口(x86x64)
4.共增加11个接口

HD【20240327.1】
1.修复智能识字工具标注字体的异常
2.修复智能识字标注问题
3.兼容其他语言默认值
4.增加智能识字置信度信息反馈并优化智能识字训练
5.增加切换智能识字服务接口HCRC_SwitchRCServer
6.增加识字标志工具裁剪功能,图片二值化,灰度图和测试调试等功能
7.增加通用CALL传递额外ecx对象参数(X86)
8.增加实时智能识字可视化显示(实时可视化绘制)并添加设置全局绘制颜色接口HCSD_SetColor()
9.增加可视化调试窗口设置接口SetFollowClassTitleName()
10.修复特征码搜索 (x86)

HD【20240325.1】
1.修复内存读写(x86)

HD【20240324.3】
1.修复已经BUG

HD【20240324.2】
1.修复一些显示问题

HD【20240324.1】
1.增加解绑自动取消暂停绑定(X86X64)

HD【20240323.1】
1.修复恢复绑定导致的崩溃(X86)
2.修复打开查看器导致的崩溃(X86)
3.修复开发文档部分文字描述错误
4.修复暂停绑定无效(X86)

HD【20240322.2】
1.测试工具增加轨迹模式选项

HD【20240322.1】
1.兼容工作室系统版本1909.18363.778(x86x64)
2.测试工具增加轨迹模式选项

HD【20240319.1】
1.增加随机取语言文字并输入接口HCMKB_SendRoundNamePaste-保证取名
2.增加HCInject_GetHwndEx接口-返回绑定的句柄

HD【20240317.2】
1.HCInject_GetHwnd() 优化获取窗口序号对应的句柄
2.修复找图接口残留的小BUG

HD【20240316.2】
1.易语言导入接口模板
2.火山导入接口模板

HD【20240316.1】
1.增加自定义插件模块普通加载和卸载模式-方便调试(x86)
2.增加后台鼠标移动轨迹模式
3.增加内置夜鸦黑屏接口(游戏类型为7)

HD【20240315.1】
1.增加自定义插件模块普通加载和卸载模式-方便调试(x64)
2.添加插件保证多线程安全
3.兼容PT多开器

HD【20240310.2】
1.优化自定义模块接口响应速度
2.优化内部缓存大小

HD【20240310.1】
1.增加自定义插件模块普通加载和卸载模式-方便调试
2.优化并增加相关状态机模块接口
3.增加Auto识字接口返回宽度高度信息
4.修复识色接口(HCFP_FindColorsOffset)并增加参数
5.优化识图找色相似度算法

HD【20240309.1】
1.优化暂停恢复后台绑定-有些游戏会失效
2.后台绑定相关接口增加可控参数-针对不同程序指定(X84)
3.增加测试工具测试按钮

HD【20240308.1】
1.优化自定义插件模块-更方便
2.后台绑定相关接口增加可控参数-针对不同程序指定(X64)

HD【20240307.1】
1.优化部分接口返回信息
2.增加普通注入接口

HD【20240306.1】
1.修复轨迹移动的坐标获取问题
2.移除一些调试信息
3.增加多行多列识字符串2个接口(HCFS_FindStrMutilVPoints/HCFS_FindStrMutilHVPoints)
4.测试工具增加相关测试接口按钮

HD【20240305.1】
1.优化部分接口返回信息
2.增加相关识别接口可控参数-针对不同样本识别提高识别准确度

HD【20240304.2】
1.工具上增加测试识字按钮-方便调试

HD【20240304.1】
1.增加普通注入接口-方便操作小程序和调试程序*
2.增加打开识字调试信息接口(HCEnv_PrintLog)-方便调试*
3.优化识字算法-更稳定更精准*
4.增加切换绑定接口(HCMKB_SwitchBind)-方便操作(x86X64)*
5.增加单字库多字库识字接口(HCFS_FindStrMutilsAuto)-自适应字符串*
6.增加暂停绑定接口(HCMKB_PauseBind)-方便手动操作窗口(x86X64)*
7.优化多点偏移找色接口(HCFP_FindColorsOffset)-更精准*
8.修复内存模块(X86X64)*
9.增加特征码搜索测试按钮-测试工具*
10.增加几个识字和找色相关测试按钮-测试工具*
11.增加卡屏心跳检测-更方便*
12.增加登录后自动检测相关文件是否存在并创建*
13.修复多线程可能引起的验证弹窗错误*
14.优化卡屏检测接口*
15.优化截图逻辑-识别更快(50MS左右)*
16.兼容WIN10系统1607.14393.3300-(X86X64)*
17.增加注入模块-方便操作其他程序*

HD【20240229.1】
1.优化识字模块中的算法-更加精准稳定
2.增加识字调试信息(相似度)-方便调试
3.增加字库信息获取接口(2个)-方便查看

HD【20240228.3】
1.修复FindStrExx接口

HD【20240228.2】
1.增加识图识字接口(5个)-扩展
2.修改字库存储方式(支持切换字库)-方便操作
3.改接口导出方式-兼容其他语言

HD【20240228.1】
1.修复后台按键剪切板输入接口

HD【20240227.1】
1.优化后台键鼠接口的返回值-便于调试
2.修复后台键鼠系统版本兼容问题
3.修复已知小BUG

HD【20240226.2】
1.增加全局路径未设置的提示信息-便于调试

HD【20240226.1】
1.优化自定义模块中的通讯模块机制(堵塞和非堵塞和超时)(X86X64)-增强了稳定性
2.异常处理(防止退出中控的时候导致错误提示)-稳定性
3.取消32位程序内置进程名限制-解除限制
4.更新文档接口描述(自定义模块/环境模块/找字模块/找图模块)-更新
5.增加多点找色接口(HCFP_FindColors)-优化效率
6.增加一个识别多字符串接口(HCFS_FindStrExx)(之前是全部找)-优化效率

HD【20240225.2】
1.增加接受通讯模块实现双向通讯(自研通讯引擎)(X64X86)

HD【20240225.1】
1.增加自定义模块通讯接口(直接进程内部通讯)(x64X86)
2.优化通讯模块(防止特殊情况下的BUG)(x86x64)
3.增加自定义模块组件索引和通讯超时参数

HD【20240223.1】
1.优化自定义模块加载机制(x86和x64)
2.修复进程位数不匹配提示(x86和x64)

HD【20240201.1】
1.更换服务器(需要进群重新下载)

HD【20240130.2】
1.增加打开进程接口

HD【20240130.1】
1.改进系统模块中接口参数

HD【20240129.1】
1.增加窗口和进程操作接口共24个

HD【20240128.1】
1.增加X86X64通用CALL传递参数数量

HD【20240122.2】
1.增加目标进程和中控心跳检测并触发回调
2.增加X86通用CALL调用接口

HD【20240122.1】
1.兼容X86自定义组件模块
2.增加自定义模块密码账号验证(方便二次开发)

HD【20240121.2】
1.增加错误信息查找接口

HD【20240121.1】
1.增加绑定后台键鼠的开关设置(之前是全部绑定)
2.测试工具添加后台键鼠(操作前激活)选项
3.增加调试模式设置接口(方便有些接口调试操作)

HD【20240120.1】
1.修改接口导出返回值类型(方便易语言/火山调用)

HD【20240119.1】
1.增加像素OCR识字接口
2.改进识字相似度算法
2.像素识字对接测试工具

HD【20240118.1】
1.增加像素识字模块(兼容字库文件)

HD【20240117.2】
1.兼容系统win10 22H2版本(后台键鼠)

HD【20240117.1】
1.AI找图模块中增加范围内找图接口(HCFI_FindRangeImage)

HD【20240116.1】
1.增加状态机模块(多开)

HD【20240115.1】
1.调试版本(绑定本机,可调试)
2.发布版本(扣点模式)

HD【20240114.1】
1.增加调试版本,方便开发者调试

HD【20240111.2】
1.修复驱动隐藏导致的蓝屏
2.解除内置进程过滤,现在可以任意进程

HD【20240111.1】
1.优化HD驱动环境
2.增加HD驱动隐藏

HD【20240109.1】
1.增加X86后台键鼠和兼容系统

HD【20240107.1】
1.增加和完善X86后台键鼠(预计3天完成)
2.准备驱动隐藏突破某些国服游戏检查驱动导致的环境异常

HD【20240106.1】
1.优化X86X64(D3D9 D3D11 GDI)通用性后台截图
2.公布头文件(供C++使用)
3.修改手册说明

HD【20240105.1】
1.增加通用性后台截图功能(X64 GDI)
2.修复区域截图BUG
3.增加错误集
4.增加安装X86插件接口和测试按钮
5.对接X86目标进程测试通过,通讯正常
6.增加X86通用性后台截图功能(X64 D3D11)
7.修改通用性后台截图接口(需要指定窗口句柄)
8.改进截图数据格式判断

HD【20240104.1】
1.增加通用性后台截图功能(D3D9/D3D11)
2.测试工具账号注册信息优化

HD【20240103.1】
1.优化测试工具tab控件多行显示
2.搭建x86目标进程框架DLL
3.改进接口返回值和获取方式
PS：32位目标进程还不兼容,会加紧兼容


问题集合

Help >
问题集合

【1】HCInject_GetLastInfo通讯代码返回121？
->进程PID指定错误
----------------------------------------------------------------

【2】如果后台键鼠失效？
->可以尝试绑定raw属性
----------------------------------------------------------------

【3】B站教程？
->https://space.bilibili.com/436340181?spm_id_from=333.337.0.0
----------------------------------------------------------------

【4】测试工具如何使用？
->https://www.bilibili.com/video/BV1dJGfe7EQZ/?spm_id_from=333.999.0.0
----------------------------------------------------------------

【5】可以在打开游戏的情况下,安装插件实现绑定通讯进程吗？
->可以,请使用注入模块中的相关接口
----------------------------------------------------------------

【6】HCInject_GetLastInfo通讯代码返回0？
->插件没有安装成功,请检测驱动是否安装或者是否成功调用注入接口
----------------------------------------------------------------

【7】MuMu模拟器为什么游戏点击多次才会生效？
->关闭模拟器推荐的键鼠方案改为不使用方案
----------------------------------------------------------------

【8】如何不通讯的情况下,避免提示进程环境为NULL,让窗口序号生效？
->把需要生效的窗口序号对应调用 HCEnv_Load 接口,PID随便写,生成对应窗口序号的伪进程环境

->遵循一个序号一个窗口,多个线程可以操作同一个序号
----------------------------------------------------------------

【9】如何判断当前进程是否安装了插件或者对应绑定的窗口序号？
->可以调用HCInject_GetPreWinIndex
----------------------------------------------------------------

【10】如何实现重连窗口？
->可以调用HCInject_GetPrePid 拿到PID,有PID说明已经安装了插件
----------------------------------------------------------------

【11】识字返回-1120(ERROR_字库数据为空)？
->所找的字其中一个或者多个不在字库文件中,删掉不存在的即可正常
----------------------------------------------------------------

【12】为什么明明绑定了窗口,但是后台键鼠操作不了？
->一般出现这种情况是因为绑定的窗口句柄不对,我们最好绑定的是顶级窗口句柄

----------------------------------------------------------------

【13】开启后台截图后,为什么会显示标题栏(非客户区)？
->一般出现这种情况是因为绑定的窗口句柄不对,我们最好绑定的是子窗口句柄(客户区)

----------------------------------------------------------------

【14】为什么用调试版本识别速度很慢？
->换发布版本就正常了

----------------------------------------------------------------

【15】强烈建议
->不要在主线程中调用HD相关接口(窗口序号大于0的接口)

->登录最好在主线程中调用(能最大化的提高识别速度)

----------------------------------------------------------------

【16】测试工具开启截图后,查看的时候弹窗提示"创建D3D9设备失败"
->这种问题就是截图模式没有选择合适的,请根据自身游戏渲染库选择对应的模式和位数

----------------------------------------------------------------

【17】如何在绑定后台后关闭CPU帧优化?
->当帧数设置大于120 就自动关闭优化了(前提是绑定了dx.public.down.cpu 19属性)

----------------------------------------------------------------

【18】什么情况下的进程才能重连?
->调用接口HCInject_GetPrePid如果能获取到PID,则表示可以直接重连了,这个时候只需要调用HCEnv_Load或HCEnv_LoadEx

----------------------------------------------------------------

【19】什么情况下的进程不能重连?
->这里拿窗口序号1举例

->如果窗口1在正常第一次通讯后,序号1和进程PID(123) 关联了,我们卸载环境HCEnv_UnLoad ,这个时候还可以调用HCInject_GetPrePid获取PID(123)来实现重连

->接下来如果卸载环境后立马调用HCInject_Init初始化序号1并且第二个参数为真,那么表示当前序号1和之前第一次绑定的进程PID(123)彻底失去了关联(不能重连了)

->这个时候去调用HCInject_GetPrePid就不能获取之前绑定的PID(123)了

----------------------------------------------------------------

【20】为什么使用驱动接口或者绑定后台接口会返回-1193(初始化失败)?

->需要先登录HCHD_Login然后初始化HCEnv_Init,方可成功使用驱动接口

->如果是绑定后台返回-1193则是系统版本不兼容,请确认是否是win10或者win11,然后联系作者并提供TD远程进行兼容,全程不过几分钟就好

----------------------------------------------------------------

【20】雷电模拟器需要通讯那个进程和绑定那个窗口？

->通讯用dnplayer.exe就行

->后台绑定为模拟器的窗口就行

----------------------------------------------------------------

【21】为什么识字接口有的找不到？？

->不要怀疑算法！

->这个时候可能你正在识别数字和符号的字,并且是很小,这个时候需要微调

->请使用HCFS_SetCharSpaceHV HCFS_IsOne11 HCFS_GroundRate 这3个微调接口

->相关文档案例水平垂直间距解析和案例分析 周围占比解析和案例分析 one11解析和案例分析

----------------------------------------------------------------

【22】如何找雷电模拟器子窗口?

->C++代码:

 clock_t beginTime = clock();
HWND hwnd = NULL;
while
(1)
{
auto ret =
    HCWIN_EnumWindowByProcessId
 (pid, "LDPlayerMainFrame", "", 2 | 8 | 16,
0);//雷电模拟器
if (clock() - beginTime > 30 *
1000)
{
HCMT_MsgStepText (windowsIndex,
(char*)("超时获取窗口句柄失败:" + std::to_string(pid)).c_str());
HCMT_SetStop  (windowsIndex);
return 1;
}
if
(ret)
{
//获取返回值 0中控环境
hwnd =
(HWND)atoi(HCEnv_GetRetJson(0));
if
(hwnd) break;
}
}
HCMT_MsgStepText(windowsIndex, (char*)("获取窗口句柄:" +
std::to_string((__int64)hwnd)).c_str());
HCMT_Sleep(2000);
//等待子窗口
beginTime =
clock();
HWND childHwnd = NULL;
while(1)
{
childHwnd = (HWND)HCWIN_FindWindowEx
((_int64)hwnd, "RenderWindow", "TheRender",
FALSE);//找客户端区域内层子窗口
if (clock() - beginTime
> 30 * 1000)
{
HCMT_MsgStepText(windowsIndex,
(char*)("超时获取窗口句柄失败:" + std::to_string(pid)).c_str());
HCMT_SetStop(windowsIndex);
return 1;
}
if
(childHwnd) break;
}

----------------------------------------------------------------

【23】附加心跳的情况下,当窗口消失,调用多线重启接口,会多次触发心跳,导致多次重启,怎么解决?

->这个时候大概率是因为在调用HCMT_MsgReStart的时候,没有调用卸载环境HCEnv_UnLoad导致的

->C++代码

__int32 HMT::心跳回调(__int32 窗口索引,
__int32 type)
{
if (type ==
1)
{
//优化加一个接口
//指定一个窗口序号
获取当先窗口的操作状态
HCEnv_UnLoad(窗口索引);//卸载环境
不卸载还会检查当前序号的心跳
HCMT_MsgReStart(窗口索引);
}
return
1;
}

----------------------------------------------------------------

【24】为什么HD虚拟机DMA模块 关联虚拟机或者读写内存失败？

->管理员打开脚本和虚拟机试一试 或者 定制虚拟机的vmx文件里的 mainMem.useNameFile = "TRUE" 要改成true ,没有就加一行

->虚拟机内系统把自带杀毒 内核隔离 防火墙关掉 (尤其是纯净版原生系统)

----------------------------------------------------------------

【25】3种安装插件方式中,打开回调和检测回调什么情况下触发的？

1.没安装过插件的,都不算重连窗口,全部当新窗口处理,会触发打开回调.

2.安装过插件的,不管是卸载了环境,还是崩溃或重启中控,都算重连窗口,会先触发检查回调,告诉开发者,开发者就可以在检查回调里面自定义一些操作

----------------------------------------------------------------

【26】3种安装插件方式中,重连窗口会触发检查回调,那么检查回调的参数告诉了开发者那些信息？

->信息一:之前绑定的窗口是否存在
->-不存在PID:开发者可以直接返回0,告诉接口当做新窗口处理,这个时候会触发打开回调,开启新的进程
->-存在PID：开发如果需要重连到之前已经打开进程,这里就可以直接返回1,告诉接口我确认当做重连窗口处理
->-存在PID：开发如果不需要重连到之前已经打开进程,这个时候可以自助关闭进程,然后直接返回0,告诉接口虽然你内部检查是重连窗口,但是我不想重连,我只想每次安装一次打开一次个新进程

->信息二:安装过插件的进程相关检查值或安装过插件的进程的窗口序号(通过第二个参数)
->-第二个参数大于0: 安装过插件的进程的窗口序号(这个时候第一,二参数大多数是一样的值,同时第四个参数是RET_重连窗口 5),处于这种情况可以直接返回1
->--表达的含义:接口内部告诉开发者可以当前重连窗口,开发也同样确认了可以当做重连窗口

->-第二个参数小于等于0:错误值(比如:安装过插件的进程PID不存在,这个时候第四个参数是RET_重连窗口序号不一致 6),处于这种情况可以直接返回1
->--表达的含义:接口内部检查到指定的窗口序号虽然之前绑定过进程,但是发现绑定的进程异常(比如:进程不存在),就会把这个异常错误值通过第二个参数返回给开发者,
从而导致第一个参数和第二个参数不一致,这个时候开发者在检查回调里面就需要自己处理,比如直接返回0从而触发打开回调,去安装绑定一个新窗口

->信息三:返回给之前绑定过窗口的窗口PID(通过第三个参数)

->信息四:通过提示值,表示相关检查值或流程值(通过第四个参数)

----------------------------------------------------------------

【27】多线程模块中为什么在执行回调中调用了HCMT_MsgReStart(),并不会重启而是直接停止了？

1.firstCallBack: FUNTYPE 第一执行回调 注意:内部应该写成循环 并配合HCMT_Sleep()和HCMT_IsRunning() 不要主动返回执行回调(return 1;) 应该调用接口内部结束或者其他操作
2.secondCallBack: FUNTYPE 第二执行回调 注意:内部应该写成循环 并配合HCMT_Sleep()和HCMT_IsRunning() 不要主动返回执行回调(return 1;) 应该调用接口内部结束 或者其他操作

----------------------------------------------------------------


排序/方向类型

Help >
排序/方向类型

dirType :排序类型 / 方向类型 （默认0） 支持接口

0或者1------------------------从左到右 从上到下 OCR HCFS_Ocr HCFS_OcrByFile HCFS_OcrByMem HCFP_FindColor HCFP_FindColors

2 ------------------------从右到左 从上到下 单点找色 HCFP_FindColor HCFP_FindColors


HCHD_GetVersion

Help >
HCHD_GetVersion

函数简介 :

获取当前插件版本号

函数原型:

__int64 __stdcall HCHD_GetVersion();

参数定义:

无

返回值:

返回值即是版本号 长整数型(8字节)

备注:

无


HCEnv_GetRetJson

Help >
HCEnv_GetRetJson

函数简介:

获取最近一次调用接口返回的json字符串

函数原型 ：

char* __stdcall HCEnv_GetRetJson(__int32 窗口序号);

参数定义:

窗口序号:窗口序号 可以包含0 表示中控

返回值:

查看返回值表 HD返回值表

备注:

并不是所有接口都返回json字符串

有一些接口返回单一的值就没必要调用这个接口

一些接口需要拿到字符串信息返回,那么这些字符串会存在json字符串中,需要自己调用此接口获取


HCEnv_GetRetValue

Help >
HCEnv_GetRetValue

函数简介 :

获取最近一次调用接口返回的值(用于检测是否有错)

函数原型 ：

__int64 __stdcall HCEnv_GetRetValue(__int32 窗口序号);

参数定义:

窗口序号:窗口序号 可以包含0 表示中控

返回值:

查看返回值表 HD返回值表

备注:

无


HCEnv_GetErrorStr

Help >
HCEnv_GetErrorStr

函数简介 :

通过传递HD返回值获取字符串信息

函数原型:

char* __stdcall HCEnv_GetErrorStr (__int32 ret);

参数定义:

ret：HD返回值HD返回值表

返回值:

查看返回值表 HD返回值表

备注:


()通用模块

Help >
()通用模块

函数简介 :

获取最近一次调用 WIN32 API错误值

函数原型:

__int64 __stdcall HCEnv_GetLastError();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCEnv_GetMaxWindowNum

Help >
HCEnv_GetMaxWindowNum

函数简介 :

获取最大窗口数

函数原型 :

__int64 __stdcall HCEnv_GetMaxWindowNum();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

窗口序号不能大于等于这个返回值同时也不能小于0


HCInject_GetLastInfo

Help >
HCInject_GetLastInfo

函数简介 :

获取当前环境搭建流程中的操作信息

函数原型:

__int64 __stdcall HCInject_GetLastInfo(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

返回值:

查看返回值表 HD返回值表

备注:

这个CALL返回 HD状态信息 可以确定当前处于那个步骤

typedef enum HD状态信息
{
 HD状态信息_无 = 0,//0
HD状态信息_DLL环境_加载全局成功 = 1,//1
HD状态信息_DLL环境_加载全局失败 = 2,//2
HD状态信息_DLL环境_窗口序号不符合 = 3,//3
HD状态信息_DLL环境_进程不符合 = 4,//4
HD状态信息_DLL环境_打开句柄失败 = 5,//5
HD状态信息_DLL环境_获取内存失败 = 6,//6
HD状态信息_DLL环境_等待继续 = 20,//20需要调用HCInject_Continue()
HD状态信息_通讯环境_开始 = 21,//21
HD状态信息_通讯环境_成功 = 22,//22
HD状态信息_通讯环境_失败 = 23,//23
HD状态信息_通讯环境_打开句柄失败 = 24,//24
HD状态信息_通讯环境_获取内存失败 = 25,//25
HD状态信息_接口映射_成功 = 40,//40自制通讯协议创建
HD状态信息_接口映射_失败 = 41,//41
HD状态信息_LUA_成功 = 60,//60可以执行LUA
HD状态信息_LUA_失败 = 61,//61不可以执行LUA
HD状态信息_数据库_开启 = 80,//80需要调用HHIT2_Load()的时候参数bOpenData设置为1
HD状态信息_数据库_未开启 = 81,//81
HD状态信息_数据库_开启失败 = 82,//82内置特征码有误 联系管理员
HD状态信息_验证_有误 = 100,//100联系管理员
HD状态信息_监听_成功 = 120,//120 【【【【大于等于120说明可以调用接口了】】】】
HD状态信息_监听_失败 = 121,//121 基本是不会出现这个错误
HD状态信息_挂接主线_开启 = 140,//140 调用
HD状态信息_挂接主线_进入 = 141,//141 准备挂接
HD状态信息_挂接主线_尝试中 = 142,//142处于这个阶段 需要用SetHwnd() 暂时没用
HD状态信息_挂接主线_成功 = 143,//143 成功挂接 所有关于可以主线程调用的接口的参数"是否主线程调用"生效
HD状态信息_挂接主线_失败 = 144,//144
HD状态信息_挂接主线_已经开启 = 145,//145 已经开启了
HD状态信息_加载_延迟 = 146,//2秒延迟
HD状态信息_通讯加载失败 = 147//2秒延迟
}HD状态信息;


HCInject_SetPlugin

Help >
HCInject_SetPlugin

函数简介 :

设置插件信息

函数原型:

__int64 __stdcall HCInject_SetPlugin(char*发布版本DLL名 = NULL, char* 调试版本DLL名 = NULL);

参数定义 :

发布版本DLL名:为空 则根据不同版本内置了DLL名字

调试版本DLL名:为空 则根据不同版本内置了DLL名字

返回值:

查看返回值表 HD返回值表

备注:

易语言/火山/Python/炫语言/C#等语言:还需要拿到模块源码更改导入DLL名字 需要与自定义DLL同名

内置版本名规则:

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
//===========================64位
#ifdef
_WIN64
#ifdef _UNICODE
//64位W版本
std::string HCInject::g_发布版本DLL名字 =
"hd64.dll";
std::string HCInject::g_调试版本DLL名字 =
"hddebug64.dll";
#else
//64位A版本
std::string HCInject::g_发布版本DLL名字 =
"hd64a.dll";
std::string HCInject::g_调试版本DLL名字 =
"hddebug64a.dll";
#endif
//===========================32位
#else
#ifdef
_UNICODE
//32位W版本
std::string HCInject::g_发布版本DLL名字 =
"hd.dll";
std::string HCInject::g_调试版本DLL名字 =
"hddebug.dll";
#else
//32位A版本
std::string HCInject::g_发布版本DLL名字 =
"hda.dll";
std::string HCInject::g_调试版本DLL名字 =
"hddebuga.dll";
#endif
#endif
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》


C/C++案例

Help >
C/C++案例

群里下载！！

实例代码和教程

882724064


1.如何调用库

Help > C/C++案例 >
1.如何调用库

1.x32 debug版本 unicode字符集 为例(注意插件版本)

uafxcwd.lib;Libcmtd.lib;HDDebug.lib

uafxcwd.lib;Libcmtd.lib;

J:\vs2017 workSpace\HD RGB引擎完整版\HDValue

J:\vs2017 workSpace\HD RGB引擎完整版\include

J:\vs2017 workSpace\HD RGB引擎完整版\plugin

2.release版本 unicode字符集

uafxcw.lib;Libcmt.lib;hd.lib

uafxcw.lib;Libcmt.lib;

J:\vs2017 workSpace\HD RGB引擎完整版\HDValue

J:\vs2017 workSpace\HD RGB引擎完整版\include

J:\vs2017 workSpace\HD RGB引擎完整版\plugin


2.测试示例版本说明

Help > C/C++案例 >
2.测试示例版本说明

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
1.群里下载SDK完整版SDK仅包含(unicode)x86版本的调试/发布库-共2个版本

2.本测试项目中附带的SDK完整版plugin目录包含unicode项目的X86X64(调试/发布库)版本-共4个版本
-test01中控测试项目仅做了(unicode)X86X64项目环境搭建,(ascii)X86X64项目同理
-MyHd自定义插件测试项目仅做了x64发布版本的环境搭建,其他版本同理

3.需要额外使用(ascii)X86X64版本的库请在群里下载也放在plugin中,并在项目中引入对应的lib文件即可
-右键项目-属性-链接器-输入

4.需要更新64位库请在群文件下载后放置plugin目录中替换掉对应的版本文件

5.需要更新完整版SDK版本,请在群里下载最新版本,并全部替换覆盖即可

6.调试版本才可以调试,发布版本不能调试,检查到可能导致锁死账号,请注意！！！

特别注意:
1.如果使用VS调试版本,请把对应版本的DLL放置项目的版本文件中
2.更新版本也是如此
3.为了保障和exe同目录,因为vs调试目录不是引入库设置的目录,而是exe生成的目录下,不放进去找不到

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
目录结构:
-com 自定义插件库(全系版本)
-controler 多任务控制器头文件--废弃
-HDValue HD值类型源文件
-HYoloTest HDYolo测试文件
-include HD插件头文件
-plugin HD库文件(完整版SDK仅存在x86版本,如果需要其他版本请看上面几点)
-state HD状态机头文件--废弃
-test HD测试程序
-hdfiner.exe 后台截图查看器,用于测试截图是否开启成功
-HDTool.exe HD综合后台测试工具,需要正式账号
-Update.exe HD更新器
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》


炫语言案例

Help >
炫语言案例

//【此版本是炫语言开发环境所需要的HD插件相关库】
//【包含x86x64版本-unicode】
//官网:www.hdgdk.com
//官网群:882724064
//通过网盘分享的文件：HD插件自动化库
//链接: https://pan.baidu.com/s/1YXp1u03b-8E4psnddhxJmQ
提取码: f25d
//解压放根目录下即可
//目录结构:
//-HD自动化
//--HD插件
//----extern(HD类型头文件文件夹)
//----include(HD头文件文件夹)
//----lib(HD库文件夹)-需要链接下载
//----plugin(HD扩展插件库文件夹)-需要链接下载
//----xinclude(HD炫语言库文件夹)
//----module_heart_extern.h(HD类型模块)
//----module_heart_hd.h(HD插件模块)
//----module_heart_plugin.h(HD扩展插件模块)


1.库下载及版本更新

Help > 炫语言案例 >
1.库下载及版本更新

炫彩IDE下载:

https://xc.xcgui.com/

加入HD插件模块:

3.由于模块仅包含头文件,dll,lib各个版本库文件需要在下方下载链接下载或者进群882724064下载

链接: https://pan.baidu.com/s/1YXp1u03b-8E4psnddhxJmQ 提取码: f25d

文件放置同目录下

4.更新库同理替换覆盖对应的文件即可

//目录结构:
//-HD自动化
//--HD插件
//----extern(HD类型头文件文件夹)
//----include(HD头文件文件夹)
//----lib(HD库文件夹)-需要链接下载
//----plugin(HD扩展插件库文件夹)-需要链接下载
//----xinclude(HD炫语言库文件夹)
//----module_heart_extern.h(HD类型模块)
//----module_heart_hd.h(HD插件模块)
//----module_heart_plugin.h(HD扩展插件模块)


Python案例

Help >
Python案例

群里下载！！

实例代码和教程

882724064


1.如何调用库

Help > Python案例 >
1.如何调用库
#引入HD插件
import ctypes
import os
import time
import hdtype
import json
import subprocess
from itertools import takewhile
bDebug = True
account = b"heart"
password = b"111"
appName64 = b"Game.exe"
resPath = b"C:\\"

# 加载DLL
# 不需要pip install
print("当前目录:%s"%os.getcwd())
#hd = ctypes.windll.LoadLibrary(os.getcwd() + "\HD_SDK_Debug\HDDebug.dll")
#调试版本
hd = ctypes.CDLL(os.getcwd() + "\HD_SDK_Debug\HDDebug.dll")
#发布版本
hdr = ctypes.CDLL(os.getcwd() + "\HD_SDK_Debug\hd.dll")


2.如何登录

Help > Python案例 >
2.如何登录
# 1.登录
def HCHD_Login(e):
    ret = hd.HCHD_Login(account, password,
                  ctypes.c_char_p(b""), ctypes.c_char_p(b""),
                  ctypes.c_char_p(False), ctypes.c_char_p(False))
    print("Login:%d" % ( ret ) )


3.如何通讯

Help > Python案例 >
3.如何通讯
# 2.初始化中控
def init(e):
    ret = hd.HCEnv_Debug(bDebug)
    print("HCEnv_Debug:%d" % (ret))
    # HCEnv_Init自动初始化中控环境 可以用0序号来获取中控环境信息
    ret = hd.HCEnv_Init()
    print("HCEnv_Init:%d" % (ret))
    # 32/64
    ret = hd.HCEnv_SetProcessType(64)
    print("HCEnv_SetProcessType:%d" % (ret))
    # 资源路径 用于识图识字
    ret = hd.HCRES_SetResPathA(ctypes.c_char_p(resPath))
    print("HCRES_SetResPathA:%d" % (ret))

def HCRES_SetResPathA(resPath):
    ret = hd.HCRES_SetResPathA(ctypes.c_char_p(resPath))
    print("HCRES_SetResPathA:%d" % (ret))

def HCEnv_SetProcessType(type):
    ret = hd.HCEnv_SetProcessType(ctypes.c_int32(type))
    print("HCEnv_SetProcessType:%d" % (ret))

def HCEnv_Debug(bDebug):
    ret = hd.HCEnv_Debug(ctypes.c_bool(bDebug))
    print("HCEnv_Debug:%d" % (ret))

def HCEnv_Init(timeout):
    ret = hd.HCEnv_Init(ctypes.c_int32(timeout))
    print("HCEnv_Init:%d" % (ret))

# 3.设置目标
def setTarget(type):
    ret = hd.HCEnv_SetProcessType(type)
    print("SetTarget:%d" % (ret))

# 4.加载驱动
def loadHDDriver():
    ret = hd.HCHD_LoadDrv()
    print("HCHD_LoadDrv:%d" % (ret))
    ret = hd.HCHD_InstallPlugX64(appName64, 1, 0)
    print("HCHD_InstallPlugX64:%d" % (ret))

def HCHD_LoadDrv():
    ret = hd.HCHD_LoadDrv()
    print("HCHD_LoadDrv:%d" % (ret))

def HCHD_InstallPlugX64(appname, injectType, memType):
    ret = hd.HCHD_InstallPlugX64(ctypes.c_char_p(appname),
                                 ctypes.c_int32(injectType),
                                 ctypes.c_int32(memType),
                                 )
    print("HCHD_InstallPlugX64:%d" % (ret))

# 5.通讯初始化
def HCInject_Init(index):
    # 窗口序号 0-30 一共31个序号
    # 0 1 2 3 4...递增
    # 0是中控
    # 1开始自己管理目标进程序号
    ret = hd.HCInject_Init(ctypes.c_int32(index), ctypes.c_bool(True))
    print("HCInject_Init:%d" % (ret))

# 6.循环获取PID :通过自己的方式打开游戏或者自动打开
def GetPidWhile(index):
    pid = hd.HCInject_GetPid(index)
    while pid <= 0:
        pid = hd.HCInject_GetPid(index)
        print("HCInject_GetPid:%d" % (pid))
        time.sleep(1)
    return pid

# 7.加载环境
def HCEnv_LoadEx(index,pid):
    ret = hd.HCEnv_LoadEx(index, pid, 0, ctypes.c_bool(False))
    print("HCEnv_LoadEx:%d" % (ret))

# 8.继续 中控加载环境成功后,告诉插件,中控已经加载环境了,如果不调用继续,那么插件就会卡着不会继续执行
def HCInject_Continue(index):
    ret = hd.HCInject_Continue(index)
    print("HCInject_Continue:%d" % (ret))

# 9.测试通讯是否成功
def HCEnv_TestCALL_RetArray(index):
    ret = hd.HCEnv_TestCALL_RetArray(ctypes.c_int32(index),
                                     ctypes.c_int64(0), ctypes.c_int64(0),
                                     ctypes.c_int64(0), ctypes.c_int64(0),
                                     ctypes.c_int64(0), ctypes.c_int64(0),
                                     ctypes.c_bool(False))
    # 拿到char*字符串
    hd.HCEnv_GetRetJson.restype = ctypes.c_char_p
    retJson = hd.HCEnv_GetRetJson(ctypes.c_int32(index))
    print(retJson)
    # char*字符串转换为python字符串 中文 gbk 反之就用utf-8
    retJson3 = str(retJson, 'gbk') #中文 gbk
    print(retJson3)
    print("HCEnv_TestCALL_RetArray:%d retJson:%s" % (ret, retJson3))


4.如何传递回调函数

Help > Python案例 >
4.如何传递回调函数
#两种写法
heartFunType_stdcall = ctypes.WINFUNCTYPE(ctypes.c_int, ctypes.c_int, ctypes.c_int)#定义一个__stdcall的回调函数
#typedef __int32(*HeartFunType)(__int32 窗口索引, __int32 type);
@heartFunType_stdcall
def heartCallBack(index, type):
    print("窗口序号:%d 类型:%d" % (index, type))
    # 这个回调函数里面 不要执行耗时的操作
    # 最好开一个线程去操作耗时的代码
    # 这个里面可以改变某一些变量标志 来实现重启！
    return 1
heartFun = heartFunType_stdcall(heartCallBack) #全局

# python 设置回调！！！！
# 1.函数调用约定 __stdcall(WINFUNCTYPE)  CFUNCTYPE
# 2.变量的生命周期 heartFun = heartFunType(heartCallBack) 这个变量要全局 或者 生命周期和CDLL里面一样长
# 附加心跳
# int64  __stdcall  HCEnv_AttachHeart(__int32 type,
#  __int32 funCallbackAddr, __int32 timeOut = 10000);
def HCEnv_AttachHeart(type, timeOut):
    # typedef __int32(*HeartFunType)(__int32 窗口索引, __int32 type);
    ret = hd.HCEnv_AttachHeart(ctypes.c_int32(type),
                               heartFun,
                               ctypes.c_int32(timeOut)
                            )
    print("HCEnv_AttachHeart:%d" % (ret))


5.如何传递变量地址

Help > Python案例 >
5.如何传递变量地址
# 封装
# 驱动返回值 大于等于0 成功 小于0 错误信息
# 驱动申请内存
# int64 __stdcall  HCHD_MemoryAllocate(__int32 pid,
# __int64 memorySize, __int32 memoryProtect, BOOL bHighAddress, __int64 pOutBuffer);
def HCHD_MemoryAllocate(pid, memorySize, memoryProtect, bHighAddress, pOutBuffer):
    v2 = ctypes.cast(pOutBuffer, ctypes.c_void_p)# (void*)(0x123456)
    v3 = int(v2.value)# (int)((void*)(0x123456))
    hd.HCHD_MemoryAllocate.restype = ctypes.c_int64
    ret = hd.HCHD_MemoryAllocate(ctypes.c_int32(pid),
                                 ctypes.c_int64(memorySize),
                                 ctypes.c_int32(memoryProtect),
                                 ctypes.c_bool(bHighAddress),
                                 ctypes.c_int64(v3)
                                 )
    print("HCHD_MemoryAllocate:%d" % (ret))

# 驱动读写
# int64 __stdcall  HCHD_RW(__int32 pid,
# __int64 targetAddress,
# __int64 bufferAddress, __int32 bufferOfBytes,
# __int32 rwType);读写类型[0=读内存;1=写内存;2=强写内存]
def HCHD_RW(pid, targetAddress, bufferAddress , bufferOfBytes, rwType):
    v2 = ctypes.cast(bufferAddress, ctypes.c_void_p)# (void*)(0x123456)
    v3 = int(v2.value)# (int)((void*)(0x123456))
    hd.HCHD_RW.restype = ctypes.c_int64
    ret = hd.HCHD_RW(ctypes.c_int32(pid),
                     ctypes.c_int64(targetAddress),
                     ctypes.c_int64(v3),
                     ctypes.c_int32(bufferOfBytes),
                     ctypes.c_int32(rwType)
                     )
    print("HCHD_RW:%d" % (ret))

# 调用传递参数
def drvMemAllo(self):
    value = ctypes.c_int64(0)
    hdpy.HCHD_MemoryAllocate(14072, 8, 0x40, False, ctypes.byref(value))
    print(value.value)
    self.addressEdit.setText(str(value.value))

def writeMem(self):
     addr = int(self.addressEdit.text())
     writeValue = ctypes.c_int64(123)
     hdpy.HCHD_RW(14072, addr, ctypes.byref(writeValue), 8, 1)

def readMem(self):
     addr = int(self.addressEdit.text())
     readValue = ctypes.c_int64(0)
     hdpy.HCHD_RW(14072, addr, ctypes.byref(readValue), 8, 0)
     print(readValue.value)


火山案例

Help >
火山案例

群里下载！！

实例代码和教程

882724064


易语言案例

Help >
易语言案例

群里下载！！

实例代码和教程

882724064


1.如何调用库

Help > 易语言案例 >
1.如何调用库


2.如何登录

Help > 易语言案例 >
2.如何登录

.版本 2

.程序集 窗口程序集_启动窗口

.子程序 _按钮1_被单击

.如果 (HD_登录初始化 (“22”, “222”, “”, “”, , )) ' 调用我们的HD插件 一定要初始化登录 后续的一些接口才能使用
标签1.标题 ＝ “登录成功”
.否则
标签1.标题 ＝ “登录失败”


3.如何通讯

Help > 易语言案例 >
3.如何通讯


IP模块[IP]

Help >
IP模块[IP]

软件找HD作者拿(魔改版)


HCIP_YMSetRootPath

Help > IP模块[IP] >
HCIP_YMSetRootPath

函数简介 :

设置有米软件路径(EXE路径)

函数原型:

__int64 __stdcall HCIP_YMSetRootPath(char * path);

参数定义:

path:路径

返回值:

查看返回值表 HD返回值表

备注:

软件找HD作者拿(魔改版)


HCIP_YMAddIP

Help > IP模块[IP] >
HCIP_YMAddIP

函数简介 :

添加IP

函数原型 :

__int64 __stdcall HCIP_YMAddIP(char *ip, int port, char *account, char *password, int type, int kfp = 1, char* proName = NULL);

参数定义:

ip:IP 如:127.0.0.1

port:端口

account:账号

password:密码

type:1 socket 2 ss

kfp:是否可分配(一般就为空默认1就行)

proName:进程名(一般就为空默认NULL就行)

返回值:

查看返回值表 HD返回值表

备注:

软件找HD作者拿(魔改版)


HCIP_YMAddProcess

Help > IP模块[IP] >
HCIP_YMAddProcess

函数简介 :

添加代理的进程名

函数原型 :

__int64 __stdcall HCIP_YMAddProcess(char *proName);

参数定义:

proName:进程名 如:Game.exe

返回值:

查看返回值表 HD返回值表

备注:

软件找HD作者拿(魔改版)


HCIP_YMOpen

Help > IP模块[IP] >
HCIP_YMOpen

函数简介 :

打开有米软件

函数原型 :

__int64 __stdcall HCIP_YMOpen(int type);

参数定义:

type:0国内IP 1国外IP

返回值:

查看返回值表 HD返回值表

备注:

软件找HD作者拿(魔改版)

流程:

1.先设置路径

2.添加代理进程和IP

3.打开有米


HCIP_YMIsOpen

Help > IP模块[IP] >
HCIP_YMIsOpen

函数简介 :

有米软件是否已经打开

函数原型 :

__int64 __stdcall HCIP_YMIsOpen(int type);

参数定义:

type:0国内IP 1国外IP

返回值:

查看返回值表 HD返回值表

备注:

软件找HD作者拿(魔改版)

流程:

1.先设置路径

2.添加代理进程和IP

3.打开有米


HCIP_YMClose

Help > IP模块[IP] >
HCIP_YMClose

函数简介 :

关闭有米软件

函数原型 :

__int64 __stdcall HCIP_YMClose(int type);

参数定义:

type:0国内IP 1国外IP

返回值:

查看返回值表 HD返回值表

备注:

软件找HD作者拿(魔改版)

流程:

1.先设置路径

2.添加代理进程和IP

3.打开有米


登录验证(Login)

Help >
登录验证(Login)

如果要使用HD引擎

请先登录！！！


HCHD_Login

Help > 登录验证(Login) >
HCHD_Login

函数简介 :

HD登录验证接口（强烈建议主线程中调用）

函数原型:

__int64 __stdcall HCHD_Login(char* account, char*password, char*appName, char*appLparam, BOOL bAutoUpdate = FALSE, BOOL bShowMsgBox = FALSE);

参数定义:

account：账号

password：密码

appName：中控进程名字(指定了方便自动更新)

appLparam：打开中控的启动参数(指定了方便自动更新)

bAutoUpdate ：是否自动更新

bShowMsgBox ：如果需要更新是否弹出消息框提醒

返回值:

查看返回值表 HD返回值表

大于0表示版本号:当前服务器的版本号 不是当前插件的版本号

备注:

1.验证接口,所有接口需要通过验证才能调用

2.如果自己写中控可以不用打开自动更新


HCHD_GetLastLoginFYI

Help > 登录验证(Login) >
HCHD_GetLastLoginFYI

函数简介 :

最近登录时候的点数

函数原型:

__int64 __stdcall HCHD_GetLastLoginFYI ();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCHD_GetExpiredTimeStamp

Help > 登录验证(Login) >
HCHD_GetExpiredTimeStamp

函数简介 :

获取最近登录时间戳

函数原型:

__int64 __stdcall HCHD_GetExpiredTimeStamp();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCHD_GetFYI

Help > 登录验证(Login) >
HCHD_GetFYI

函数简介 :

获取点数

函数原型:

__int64 __stdcall HCHD_GetFYI();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCHD_GetOpenMaxNum

Help > 登录验证(Login) >
HCHD_GetOpenMaxNum

函数简介 :

获取最大多少开

函数原型:

__int64 __stdcall HCHD_GetOpenMaxNum();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


安装插件扩展模块[ex]

Help >
安装插件扩展模块[ex]

主要针对二次封装

简化流程


HDEX_InstallPlugin1

Help > 安装插件扩展模块[ex] >
HDEX_InstallPlugin1

函数简介 :

第一种通讯安装插件方式(安装插件再打开进程) 如果使用HD多线程模块 强烈建议在登录回调中使用

函数原型:

__int64 __stdcall HDEX_InstallPlugin1(__int32 winIndex, char*app, int appType, int injectType, int memType, int gameType, BOOL bAccept, __int64 openFun, __int64 checkFun = NULL, int timeOut = 30000);

参数定义:

winIndex:窗口序号

app:进程名

appType:进程类型 32/64

injectType:注入类型 0 1 2

memeType :内存模式 0 1 2

gameType:游戏类型 一般为0就行

bAccept:是否开启接受线程

openFun:打开回调 回调类型:typedef __int64(__stdcall*INSTALLPLUGINTYPE)(int windowsIndex);

checkFun:检查回调 回调类型:typedef __int64(__stdcall*CHECKINSTALLPLUGINTYPE)(int windowsIndex, int preWindowsIndex, int prePid, int error);

timeOut:超时时间

返回值:

查看返回值表 HD返回值表

备注:

可以参考表 安装插件接口类型表

回调解析:

打开回调openFun:可以参考表安装插件接口类型表

typedef __int64(__stdcall*INSTALLPLUGINTYPE)(int windowsIndex);

参数:
windowsIndex:当前指定序号

说明:
1.对于第一种方式打开回调不能为NULL,内部先安装插件再触发回调打开进程(在打开回调中可以手动或者自动打开进程 1.如果是手动直接返回1就行或错误值表示中断操作 2.如果是自动返回对应的PID或错误值表示中断操作)
2.其他二种方式打开回调可以为NULL,表示进程已经打开了,不需要在回调中打开,此时使用指定的PID或者窗口句柄来安装插件,具体是PID还是句柄请查看 安装插件接口类型表
3.返回值根据当前的安装插件方式不同有不同的含义:（具体请看安装插件接口类型表和覆盖策略）

3.1方式二 是通过PID安装插件 那么返回值应该为打开进程的PID,并把传递的PID参数给覆盖了(请看PID覆盖策略 ),可以返回小于等于0的错误值或者不存在的PID,从而中断安装插件退出,不做相应的安装插件流程(初始化序号-获取PID-加载环境-等待20-继续-等待120),并把打开回调返回值当作安装插件返回值返回。

3.1.1 PID覆盖策略

//1.如果指定的参数PID有效大于0并存在 同时打开回调返回的PID有效大于0并存在 就用打开回调返回的PID覆盖指定参数的PID
//2.如果指定的参数PID有效大于0并存在 同时打开回调返回的PID无效小于等于0不存在 就用指定参数的PID
//3.如果指定的参数PID无效小于等于0不存在 同时打开回调返回的PID无效小于等于0不存在 就直接返回错误
//4.如果指定的参数PID无效小于等于0不存在 同时打开回调返回的PID有效大于0并存在 就用打开回调返回的PID覆盖指定参数的PID

3.2方式三 是通过窗口句柄安装插件 那么返回值应该为打开进程的句柄,并把传递的句柄参数给覆盖了(请看窗口句柄覆盖策略 ) ,可以返回小于等于0的错误值或者窗口句柄无效,从而中断安装插件退出,不做相应的安装插件流程(初始化序号-获取PID-加载环境-等待20-继续-等待120),并把打开回调返回值当作安装插件返回值返回。

3.2.1 窗口句柄覆盖策略

//1.如果指定参数的窗口句柄有效 同时打开回调返回的的句柄有效 就用打开回调返回的句柄覆盖指定参数的句柄
//2.如果指定参数的窗口句柄有效 同时打开回调返回的的句柄无效 就用指定参数的句柄
//3.如果指定参数的窗口句柄无效 同时打开回调返回的的句柄无效 就直接返回错误
//4.如果指定参数的窗口句柄无效 同时打开回调返回的的句柄有效 就用打开回调返回的句柄覆盖指定参数的句柄

检查回调 checkFun:

typedef __int64(__stdcall*CHECKINSTALLPLUGINTYPE)(int windowsIndex, int preWindowsIndex, int prePid, int error);

参数:
windowsIndex:当前指定序号
preWindowsIndex:之前绑定的序号或者错误值(小于0) --来源HCInject_GetPreWinIndex返回
prePid:之前绑定的序号对应的PID--来源HCInject_GetPid返回
error:提示值

error==RET_重连窗口(5)----->返回值含义:(1重连直接进行加载环境 0新窗口)

error==RET_重连窗口序号不一致(6)----->返回值含义:(1重连并使用之前绑定的序号进行加载环境 0新窗口(需要用户在回调中把之前PID给关闭))

其他情况可以返回小于0的自定义值:表示直接中断安装插件流程,并返回对应的值(这个值只要小于0即可,可以作为自定义值)

说明:

1.如果指定的检查回调为NULL,当内部检查到是重连窗口的时候

2.如果发现序号不一致就会直接返回(ERROR_当前进程插件序号不一致 -1216)

3.如果序号一致就直接加载环境并实现重连

几个核心的点 归纳总结出来 其实就能规避掉很多坑了 比如
1.没安装过插件的 都不算重连窗口 全部当新窗口处理 会触发打开回调
2.安装过插件的 不管是卸载了环境 还是崩溃或重启中控 都算重连窗口 不会触发打开回调 会触发检查回调


HDEX_InstallPlugin2

Help > 安装插件扩展模块[ex] >
HDEX_InstallPlugin2

函数简介 :

第二种通讯安装插件方式(打开进程然后安装插件) , 通过pid 如果使用HD多线程模块 强烈建议在登录回调中使用

函数原型:

__int64 __stdcall HDEX_InstallPlugin2(__int32 winIndex, int funType, int pid, int appType, int gameType, BOOL bAccept, __int64 openFun = NULL, __int64 checkFun = NULL, int timeOut = 30000);

参数定义:

winIndex:窗口序号

funType:内部安装插件接口类型 查看安装插件接口类型表 支持2 4 6

pid:指定PID 可以为0,但是必须指定打开回调,打开回调返回PID

appType:进程类型 32/64

gameType:游戏类型 一般为0就行

bAccept:是否开启接受线程

openFun:打开回调 回调类型:typedef __int64(__stdcall*INSTALLPLUGINTYPE)(int windowsIndex);

checkFun:检查回调 回调类型:typedef __int64(__stdcall*CHECKINSTALLPLUGINTYPE)(int windowsIndex, int preWindowsIndex, int prePid, int error);

timeOut:超时时间

返回值:

查看返回值表 HD返回值表

备注:

可以参考表 安装插件接口类型表

回调解析:

打开回调openFun

typedef __int64(__stdcall*INSTALLPLUGINTYPE)(int windowsIndex);

参数:
windowsIndex:当前指定序号

说明:
1.对于第一种方式打开回调不能为NULL,内部先安装插件再触发回调打开进程(在打开回调中可以手动或者自动打开进程 1.如果是手动直接返回1就行或错误值表示中断操作 2.如果是自动返回对应的PID或错误值表示中断操作)
2.其他二种方式打开回调可以为NULL,表示进程已经打开了,不需要在回调中打开,此时使用指定的PID或者窗口句柄来安装插件,具体是PID还是句柄请查看 安装插件接口类型表
3.返回值根据当前的安装插件方式不同有不同的含义:（具体请看安装插件接口类型表和覆盖策略）

3.1方式二 是通过PID安装插件 那么返回值应该为打开进程的PID,并把传递的PID参数给覆盖了(请看PID覆盖策略 ),可以返回小于等于0的错误值或者不存在的PID,从而中断安装插件退出,不做相应的安装插件流程(初始化序号-获取PID-加载环境-等待20-继续-等待120),并把打开回调返回值当作安装插件返回值返回。

3.1.1 PID覆盖策略

//1.如果指定的参数PID有效大于0并存在 同时打开回调返回的PID有效大于0并存在 就用打开回调返回的PID覆盖指定参数的PID
//2.如果指定的参数PID有效大于0并存在 同时打开回调返回的PID无效小于等于0不存在 就用指定参数的PID
//3.如果指定的参数PID无效小于等于0不存在 同时打开回调返回的PID无效小于等于0不存在 就直接返回错误
//4.如果指定的参数PID无效小于等于0不存在 同时打开回调返回的PID有效大于0并存在 就用打开回调返回的PID覆盖指定参数的PID

3.2方式三 是通过窗口句柄安装插件 那么返回值应该为打开进程的句柄,并把传递的句柄参数给覆盖了(请看窗口句柄覆盖策略 ),可以返回小于等于0的错误值或者窗口句柄无效,从而中断安装插件退出,不做相应的安装插件流程(初始化序号-获取PID-加载环境-等待20-继续-等待120),并把打开回调返回值当作安装插件返回值返回。

3.2.1 窗口句柄覆盖策略

//1.如果指定参数的窗口句柄有效 同时打开回调返回的的句柄有效 就用打开回调返回的句柄覆盖指定参数的句柄
//2.如果指定参数的窗口句柄有效 同时打开回调返回的的句柄无效 就用指定参数的句柄
//3.如果指定参数的窗口句柄无效 同时打开回调返回的的句柄无效 就直接返回错误
//4.如果指定参数的窗口句柄无效 同时打开回调返回的的句柄有效 就用打开回调返回的句柄覆盖指定参数的句柄

检查回调 checkFun:

typedef __int64(__stdcall*CHECKINSTALLPLUGINTYPE)(int windowsIndex, int preWindowsIndex, int prePid, int error);

参数:
windowsIndex:当前指定序号
preWindowsIndex:之前绑定的序号或者错误值(小于0) --来源HCInject_GetPreWinIndex返回
prePid:之前绑定的序号对应的PID--来源HCInject_GetPid返回
error:提示值

error==RET_重连窗口(5)----->返回值含义:(1重连直接进行加载环境 0新窗口)

error==RET_重连窗口序号不一致(6)----->返回值含义:(1重连并使用之前绑定的序号进行加载环境 0新窗口(需要用户在回调中把之前PID给关闭))

说明:

1.如果指定的检查回调为NULL,当内部检查到是重连窗口的时候

2.如果发现序号不一致就会直接返回(ERROR_当前进程插件序号不一致 -1216)

3.如果序号一致就直接加载环境并实现重连

几个核心的点 归纳总结出来 其实就能规避掉很多坑了 比如
1.没安装过插件的 都不算重连窗口 全部当新窗口处理 会触发打开回调
2.安装过插件的 不管是卸载了环境 还是崩溃了中控 都算重连窗口 不会触发打开回调


HDEX_InstallPlugin3

Help > 安装插件扩展模块[ex] >
HDEX_InstallPlugin3

函数简介 :

第三种通讯安装插件方式(打开进程然后安装插件) , 通过窗口句柄 如果使用HD多线程模块 强烈建议在登录回调中使用

函数原型 :

__int64 __stdcall HDEX_InstallPlugin3(__int32 winIndex, int funType,__int64 hwnd, int appType, int gameType, BOOL bAccept, __int64 openFun = NULL, __int64 checkFun = NULL, int timeOut = 30000);

参数定义:

winIndex:窗口序号

funType:内部安装插件接口类型 查看安装插件接口类型表 支持3 5 7

hwnd:指定窗口句柄 可以为0,但是必须指定打开回调,打开回调返回窗口句柄

appType:进程类型 32/64

gameType:游戏类型 一般为0就行

bAccept:是否开启接受线程

openFun:打开回调 回调类型:typedef __int64(__stdcall*INSTALLPLUGINTYPE)(int windowsIndex);

checkFun:检查回调 回调类型:typedef __int64(__stdcall*CHECKINSTALLPLUGINTYPE)(int windowsIndex, int preWindowsIndex, int prePid, int error);

timeOut:超时时间

返回值:

查看返回值表 HD返回值表

备注:

可以参考表 安装插件接口类型表

回调解析:

打开回调openFun:可以参考表安装插件接口类型表

typedef __int64(__stdcall*INSTALLPLUGINTYPE)(int windowsIndex);

参数:
windowsIndex:当前指定序号

说明:
1.对于第一种方式打开回调不能为NULL,内部先安装插件再触发回调打开进程(在打开回调中可以手动或者自动打开进程 1.如果是手动直接返回1就行或错误值表示中断操作 2.如果是自动返回对应的PID或错误值表示中断操作)
2.其他二种方式打开回调可以为NULL,表示进程已经打开了,不需要在回调中打开,此时使用指定的PID或者窗口句柄来安装插件,具体是PID还是句柄请查看安装插件接口类型表
3.返回值根据当前的安装插件方式不同有不同的含义:（具体请看安装插件接口类型表和覆盖策略）

3.1 方式二 是通过PID安装插件 那么返回值应该为打开进程的PID,并把传递的PID参数给覆盖了(请看PID覆盖策略 ),可以返回小于等于0的错误值或者不存在的PID,从而中断安装插件退出,不做相应的安装插件流程(初始化序号-获取PID-加载环境-等待20-继续-等待120),并把打开回调返回值当作安装插件返回值返回。

3.1.1 PID覆盖策略

//1.如果指定的参数PID有效大于0并存在 同时打开回调返回的PID有效大于0并存在 就用打开回调返回的PID覆盖指定参数的PID
//2.如果指定的参数PID有效大于0并存在 同时打开回调返回的PID无效小于等于0不存在 就用指定参数的PID
//3.如果指定的参数PID无效小于等于0不存在 同时打开回调返回的PID无效小于等于0不存在 就直接返回错误
//4.如果指定的参数PID无效小于等于0不存在 同时打开回调返回的PID有效大于0并存在 就用打开回调返回的PID覆盖指定参数的PID

3.2 方式三 是通过窗口句柄安装插件 那么返回值应该为打开进程的句柄,并把传递的句柄参数给覆盖了(请看窗口句柄覆盖策略 ),可以返回小于等于0的错误值或者窗口句柄无效,从而中断安装插件退出,不做相应的安装插件流程(初始化序号-获取PID-加载环境-等待20-继续-等待120),并把打开回调返回值当作安装插件返回值返回。

3.2.1 窗口句柄覆盖策略

//1.如果指定参数的窗口句柄有效 同时打开回调返回的的句柄有效
就用打开回调返回的句柄覆盖指定参数的句柄
//2.如果指定参数的窗口句柄有效 同时打开回调返回的的句柄无效 就用指定参数的句柄
//3.如果指定参数的窗口句柄无效 同时打开回调返回的的句柄无效 就直接返回错误
//4.如果指定参数的窗口句柄无效 同时打开回调返回的的句柄有效 就用打开回调返回的句柄覆盖指定参数的句柄

检查回调 checkFun:

typedef __int64(__stdcall*CHECKINSTALLPLUGINTYPE)(int windowsIndex, int preWindowsIndex, int prePid, int error);

参数:
windowsIndex:当前指定序号
preWindowsIndex:之前绑定的序号或者错误值(小于0) --来源HCInject_GetPreWinIndex返回
prePid:之前绑定的序号对应的PID--来源HCInject_GetPid返回
error:提示值

error==RET_重连窗口(5)----->返回值含义:(1重连直接进行加载环境 0新窗口)

error==RET_重连窗口序号不一致(6)----->返回值含义:(1重连并使用之前绑定的序号进行加载环境 0新窗口(需要用户在回调中把之前PID给关闭))

说明:

1.如果指定的检查回调为NULL,当内部检查到是重连窗口的时候

2.如果发现序号不一致就会直接返回(ERROR_当前进程插件序号不一致 -1216)

3.如果序号一致就直接加载环境并实现重连

几个核心的点 归纳总结出来 其实就能规避掉很多坑了 比如
1.没安装过插件的 都不算重连窗口 全部当新窗口处理 会触发打开回调
2.安装过插件的 不管是卸载了环境 还是崩溃了中控 都算重连窗口 不会触发打开回调


安装插件接口类型表

Help > 安装插件扩展模块[ex] >
安装插件接口类型表

安装插件接口类型表:

调用接口名->内部安装插件接口,安装顺序 | funType | 安装方式 | 是否需要驱动 | 打开回调返回值
HDEX_InstallPlugin1-> HCHD_InstallPlug(86/64) 无模块强力注入,先安装插件再打开进程 | 1 | 自动 | 需要HD驱动 | openFun返回任意(无用处),不可为NULL
HDEX_InstallPlugin2-> HCHD_NormalInstallPlugX86X64 有模块强力注入,先打开进程再安装插件 | 2 | pid | 需要HD驱动 | penFun返回pid(替换参数pid),可为NULL
HDEX_InstallPlugin3-> HCHD_NormalInstallPlugX86X64 有模块强力注入,先打开进程再安装插件 | 3 | hwnd | 需要HD驱动 | openFun返回句柄(替换参数句柄),可为NULL
HDEX_InstallPlugin2-> HCHD_NormalInstallPlugX86X64Ex 有模块强力注入,先打开进程再安装插件 | 4 | pid | 需要HD驱动 | penFun返回pid(替换参数pid),可为NULL
HDEX_InstallPlugin3-> HCHD_NormalInstallPlugX86X64Ex 有模块强力注入,先打开进程再安装插件 | 5 | hwnd | 需要HD驱动 | openFun返回句柄(替换参数句柄),可为NULL
HDEX_InstallPlugin2-> HCN_NormalInstallPlugX86 HCN_NormalInstallPlugX64 有模块注入,先打开进程再安装插件 | 6 | pid | 不需要驱动 | penFun返回pid(替换参数pid),可为NULL
HDEX_InstallPlugin3-> HCN_NormalInstallPlugX86Ex HCHD_NormalInstallPlugX64Ex 有模块注入,先打开进程再安装插件 | 7 | hwnd | 不需要驱动 | openFun返回句柄(替换参数句柄),可为NULL
HDEX_InstallPlugin2-> HCHDVT_InstallPlugX86 HCHDVT_InstallPlugX64 无模块注入,先打开进程再安装插件 | 8 | pid | 需要HDVT驱动 | penFun返回pid(替换参数pid),可为NULL
HDEX_InstallPlugin3-> HCHDVT_InstallPlugX86 HCHDVT_InstallPlugX64 无模块注入,先打开进程再安装插件 | 9 | hwnd | 需要HDVT驱动 | openFun返回句柄(替换参数句柄),可为NULL

回调解析:

打开回调openFun:可以参考表安装插件接口类型表

typedef __int64(__stdcall*INSTALLPLUGINTYPE)(int windowsIndex);

参数:
windowsIndex:当前指定序号

说明:
1.对于 第一种方式 打开回调不能为NULL,内部先安装插件再触发回调打开进程( 在打开回调中可以手动或者自动打开进程 1.如果是手动直接返回1就行或错误值表示中断操作 2.如果是自动返回对应的PID或错误值表示中断操作)
2.其他二种方式打开回调可以为NULL,表示进程已经打开了,不需要在回调中打开,此时使用指定的PID或者窗口句柄来安装插件,具体是PID还是句柄请查看 安装插件接口类型表
3.返回值根据当前的安装插件方式不同有不同的含义:（ 具体请看安装插件接口类型表和覆盖策略）

3.1方式二 是通过PID安装插件 那么返回值应该为打开进程的PID,并把传递的PID参数给覆盖了(请看PID覆盖策略 ),可以返回小于等于0的错误值或者不存在的PID,从而中断安装插件退出,不做相应的安装插件流程(初始化序号-获取PID-加载环境-等待20-继续-等待120),并把打开回调返回值当作安装插件返回值返回。

3.1.1 PID覆盖策略

//1.如果指定的参数PID有效大于0并存在 同时打开回调返回的PID有效大于0并存在 就用打开回调返回的PID覆盖指定参数的PID
//2.如果指定的参数PID有效大于0并存在 同时打开回调返回的PID无效小于等于0不存在 就用指定参数的PID
//3.如果指定的参数PID无效小于等于0不存在 同时打开回调返回的PID无效小于等于0不存在 就直接返回错误
//4.如果指定的参数PID无效小于等于0不存在 同时打开回调返回的PID有效大于0并存在 就用打开回调返回的PID覆盖指定参数的PID

3.2方式三 是通过窗口句柄安装插件 那么返回值应该为打开进程的句柄,并把传递的句柄参数给覆盖了(请看窗口句柄覆盖策略 ),可以返回小于等于0的错误值或者窗口句柄无效,从而中断安装插件退出,不做相应的安装插件流程(初始化序号-获取PID-加载环境-等待20-继续-等待120),并把打开回调返回值当作安装插件返回值返回。

3.2.1 窗口句柄覆盖策略

//1.如果指定参数的窗口句柄有效 同时打开回调返回的的句柄有效 就用打开回调返回的句柄覆盖指定参数的句柄
//2.如果指定参数的窗口句柄有效 同时打开回调返回的的句柄无效 就用指定参数的句柄
//3.如果指定参数的窗口句柄无效 同时打开回调返回的的句柄无效 就直接返回错误
//4.如果指定参数的窗口句柄无效 同时打开回调返回的的句柄有效 就用打开回调返回的句柄覆盖指定参数的句柄

检查回调 checkFun:

typedef __int64(__stdcall*CHECKINSTALLPLUGINTYPE)(int windowsIndex, int preWindowsIndex, int prePid, int error);

参数:
windowsIndex:当前指定序号
preWindowsIndex:之前绑定的序号
prePid:之前绑定的序号对应的PID
error:提示值

error==RET_重连窗口(5)----->返回值含义:(1重连直接进行加载环境 0新窗口)

error==RET_重连窗口序号不一致(6)----->返回值含义:(1重连并使用之前绑定的序号进行加载环境 0新窗口(需要用户在回调中把之前PID给关闭))

说明:

1.如果指定的检查回调为NULL,当内部检查到是重连窗口的时候

2.如果发现序号不一致就会直接返回(ERROR_当前进程插件序号不一致 -1216)

3.如果序号一致就直接加载环境并实现重连


HCInject_Init

Help > 环境初始化模块(Inject) >
HCInject_Init

函数简介 :

初始化插件环境

函数原型:

__int64 __stdcall HCInject_Init(__int32 窗口序号, BOOL 是否重置 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

是否重置:真(TRUE)就行

返回值:

查看返回值表 HD返回值表

备注:

每次打开游戏都需要先初始化一次

不要多次初始化

该接口还会把当前全局进程位数HCEnv_SetProcessType与当前窗口序号进程绑定,省去了切换进程位数的操作,如果不绑定可能会返回-1107(ERROR_进程位数不匹配)


HCInject_InitEx

Help > 环境初始化模块(Inject) >
HCInject_InitEx

函数简介 :

初始化插件环境

函数原型:

__int64 __stdcall HCInject_InitEx(__int32 窗口序号, char *预加载LUA模块全路径, BOOL 是否重置 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

预加载LUA模块全路径:指定一个LUA文件路径+文件名(当插件被加载的时候会自动执行这个LUA文件),通讯后执行

是否重置:是否重置

返回值:

查看返回值表 HD返回值表

备注:

每次打开游戏都需要先初始化一次

不要多次初始化

如果不需要用LUA来初始化自己的数据,可以直接使用HCInject_Init

该接口还会把当前全局进程位数HCEnv_SetProcessType与当前窗口序号进程绑定,省去了切换进程位数的操作,如果不绑定可能会返回-1107(ERROR_进程位数不匹配)


HCInject_InitExx

Help > 环境初始化模块(Inject) >
HCInject_InitExx

函数简介 :

初始化插件环境

函数原型:

__int64 __stdcall HCInject_InitExx(__int32 窗口序号, char *预加载DLL模块全路径 = NULL, char *预加载LUA模块全路径 = NULL, __int32 addType = -1, BOOL 是否重置 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

预加载DLL模块全路径:指定一个预加载的DLL,通讯前直接加载

预加载LUA模块全路径:指定一个LUA文件路径+文件名(当插件被加载的时候会自动执行这个LUA文件),通讯后执行

addType :-1/0/1 无痕无模块加载DLL 2普通加载DLL

是否重置:是否重置

返回值:

查看返回值表 HD返回值表

备注:

每次打开游戏都需要先初始化一次

不要多次初始化

如果不需要用LUA来初始化自己的数据或者预加载DLL,可以直接使用HCInject_Init

该接口还会把当前全局进程位数HCEnv_SetProcessType与当前窗口序号进程绑定,省去了切换进程位数的操作,如果不绑定可能会返回-1107(ERROR_进程位数不匹配)


HCInject_GetPid

Help > 环境初始化模块(Inject) >
HCInject_GetPid

函数简介:

获取打开的进程PID

函数原型:

__int64 __stdcall HCInject_GetPid(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

返回值:

查看返回值表 HD返回值表

备注:

调用这个接口之前必须保证插件已经加载才会获取PID


HCInject_GetPrePid

Help > 环境初始化模块(Inject) >
HCInject_GetPrePid

函数简介:

获取打开的进程之前的PID(可以用于重连)

函数原型:

__int64 __stdcall HCInject_GetPrePid (__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

返回值:

查看返回值表 HD返回值表

备注:

当我们在调试的时候中控如果崩了,如果此时插件还在游戏进程中执行,那么可以当打开中控的时候直接获取PID进行通讯,而不是调用初始化之类的操作


HCInject_GetPreWinIndex

Help > 环境初始化模块(Inject) >
HCInject_GetPreWinIndex

函数简介:

通过进程PID尝试拿到绑定的窗口序号

函数原型:

__int64 __stdcall HCInject_GetPreWinIndex(__int32 pid);

参数定义 :

pid:指定一个进程PID

返回值:

查看返回值表 HD返回值表

备注:

返回如果大于等于0的值表示之前进程绑定的窗口序号

没有进程PID返回-1178

没有绑定过返回-1179


HCInject_GetHwnd

Help > 环境初始化模块(Inject) >
HCInject_GetHwnd

函数简介 :

获取窗口句柄,内部是通过PID获取窗口句柄 需要先安装好插件到目标进程

函数原型:

__int64 __stdcall HCInject_GetHwnd(__int32 窗口序号, char* className, char* title, __int32 filter, BOOL bType, __int32 mis = 0);

参数定义 :

窗口序号:窗口序号 (从1开始)

className:窗口类名(不指定为NULL/0)

title:窗口标题(不指定为NULL/0)

filter: 1标题 2类名 8检测是否无父窗口 16检查窗口句柄是否有效 多个标识可以用| 累加

bType:真/1 为模糊匹配 假/0 为完全匹配

mis:循环检查毫秒数 mis<=0 表示不需要循环获取 >0表示内部循环获取句柄 直到有值

返回值:

查看返回值表 HD返回值表

备注:

内部是通过HCWIN_EnumWindowByProcessId获取


HCInject_GetHwndEx

Help > 环境初始化模块(Inject) >
HCInject_GetHwndEx

函数简介 :

获取窗口句柄(需要内置,一般不需要调用这个获取句柄),如果需要通过PID获取句柄请调用HCInject_GetHwnd

函数原型:

__int64 __stdcall HCInject_GetHwndEx(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

返回值:

查看返回值表 HD返回值表

备注:

这个接口和内置的游戏接口有关,需要搭建完通讯才能调用

并不是一定获取到

如果要获取进程句柄还需要自行获取,除非内置了游戏数据


HCInject_Continue

Help > 环境初始化模块(Inject) >
HCInject_Continue

函数简介 :

继续环境加载操作

函数原型:

__int64 __stdcall HCInject_Continue(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

返回值:

查看返回值表 HD返回值表

备注:

当我们调用了HCEnv_Load后需要调用这个接口来验证


HCInject_SetData

Help > 环境初始化模块(Inject) >
HCInject_SetData

函数简介 :

存自定义二进制数据

函数原型:

__int64 __stdcall HCInject_SetData(__int32 窗口序号, void *用户数据缓冲区, __int32 数据大小);

参数定义 :

窗口序号:窗口序号 (从1开始)

用户数据缓冲区:数据的来源缓冲区( 可以字符串 JSON 其他类型值) 内部会拷贝一份并存储到目标进程中 方便下一次获取

数据大小:数据的来源缓冲区中有效数据的大小 总大小1024字节

返回值:

查看返回值表 HD返回值表

备注:

无


HCInject_GetData

Help > 环境初始化模块(Inject) >
HCInject_GetData

函数简介 :

取自定义二进制数据

函数原型:

__int64 __stdcall HCInject_GetData(__int32 窗口序号, void *用户数据缓冲区, __int32 缓冲区大小);

参数定义 :

窗口序号:窗口序号 (从1开始)

用户数据缓冲区:数据的存储缓冲区 取的数据就是用 HCInject_SetData接口存的数据

缓冲区大小:数据的存储缓冲区数据的大小 不能小于等于0 从内部取的数据最大为1024

返回值:

查看返回值表 HD返回值表

备注:

取的数据就是用HCInject_SetData接口存的数据


通讯环境模块(Env)

Help >
通讯环境模块(Env)


HCEnv_Init

Help > 通讯环境模块(Env) >
HCEnv_Init

函数简介 :

HD插件环境加载(初始化中控环境)

函数原型:

__int64 __stdcall HCEnv_Init(__int32 timeOut = 10000);

参数定义:

timeOut：通讯超时时间(毫秒),默认就行

返回值:

查看返回值表 HD返回值表

返回值为0是正确的,表示当前中控进程窗口序号为0 ！！！

目标进程窗口序号大于等于1,自己管理, 0序号内置为中控进程窗口序号

备注:

中控初始化开始就要调用,仅仅一次


HCEnv_InitEx

Help > 通讯环境模块(Env) >
HCEnv_InitEx

函数简介 :

HD插件环境加载(初始化中控环境)(扩展版本)最新版本一般不用了

函数原型:

__int64 __stdcall HCEnv_InitEx(__int32 通讯超时毫秒 = 10000, __int32 通讯检测间隔毫秒 = 20, __int32 回调响应毫秒 = 5);

参数定义:

timeOut(通讯超时毫秒)：通讯超时时间(毫秒),默认就行

通讯检测间隔毫秒:默认就行,越小响应越快,CPU占用了越高(可以忽视 最新版本不需要考虑这个问题了)

回调响应毫秒:默认就行,越小响应越快,CPU占用了越高

返回值:

查看返回值表 HD返回值表

返回值为0是正确的,表示当前中控进程窗口序号为0 ！！！

目标进程窗口序号大于等于1,自己管理, 0序号内置为中控进程窗口序号

备注:

中控初始化开始就要调用,仅仅一次


HCEnv_Load

Help > 通讯环境模块(Env) >
HCEnv_Load

函数简介 :

HD插件环境加载

函数原型:

__int64 __stdcall HCEnv_Load (__int32 窗口序号, __int32 目标进程PID, __int32 游戏类型 = 0);

参数定义:

窗口序号:窗口序号 (从1开始)

目标进程PID:目标进程PID

游戏类型:内置了游戏接口(每个游戏类型值不同),可以在工具上查看对应的值

返回值:

查看返回值表 HD返回值表

备注:

调用这个接口需要先调用环境初始化模块中的初始化接口

每次打开进程后都要调用


HCEnv_LoadEx

Help > 通讯环境模块(Env) >
HCEnv_LoadEx

函数简介 :

HD插件环境加载(扩展版本),涉及到回调

函数原型:

__int64 __stdcall HCEnv_LoadEx (__int32 窗口序号, __int32 目标进程PID, __int32 游戏类型 = 0, BOOL 是否开启接受线程 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

目标进程PID:目标进程PID

游戏类型:内置了游戏接口(每个游戏类型值不同),可以在工具上查看对应的值

是否开启接受线程:如果需要开启跨进程回调(如:send sendto recv recvfrom等内置插件设置的回调触发),请开启

返回值:

查看返回值表 HD返回值表

备注:

调用这个接口需要先调用环境初始化模块中的初始化接口

每次打开进程后都要调用


HCEnv_UnLoad

Help > 通讯环境模块(Env) >
HCEnv_UnLoad

函数简介 :

HD插件环境卸载

函数原型 :

__int64 __stdcall HCEnv_UnLoad (__int32 窗口序号);

参数定义:

窗口序号:窗口序号 （从1开始）

返回值:

查看返回值表 HD返回值表

备注:

调用这个接口需要先调用环境初始化模块中的初始化接口

进程关闭一定要记得卸载窗口序号对应的窗口环境,以便于下次窗口序号使用

1.没安装过插件的 都不算重连窗口 全部当新窗口处理

2.安装过插件的 不管是卸载了环境 还是崩溃了中控 都算重连窗口


HDEnv_GetWinExIndex

Help > 通讯环境模块(Env) >
HDEnv_GetWinExIndex

函数简介 :

获取副窗口序号

函数原型:

__int64 __stdcall HDEnv_GetWinExIndex(__int32 winIndex);

参数定义:

winIndex:传递窗口序号 返回一个与当前指定的窗口序号的一个副窗口序号

返回值:

查看返回值表 HD返回值表

备注:

这个副窗口序号可以用于登录器的绑定和操作,相当于窗口序号的一个助手,做一些额外的事情
相当于一个窗口序号可以操作2个进程
如:窗口序号1 那么他返回的窗口扩展序号就是1+31 也就是32序号


HDEnv_GetGlobalWinExIndex

Help > 通讯环境模块(Env) >
HDEnv_GetGlobalWinExIndex

函数简介 :

获取全局副窗口序号,这是一个全局的序号

函数原型:

__int64 __stdcall HDEnv_GetGlobalWinExIndex ();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

一个中控仅有一个
计算方式:0+31 也就是这个全局序号为31 序号从0开始
用途:
给当前中控分配一个助手,来控制一个进程来辅助中控做一些事情


HCEnv_AttachHeart

Help > 通讯环境模块(Env) >
HCEnv_AttachHeart

函数简介 :

给中控附加心跳

函数原型:

__int64 __stdcall HCEnv_AttachHeart(__int32 type, __int64 funCallbackAddr, __int32 timeOut = 10000);

参数定义:

给中控附加心跳
type:1->通讯线程 2->主线程 3->卡屏 6->1+2+3
如果需要检测主线程心跳是否卡住,请记得先HOOK主线程【HC_HookMainThread】接口
timeOut:检测超时,当超过这个时间相关值没有发现改变,则判定为卡住或者掉线
funCallbackAddr:当出现卡住或者掉线会触发相应的回调函数,并传递2个参数分别是->窗口索引和事件类型
typedef __int32(__stdcall *HeartFunType)(__int32 窗口索引, __int32 type);
回调函数返回值:1就行 无实际意义

返回值:

查看返回值表 HD返回值表

备注:

检测主线程心跳

如果需要检测主线程心跳是否卡住,请记得先HOOK主线程接口HC_HookMainThread

设置心跳回调函数类型

typedef __int32(*HeartFunType)(__int32 窗口索引, __int32 type);
回调函数返回值:0不重置之前的记录 1重置之前的记录(一般重新开启新进程会设置为1)

// 1.通讯 崩溃/关闭等等原因 导致进程不存在 -> 重启窗口
// 2.主线程 崩溃/关闭/未响应/目标进程卡死原因 导致进程不存在/存在 -> 强制关闭 - >重启窗口 设置挂接主线程
// 2.1. 附加心跳的时候 可以检查主线程的状态(游戏/目标)
// 2.2. 后面的内存操作 可以主线程调用
// 2.3. 注意:附加心跳的时候 设置的检查时间 一定要大于 安装插件到挂接主线程的时间
// 3.卡屏 崩溃/关闭/区域图像卡死了原因 导致进程不存在/存在 -> 强制关闭 - >重启窗口 设置屏幕检查范围
// 6.1+2+3


HCEnv_SetScreenCheckHeart

Help > 通讯环境模块(Env) >
HCEnv_SetScreenCheckHeart

函数简介 :

当我们心跳检测指定了3或者6 需要设置卡屏范围和卡屏检测次数
当大于这个次数 就调用回调

函数原型:

__int64 __stdcall HCEnv_SetScreenCheckHeart(__int32 x, __int32 y, __int32 w, __int32 h, __int32 最大次数,__int32 截屏前后间隔时间 = 1000);

参数定义:

x:客户端x

y:客户端y

w:区域宽度

h:区域高度

最大次数:当到达这个次数就会触发回调

截屏前后间隔时间:前后时间间隔 用来比较图像是否卡主

返回值:

查看返回值表 HD返回值表

备注:


HCEnv_DetachHeart

Help > 通讯环境模块(Env) >
HCEnv_DetachHeart

函数简介 :

脱离中控附加的心跳检测

函数原型 :

__int64 __stdcall HCEnv_DetachHeart( );

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:
脱离会堵塞直到脱离成功
一般中控进程结果关闭前调用


HCEnv_Debug

Help > 通讯环境模块(Env) >
HCEnv_Debug

函数简介 :

设置导入接口为调试模式

函数原型 :

__int64 __stdcall HCEnv_Debug(BOOL 是否调试 = FALSE);

参数定义:

是否调试:当使用【HDDebug.dll】导入接口的时候就需要调用这个设置为调试模式(否者插件可能安装不成功)然后方可继续后面的一系列操作

返回值:

查看返回值表 HD返回值表

备注:

中控初始化开始就可以调用,仅仅一次

发布版本不需要调用此接口,默认为发布版本


HCEnv_AddThread

Help > 通讯环境模块(Env) >
HCEnv_AddThread

函数简介 :

添加线程环境

函数原型:

__int64 __stdcall HCEnv_AddThread(__int32 窗口序号, __int32 线程ID, __int32 bDebug = 0);

参数定义:

窗口序号:窗口序号 （从1开始）

线程ID:当前线程ID

bDebug :是否是调试模式,如果是那么线程ID可以任意指定

返回值:

查看返回值表 HD返回值表

备注:

这个接口用来测试用的,开发者一般用不到


HCEnv_TestCALL_RetValue

Help > 通讯环境模块(Env) >
HCEnv_TestCALL_RetValue

函数简介 :

测试是否通讯成功,返回单一值

函数原型:

__int64 __stdcall HCEnv_TestCALL_RetValue(__int32 窗口序号, __int64 rcx = 0, __int64 rdx = 0, __int64 r8 = 0, __int64 r9 = 0, __int64 lparam5 = 0, __int64 lparam6 = 0, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 （从1开始）

rcx:CALL参数

rdx:CALL参数

r8:CALL参数

r9:CALL参数

l5:CALL参数

l6:CALL参数

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

这个接口用来测试是否环境搭建成功


HCEnv_TestCALL_RetArray

Help > 通讯环境模块(Env) >
HCEnv_TestCALL_RetArray

函数简介 :

测试是否通讯成功,返回json字符串

函数原型:

__int64 __stdcall HCEnv_TestCALL_RetArray(__int32 窗口序号, __int64 rcx = 0, __int64 rdx = 0, __int64 r8 = 0, __int64 r9 = 0, __int64 lparam5 = 0, __int64 lparam6 = 0, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 （从1开始）

rcx:CALL参数

rdx:CALL参数

r8:CALL参数

r9:CALL参数

l5:CALL参数

l6:CALL参数

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

这个接口用来测试是否环境搭建成功


HCEnv_TestCALL_RetValueEx

Help > 通讯环境模块(Env) >
HCEnv_TestCALL_RetValueEx

函数简介 :

测试是否通讯成功,返回单一值

函数原型:

__int64 __stdcall HCEnv_TestCALL_RetValueEx(__int32 窗口序号, __int32 线程ID, __int64 rcx = 0, __int64 rdx = 0, __int64 r8 = 0, __int64 r9 = 0, __int64 lparam5 = 0, __int64 lparam6 = 0, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 （从1开始）

线程ID:当前线程ID或者添加的指定ID

rcx:CALL参数

rdx:CALL参数

r8:CALL参数

r9:CALL参数

l5:CALL参数

l6:CALL参数

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

这个接口用来测试是否环境搭建成功


HCEnv_TestCALL_RetArrayEx

Help > 通讯环境模块(Env) >
HCEnv_TestCALL_RetArrayEx

函数简介 :

测试是否通讯成功,返回json字符串

函数原型:

__int64 __stdcall HCEnv_TestCALL_RetArrayEx(__int32 窗口序号, __int32 线程ID, __int64 rcx = 0, __int64 rdx = 0, __int64 r8 = 0, __int64 r9 = 0, __int64 lparam5 = 0, __int64 lparam6 = 0, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 （从1开始）

线程ID:当前线程ID或者添加的指定ID

rcx:CALL参数

rdx:CALL参数

r8:CALL参数

r9:CALL参数

l5:CALL参数

l6:CALL参数

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

这个接口用来测试是否环境搭建成功


HCEnv_SetProcessType

Help > 通讯环境模块(Env) >
HCEnv_SetProcessType

函数简介 :

设置目标进程位数

函数原型:

__int64 __stdcall HCEnv_SetProcessType (__int32 进程位数);

参数定义:

进程位数：32/64

返回值:

查看返回值表 HD返回值表

备注:

该接口是全局设置,也就是设置了一次,接下来的所有进程都是该位数,可以多次调用切换进程位数,建议使用HCEnv_SetProcessTypeEx这个扩展版本

如果使用了HDEX_InstallPlugin1 HDEX_InstallPlugin2 HDEX_InstallPlugin3 这些接口 可以不用调用这个接口设置目标进程位数

如果是自定义通讯流程就需要自己设置后然后初始化序号进行通讯绑定


HCEnv_SetProcessTypeEx

Help > 通讯环境模块(Env) >
HCEnv_SetProcessTypeEx

函数简介 :

指定某个序号绑定的进程位数

函数原型:

__int64 __stdcall HCEnv_SetProcessTypeEx(__int32 窗口序号,__int32 进程位数);

参数定义:

窗口序号:窗口序号

进程位数：32/64

返回值:

查看返回值表 HD返回值表

备注:

如果使用了HDEX_InstallPlugin1 HDEX_InstallPlugin2 HDEX_InstallPlugin3 这些接口 可以不用调用这个接口设置目标进程位数

如果是自定义通讯流程就需要自己设置后然后初始化序号进行通讯绑定


HCEnv_SetHandleEventCallBack

Help > 通讯环境模块(Env) >
HCEnv_SetHandleEventCallBack

函数简介 :

设置中控事件处理回调函数

函数原型:

__int64 __stdcall HCEnv_SetHandleEventCallBack(__int64 funCallBack);

参数定义:

funCallBack：事件处理函数地址

返回值:

查看返回值表 HD返回值表

备注:

这个回调函数作用于当自定义模块通知中控的时候

中控事件处理回调函数接口类型:

typedef __int32(__stdcall *HandleEventFunType)(__int32 窗口序号, __int32 插件序号, HDHandleEventInfo Info);

HDHandleEventInfo结构体:

typedef
struct HDHandleEventInfo //处理事件
{
__int32  m_callType;//自定义
HDValue  m_call;
HDValue  m_rcx;
HDValue  m_rdx;
HDValue  m_r8;
HDValue  m_r9;
HDValue  m_lparam5;
HDValue  m_lparam6;
HDValue  m_lparam7;
HDValue  m_lparam8;
HDValue  m_value;
HDValue  m_size;
char m_buffer[MAX_PATH];
char m_buffer2[MAX_PATH];
HDValue*  m_pRetValue;//值 单独
char* m_pRetJson;//字符串 返回
}HDHandleEventInfo;

代码案例:

__int32 HCLogin::HandleEvent(__int32 窗口序号,__int32 插件序号, HDHandleEventInfo Info)
{
HDbgPrintf_Normal("处理接受事件->窗口序号:%d callType:%d buffer1:%s buffer2:%s call:%llX rcx:%llX rdx:%llX",
窗口序号,
Info.m_callType,
Info.m_buffer,
Info.m_buffer2,
Info.m_call,
Info.m_rcx,
Info.m_rdx
);
if (Info.m_callType == 1)
{
*Info.m_pRetValue = 999;
auto ret = HCMKB_UnBind(窗口序号);
HDbgPrintf_Normal("解绑后台 ret:%d", ret);
return 8;
}
else if (Info.m_callType == 2)
{
//处理逻辑
*Info.m_pRetValue = 123;
sprintf_s(Info.m_pRetJson, 1024 * 10, "%s", "我是中控");
//672 637
auto ret = HCMKB_Bind(窗口序号, Info.m_call,"1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|");
HDbgPrintf_Normal("绑定后台 ret:%d", ret);
if (ret == 1)
{
Sleep(1000);
ret = HCMKB_MoveTo(窗口序号, 672, 610, 0);
HDbgPrintf_Normal("模拟移动一次->672 610 ret:%d", ret);
ret = HCMKB_LeftClick(窗口序号);
HDbgPrintf_Normal("模拟点击一次->ret:%d", ret);
}
return 1024 * 10;//大于8 认为是字符串
}
*Info.m_pRetValue = 1;
return 8;
}


HCEnv_SetShutDownCallBack

Help > 通讯环境模块(Env) >
HCEnv_SetShutDownCallBack

函数简介 :

设置关闭回调函数(处理HD功能失效,内部自动关闭中控前的操作)

函数原型 :

__int64 __stdcall HCEnv_SetShutDownCallBack(__int64 funCallBack);

参数定义:

funCallBack：事件处理函数地址

返回值:

查看返回值表 HD返回值表

备注:

当HD出现异常或者失效或者网络验证出现断线,会在自动关闭自身在期间会先调用这个回调(这个回调自己做好关闭前处理工作) 然后会自动调用微软API接口ExitProcess();结束自身

在这个回调用户可以自行处理自己的业务逻辑

1.资源清理逻辑

2.接口释放逻辑

3.自启逻辑

4.自定义处理逻辑

回调函数接口类型:

typedef __int32(__stdcall *ShutDownEventFunType)(__int32 code);

code：错误代码


HCEnv_SetCheckComItlTime

Help > 通讯环境模块(Env) >
HCEnv_SetCheckComItlTime

函数简介 :

设置 通讯检测间隔毫秒

函数原型 :

__int64 __stdcall HCEnv_SetCheckComItlTime(__int32 通讯检测间隔毫秒 = 20);

参数定义:

通讯检测间隔毫秒:默认就行,越小响应越快,CPU占用了越高(也可以调用HCEnv_InitEx 设置)

返回值:

查看返回值表 HD返回值表

备注:

1.值越小响应越快,随之带来的效率更高但是会导致CPU利用率变高
2.值的大小根据当前的项目指定,对于一直要实时响应的最好小点


HCEnv_SetCheckCallBackTime

Help > 通讯环境模块(Env) >
HCEnv_SetCheckCallBackTime

函数简介 :

设置回调响应毫秒

函数原型 :

__int64 __stdcall HCEnv_SetCheckCallBackTime(__int32 回调响应毫秒 = 5);

参数定义:

回调响应毫秒:默认就行,越小响应越快,CPU占用了越高(也可以调用HCEnv_InitEx 设置)

返回值:

查看返回值表 HD返回值表

备注:
1.值越小响应越快,随之带来的效率更高但是会导致CPU利用率变高
2.值的大小根据当前的项目指定,对于一直要实时响应的最好小点


HCEnv_TerminateThread

Help > 通讯环境模块(Env) >
HCEnv_TerminateThread

函数简介 :

强制结束当前线程(可以在卸载环境后调用)

函数原型:

__int64 __stdcall HCEnv_TerminateThread(__int32 窗口序号, __int32 threadId, BOOL 是否操作锁 = TRUE);

参数定义:

窗口序号:指定当前强制关闭线程所操作的窗口序号

threadId:强制关闭的线程ID,调用此接口的线程不要和结束的线程是同一个(虽然内部有检查)

是否操作锁:一般为了安全的强制关闭线程,必须为真, 否则会很有可能出现死锁的情况

返回值:

查看返回值表 HD返回值表

备注:

强制结束当前线程
内部会对锁操作
循环拿到锁才会强制关闭并返回成功
此接口小心使用
1.不到万不得已不要强制关闭线程(因为强制关闭线程不管在任何时候都有可能造成不可能预计的BUG)
2.调用此接口的线程不要和结束的线程是同一个(虽然内部有检查)
3.该接口如果参数:是否操作锁为真,那么会堵塞,直到拿到锁权限后,才会强制关闭线程,然后解锁(防止死锁).


HCEnv_TerminateThreadEx

Help > 通讯环境模块(Env) >
HCEnv_TerminateThreadEx

函数简介 :

强制结束当前线程 (可以在卸载环境后调用)

函数原型:

__int64 __stdcall HCEnv_TerminateThreadEx(__int32 窗口序号, __int64 threadHandle, BOOL 是否操作锁 = TRUE);

参数定义:

窗口序号:指定当前强制关闭线程所操作的窗口序号

threadHandle:强制关闭的线程句柄,调用此接口的线程不要和结束的线程是同一个(虽然有检查但是可能会崩溃)

是否操作锁:一般为了安全的强制关闭线程,必须为真, 否则会很有可能出现死锁的情况

返回值:

查看返回值表 HD返回值表

备注:

强制结束当前线程
内部会对锁操作
循环拿到锁才会强制关闭并返回成功
此接口小心使用
1.不到万不得已不要强制关闭线程(因为强制关闭线程不管在任何时候都有可能造成不可能预计的BUG)
2.调用此接口的线程不要和结束的线程是同一个(虽然内部有检查)
3.该接口如果参数:是否操作锁为真,那么会堵塞,直到拿到锁权限后,才会强制关闭线程,然后解锁(防止死锁).


窗口序号说明

Help > 通讯环境模块(Env) >
窗口序号说明

窗口序号范围说明:

两种模式:(不需要设置,序号自行维护,但是要知道序号的含义)

以下是对两种不同模型下窗口序号对应的含义:

第一种:共享模式可以30开

-0中控序号
-1~30 窗口序号
-31 中控序号的副窗口序号(助手)
-32-61 窗口序号的副窗口序号(助手)

第二种:独立模式(无助手)可以60开

-0中控序号
-1~30 窗口序号
-31 无用
-32-61 窗口序号

调试/发布版本说明:

调试版本:

测试账号可以使用,但是只能单开

正式账号不限制

发布版本:

正式账号不限制


多线程模块[MT]

Help >
多线程模块[MT]

通用性多线程框架

适合各种语言

完美兼容HD接口

解决语言差异性带来的不稳定性


HCMT_InitProcess

Help > 多线程模块[MT] >
HCMT_InitProcess

函数简介 :

初始化多线程 设置相关 流程回调

函数原型 ：

__int64 __stdcall HCMT_InitProcess (__int64 hwnd, void* updateUICallBack, void* loginCallBack, void* firstCallBack, void* secondCallBack, void* endCallBack, void* restartPreCallBack);

参数定义:

hwnd:中控UI的窗口主句柄 内部会HOOK窗口过程
updateUICallBack: UIFUNTYPE UI回调
loginCallBack: FUNTYPE 登录回调 唯一锁,多个窗口同时启动会一个一个调用,保证有序性！！！！
firstCallBack: FUNTYPE 第一执行回调 注意:内部应该写成循环 并配合HCMT_Sleep()和HCMT_IsRunning() 不要主动返回执行回调(return 1;) 应该调用接口内部结束或者其他操作
secondCallBack: FUNTYPE 第二执行回调 注意:内部应该写成循环 并配合HCMT_Sleep()和HCMT_IsRunning() 不要主动返回执行回调(return 1;) 应该调用接口内部结束或者其他操作
endCallBack: FUNTYPE 结束回调
restartPreCallBack: FUNTYPE 重启前回调

返回值:

查看返回值表 HD返回值表

备注:

1.普通回调1参数windowsIndex:代表的是窗口序号也是主序号

2.每个回调参数的函数类型不一样,注意对应

回调触发顺序:

开启窗口:登录回调--->第一/第二执行回调同时开启--->结束回调

重启窗口:重启前回调--->登录回调--->第一/第二执行回调同时开启--->结束回调

参数回调函数类型:

------------------------------------------------------------------------------------普通回调1

typedef __int64(__stdcall *FUNTYPE )(__int32 windowsIndex);

windowsIndex:窗口序号

------------------------------------------------------------------------------------普通回调2

typedef __int64(__stdcall *FUNTYPE )(__int32 index);

index:窗口序号/主序号/副序号

------------------------------------------------------------------------------------UI回调
typedef __int64(__stdcall *UIFUNTYPE)(__int32 windowsIndex, char *stepText, BOOL end1, BOOL pause1, __int32 threadState1, BOOL m_end2, BOOL m_pause2, __int32 threadState2);

windowsIndex:窗口序号

stepText:日志信息/操作信息

end1:主执行线程的结束标志状态

pause1:主执行线程的暂停标志状态

threadState1:主执行线程的线程操作状态

end2:副线程的结束标志状态

pause2:副线程的暂停标志状态

threadState2:副线程的线程操作状态

------------------------------------------------------------------------------------消息回调
typedef __int64(__stdcall *MSGFUNTYPE)(WPARAM wparam,, LPARAM lparam);

wparam:自定义参数1

lparam:自定义参数2


HCMT_InitProcessEx

Help > 多线程模块[MT] >
HCMT_InitProcessEx

函数简介 :

初始化多线程 设置相关 流程回调 可以绑定一个全局参数

函数原型 ：

__int64 __stdcall HCMT_InitProcessEx(__int64 hwnd, void* updateUICallBackEx, void* loginCallBack, void* firstCallBack, void* secondCallBack, void* endCallBack, void* restartPreCallBack, void* lparam);

参数定义:

hwnd:中控UI的窗口主句柄 内部会HOOK窗口过程
updateUICallBack:UIFUNTYPEUI回调
loginCallBack: FUNTYPE 登录回调 唯一锁,多个窗口同时启动会一个一个调用,保证有序性！！！！
firstCallBack:FUNTYPE 第一执行回调注意:内部应该写成循环 并配合HCMT_Sleep()和HCMT_IsRunning() 不要主动返回执行回调(return 1;) 应该调用接口内部结束或者其他操作
secondCallBack:FUNTYPE第二执行回调 注意:内部应该写成循环 并配合HCMT_Sleep()和HCMT_IsRunning() 不要主动返回执行回调(return 1;) 应该调用接口内部结束或者其他操作
endCallBack: FUNTYPE 结束回调
restartPreCallBack: FUNTYPE 重启前回调
lparam:绑定一个全局参数,一般我们指定为一个UI对象地址

返回值:

查看返回值表 HD返回值表

备注:

1.普通回调1参数windowsIndex:代表的是窗口序号也是主序号

2.每个回调参数的函数类型不一样,注意对应

回调触发顺序:

开启窗口:登录回调--->第一/第二执行回调同时开启--->结束回调

重启窗口:重启前回调--->登录回调--->第一/第二执行回调同时开启--->结束回调

参数回调函数类型:

------------------------------------------------------------------------------------普通回调1

typedef __int64(__stdcall *FUNTYPE )(__int32 windowsIndex);

windowsIndex:窗口序号

------------------------------------------------------------------------------------普通回调2

typedef __int64(__stdcall *FUNTYPE )(__int32 index);

index:窗口序号/主序号/副序号

------------------------------------------------------------------------------------UI回调EX
typedef __int64(__stdcall *UIFUNTYPEEX)(__int32 windowsIndex, char *stepText, void* lparam, BOOL m_end1, BOOL m_pause1, __int32 threadState1, BOOL m_end2, BOOL m_pause2, __int32 threadState2);

windowsIndex:窗口序号

stepText:日志信息/操作信息

lparam:HCMT_InitProcessEx绑定一个全局参数,一般我们指定为一个UI对象地址,这个回调可以拿到这个地址

end1:主执行线程的结束标志状态

pause1:主执行线程的暂停标志状态

threadState1:主执行线程的线程操作状态

end2:副线程的结束标志状态

pause2:副线程的暂停标志状态

threadState2:副线程的线程操作状态

------------------------------------------------------------------------------------消息回调
typedef __int64(__stdcall *MSGFUNTYPE)(WPARAM wparam,, LPARAM lparam);

wparam:自定义参数1

lparam:自定义参数2


HCMT_InitOperate

Help > 多线程模块[MT] >
HCMT_InitOperate

函数简介 :

初始化多线程结束/暂停/恢复状态的操作回调

函数原型 ：

__int64 __stdcall HCMT_InitOperate(void* endBindCallBack, void* pauseBindCallBack, void* recoverBindCallBack);

参数定义:

endBindCallBack:FUNTYPE 结束绑定回调 当调用HCMT_SetStop/HCMT_SetAllStop 会触发
pauseBindCallBack:FUNTYPE 暂停绑定回调 当调用HCMT_SetPause/HCMT_SetAllPause 会触发
recoverBindCallBack:FUNTYPE 恢复绑定回调 当调用HCMT_SetRecover /HCMT_SetAllRecover 会触发

返回值:

查看返回值表 HD返回值表

备注:

1.仅仅对于这3个回调而言 普通回调2 参数index:大于多开限制数量,就是副序号;小于就是主序号(也是窗口序号);计算公式:if(index >= 多开限制数) 主序号= index - 多开限制数;

//(index >= 多开环境数量) ? (index - 多开环境数量) : (index)
2.其他接口的windowsIndex就代表的是窗口序号也是主序号
3.多开限制数量最大常量为31,请自行在程序里面定义

4.多开限制数量用HCEnv_GetMaxWindowNum返回一个常数,可以自己写成一个常量

回调触发顺序:

结束窗口操作:endBindCallBack 并传递对应的线程序号(线程序号可能是主序号也就是窗口序号,也有可能是副序号)

暂停窗口操作:pauseBindCallBack 并传递对应的线程序号 (线程序号可能是主序号也就是窗口序号,也有可能是副序号)

恢复窗口操作:recoverBindCallBack 并传递对应的线程序号 (线程序号可能是主序号也就是窗口序号,也有可能是副序号)

参数回调函数类型:

------------------------------------------------------------------------------------普通回调1

typedef __int64(__stdcall *FUNTYPE )(__int32 windowsIndex);

windowsIndex:窗口序号

------------------------------------------------------------------------------------普通回调2

typedef __int64(__stdcall *FUNTYPE )(__int32 index);

index:窗口序号/主序号/副序号

------------------------------------------------------------------------------------UI回调
typedef __int64(__stdcall *UIFUNTYPE)(__int32 windowsIndex, char *stepText, BOOL end1, BOOL pause1, __int32 threadState1, BOOL m_end2, BOOL m_pause2, __int32 threadState2);

windowsIndex:窗口序号

stepText:日志信息/操作信息

end1:主执行线程的结束标志状态

pause1:主执行线程的暂停标志状态

threadState1:主执行线程的线程操作状态

end2:副线程的结束标志状态

pause2:副线程的暂停标志状态

threadState2:副线程的线程操作状态

------------------------------------------------------------------------------------消息回调
typedef __int64(__stdcall *MSGFUNTYPE)(WPARAM wparam,, LPARAM lparam);

wparam:自定义参数1

lparam:自定义参数2


HCMT_RegisterMessage

Help > 多线程模块[MT] >
HCMT_RegisterMessage

函数简介 :

注册窗口消息

函数原型 ：

__int64 __stdcall HCMT_RegisterMessage(__int32 msg, void* msgCallBack);

参数定义:

msg:自定义消息整数值 (规定值大于等于41124)
msgCallBack:MSGFUNTYPE 消息回调

返回值:

查看返回值表 HD返回值表

备注:

1.通过HCMT_MsgSend/HCMT_MsgPost来触发回调

参数回调函数类型:

------------------------------------------------------------------------------------普通回调1

typedef __int64(__stdcall *FUNTYPE )(__int32 windowsIndex);

windowsIndex:窗口序号

------------------------------------------------------------------------------------普通回调2

typedef __int64(__stdcall *FUNTYPE )(__int32 index);

index:窗口序号/主序号/副序号

------------------------------------------------------------------------------------UI回调
typedef __int64(__stdcall *UIFUNTYPE)(__int32 windowsIndex, char *stepText, BOOL end1, BOOL pause1, __int32 threadState1, BOOL m_end2, BOOL m_pause2, __int32 threadState2);

windowsIndex:窗口序号

stepText:日志信息/操作信息

end1:主执行线程的结束标志状态

pause1:主执行线程的暂停标志状态

threadState1:主执行线程的线程操作状态

end2:副线程的结束标志状态

pause2:副线程的暂停标志状态

threadState2:副线程的线程操作状态

------------------------------------------------------------------------------------消息回调
typedef __int64(__stdcall *MSGFUNTYPE )(WPARAM wparam,LPARAM lparam);

wparam:自定义参数1

lparam:自定义参数2


HCMT_MsgSend

Help > 多线程模块[MT] >
HCMT_MsgSend

函数简介 :

发送消息(同步)

函数原型 ：

__int64 __stdcall HCMT_MsgSend(__int32 msg, void* wparam, void* lparam);

参数定义:

msg:消息整数值
wparam:自定义参数
lparam:自定义参数

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

参数回调函数类型:

------------------------------------------------------------------------------------普通回调1

typedef __int64(__stdcall *FUNTYPE )(__int32 windowsIndex);

windowsIndex:窗口序号

------------------------------------------------------------------------------------普通回调2

typedef __int64(__stdcall *FUNTYPE )(__int32 index);

index:窗口序号/主序号/副序号

------------------------------------------------------------------------------------UI回调
typedef __int64(__stdcall *UIFUNTYPE)(__int32 windowsIndex, char *stepText, BOOL end1, BOOL pause1, __int32 threadState1, BOOL m_end2, BOOL m_pause2, __int32 threadState2);

windowsIndex:窗口序号

stepText:日志信息/操作信息

end1:主执行线程的结束标志状态

pause1:主执行线程的暂停标志状态

threadState1:主执行线程的线程操作状态

end2:副线程的结束标志状态

pause2:副线程的暂停标志状态

threadState2:副线程的线程操作状态

------------------------------------------------------------------------------------消息回调
typedef __int64(__stdcall *MSGFUNTYPE)(WPARAM wparam,, LPARAM lparam);

wparam:自定义参数1

lparam:自定义参数2


HCMT_MsgPost

Help > 多线程模块[MT] >
HCMT_MsgPost

函数简介 :

发送消息(异步)

函数原型 ：

__int64 __stdcall HCMT_MsgPost(__int32 msg, void* wparam, void* lparam);

参数定义:

msg:消息整数值
wparam:自定义参数
lparam:自定义参数

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

参数回调函数类型:

------------------------------------------------------------------------------------普通回调1

typedef __int64(__stdcall *FUNTYPE )(__int32 windowsIndex);

windowsIndex:窗口序号

------------------------------------------------------------------------------------普通回调2

typedef __int64(__stdcall *FUNTYPE )(__int32 index);

index:窗口序号/主序号/副序号

------------------------------------------------------------------------------------UI回调
typedef __int64(__stdcall *UIFUNTYPE)(__int32 windowsIndex, char *stepText, BOOL end1, BOOL pause1, __int32 threadState1, BOOL m_end2, BOOL m_pause2, __int32 threadState2);

windowsIndex:窗口序号

stepText:日志信息/操作信息

end1:主执行线程的结束标志状态

pause1:主执行线程的暂停标志状态

threadState1:主执行线程的线程操作状态

end2:副线程的结束标志状态

pause2:副线程的暂停标志状态

threadState2:副线程的线程操作状态

------------------------------------------------------------------------------------消息回调
typedef __int64(__stdcall *MSGFUNTYPE)(WPARAM wparam,, LPARAM lparam);

wparam:自定义参数1

lparam:自定义参数2


HCMT_MsgStart

Help > 多线程模块[MT] >
HCMT_MsgStart

函数简介 :

通过消息开启窗口操作

函数原型 ：

__int64 __stdcall HCMT_MsgStart(__int32 windowsIndex, BOOL bAsyn = FALSE);

参数定义:

windowsIndex:窗口序号
bAsyn:是否异步发送

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.开启成功后会相应触发对应设置的回调函数

3.顺序:

开启窗口:登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

重启窗口:重启前回调--->登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

停止窗口:结束绑定回调->结束回调


HCMT_MsgStop

Help > 多线程模块[MT] >
HCMT_MsgStop

函数简介 :

通过消息停止窗口操作

函数原型 ：

__int64 __stdcall HCMT_MsgStop(__int32 windowsIndex, BOOL bAsyn = FALSE);

参数定义:

windowsIndex:窗口序号
bAsyn:是否异步发送

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.开启成功后会相应触发对应设置的回调函数

3.顺序:

开启窗口:登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

重启窗口:重启前回调--->登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

停止窗口:结束绑定回调->结束回调


HCMT_MsgReStart

Help > 多线程模块[MT] >
HCMT_MsgReStart

函数简介 :

通过消息重启窗口操作

函数原型 ：

__int64 __stdcall HCMT_MsgReStart(__int32 windowsIndex, BOOL bAsyn = FALSE);

参数定义:

windowsIndex:窗口序号
bAsyn:是否异步发送

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.开启成功后会相应触发对应设置的回调函数

3.顺序:

开启窗口:登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

重启窗口:重启前回调--->登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

停止窗口:结束绑定回调->结束回调


HCMT_MsgReStartEx

Help > 多线程模块[MT] >
HCMT_MsgReStartEx

函数简介 :

通过消息重启窗口操作(扩展版本)

函数原型 ：

__int64 __stdcall HCMT_MsgReStartEx(__int32 windowsIndex, BOOL bUnload = TRUE, BOOL bAsyn = FALSE);

参数定义:

windowsIndex:窗口序号

bUnload :是否重启前卸载进程环境(HCEnv_UnLoad) 一般我们肯定要卸载环境的 尤其是在配合心跳HCEnv_AttachHeart 的时候

bAsyn:是否异步发送

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.开启成功后会相应触发对应设置的回调函数

3.顺序:

开启窗口:登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

重启窗口:重启前回调--->登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

停止窗口:结束绑定回调->结束回调


HCMT_MsgUpdateUI

Help > 多线程模块[MT] >
HCMT_MsgUpdateUI

函数简介 :

通过消息触发UI回调,并传递线程状态信息和日志操作信息给UI回调

函数原型 ：

__int64 __stdcall HCMT_MsgUpdateUI (__int32 windowsIndex, BOOL bAsyn = FALSE);

参数定义:

windowsIndex:窗口序号
bAsyn:是否异步发送

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用


HCMT_MsgStepText

Help > 多线程模块[MT] >
HCMT_MsgStepText

函数简介 :

通过消息触发UI回调,并传递线程状态信息和日志操作信息给UI回调

函数原型 ：

__int64 __stdcall HCMT_MsgStepText(__int32 windowsIndex, char* text, BOOL bAsyn = FALSE);

参数定义:

windowsIndex:窗口序号
text:步骤信息/日志信息 触发一次UI回调后,文本会自动清空
bAsyn:是否异步发送

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用


HCMT_SetAllPause

Help > 多线程模块[MT] >
HCMT_SetAllPause

函数简介 :

设置所有窗口结束

函数原型 ：

__int64 __stdcall HCMT_SetAllPause();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的暂停绑定回调


HCMT_GetState

Help > 多线程模块[MT] >
HCMT_GetState

函数简介 :

获取主副序号对应的线程的状态值

函数原型 ：

__int64 __stdcall HCMT_GetState(__int32 index);

参数定义 :

index:主副序号 注意: 这个接口传递的是主副序号

返回值:

返回1:状态值 注意:如果需要转换为字符串,需要调用HCMT_GetStateString

返回其他值:查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的暂停绑定回调

typedef enum THREADSTATE//线程状态
{
THREADSTATE_NONE = -1,//未启动
THREADSTATE_STARTING = 0,//开启中
THREADSTATE_LOGINING = 1,//正在登录
THREADSTATE_RUNNING = 2,//正在运行
THREADSTATE_PAUSE = 3,//暂停
THREADSTATE_PAUSEING = 4,//正在暂停
THREADSTATE_RECOVERING = 5,//正在恢复
THREADSTATE_WILLSTOP = 6,//准备停止
THREADSTATE_STOPPING = 7//正在停止
}THREADSTATE;


HCMT_GetStateString

Help > 多线程模块[MT] >
HCMT_GetStateString

函数简介 :

获取状态整数值对应的字符串

函数原型 ：

char* __stdcall HCMT_GetStateString (__int32 threadState);

参数定义:

threadState:状态值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMT_IsCanStart

Help > 多线程模块[MT] >
HCMT_IsCanStart

函数简介 :

判断是否能开启新的(主副线程) 传递的只能是主序号

函数原型 ：

__int64 __stdcall HCMT_IsCanStart(__int32 windowsIndex);

参数定义:

windowsIndex:主序号

返回值:

查看返回值表 HD返回值表

备注:

无


HCMT_Start

Help > 多线程模块[MT] >
HCMT_Start

函数简介 :

直接开启窗口操作

函数原型 ：

__int64 __stdcall HCMT_Start(__int32 windowsIndex);

参数定义:

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.开启成功后会相应触发对应设置的回调函数

3.顺序:

开启窗口:登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

重启窗口:重启前回调--->登录回调--->第一/第二执行回调同时开启--->{暂停/恢复/结束绑定回调}->结束回调

停止窗口:结束绑定回调->结束回调


HCMT_SetAllRecover

Help > 多线程模块[MT] >
HCMT_SetAllRecover

函数简介 :

设置所有窗口恢复

函数原型 ：

__int64 __stdcall HCMT_SetAllRecover();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的恢复绑定回调


HCMT_SetAllStop

Help > 多线程模块[MT] >
HCMT_SetAllStop

函数简介 :

设置所有窗口停止

函数原型 ：

__int64 __stdcall HCMT_SetAllStop ();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的停止绑定回调


HCMT_SetPause

Help > 多线程模块[MT] >
HCMT_SetPause

函数简介 :

设置窗口暂停

函数原型 ：

__int64 __stdcall HCMT_SetPause(__int32 windowsIndex);

参数定义 :

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的暂停绑定回调


HCMT_SetPauseEx

Help > 多线程模块[MT] >
HCMT_SetPauseEx

函数简介 :

设置主副序号对应的线程暂停

函数原型 ：

__int64 __stdcall HCMT_SetPauseEx(__int32 index);

参数定义 :

index:主副序号 注意:与HCMT_SetPause 不同的是,这个接口传递的是主副序号,可以单独暂停主或者副序号对应的线程

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的暂停绑定回调


HCMT_SetRecover

Help > 多线程模块[MT] >
HCMT_SetRecover

函数简介 :

设置窗口恢复

函数原型 ：

__int64 __stdcall HCMT_SetRecover(__int32 windowsIndex);

参数定义:

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的恢复绑定回调


HCMT_SetRecoverEx

Help > 多线程模块[MT] >
HCMT_SetRecoverEx

函数简介 :

设置主副序号对应的线程恢复

函数原型 ：

__int64 __stdcall HCMT_SetRecoverEx(__int32 index);

参数定义 :

index:主副序号 注意:与HCMT_SetRecover 不同的是,这个接口传递的是主副序号,可以单独恢复主或者副序号对应的线程

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的暂停绑定回调


HCMT_SetStop

Help > 多线程模块[MT] >
HCMT_SetStop

函数简介 :

设置窗口停止

函数原型 ：

__int64 __stdcall HCMT_SetStop(__int32 windowsIndex);

参数定义:

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的结束绑定回调


HCMT_IsRunning

Help > 多线程模块[MT] >
HCMT_IsRunning

函数简介 :

(第一第二)回调里面调用,检查当前线程是否结束

函数原型 ：

__int64 __stdcall HCMT_IsRunning();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCMT_IsPause

Help > 多线程模块[MT] >
HCMT_IsPause

函数简介 :

判断主副序号对应的线程是否是已被暂停状态

函数原型 ：

__int64 __stdcall HCMT_IsPause(__int32 index);

参数定义 :

index:主副序号 注意: 这个接口传递的是主副序号

返回值:

返回1:表示已经暂停

返回0:表示未被暂停

返回其他值:查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的暂停绑定回调


HCMT_IsStop

Help > 多线程模块[MT] >
HCMT_IsStop

函数简介 :

判断主副序号对应的线程是否是 已被结束状态

函数原型 ：

__int64 __stdcall HCMT_IsStop(__int32 index);

参数定义 :

index:主副序号 注意: 这个接口传递的是主副序号

返回值:

返回1:表示已经结束

返回其他值:查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.标志会在HCMT_Sleep接口中检查并触发对应的暂停绑定回调


HCMT_Sleep

Help > 多线程模块[MT] >
HCMT_Sleep

函数简介 :

设延迟函数,自带暂停/结束/恢复检查

函数原型 ：

__int64 __stdcall HCMT_Sleep(int mis);

参数定义:

mis:毫秒

返回值:

1:正常

2:线程结束

3.线程被暂停过

其他值:查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.检查随后触发HCMT_InitOperate设置的3个回调;理论上不能在HCMT_InitOperate设置的3个回调中调用,因为会导致无限调用自己(但是内部做了检测所以不会无限调用,也就是如果当前第一次已经检查到标志位并触发对应的绑定回调了,在回调中又再一次调用HCMT_Sleep,那么这一次的HCMT_Sleep只会正常休眠,并不继续检查了,防止无限调用);

3.其他回调均可以(无影响)

4.如果要内部检测状态机状态需要调用HCMT_StatusSleep


C++回调案例

Help > 多线程模块[MT] >
C++回调案例

=============================================================================功能演示参考测试工具 多线程模块

//typedef __int64(__stdcall *FUNTYPE)(__int32 windowsIndex);
//typedef
__int64(__stdcall *UIFUNTYPE)(__int32 windowsIndex, char *stepText, BOOL m_end1,
BOOL m_pause1, __int32 threadState1, BOOL m_end2, BOOL m_pause2, __int32
threadState2);
//typedef __int64(__stdcall *MSGFUNTYPE)(WPARAM wparam,,
LPARAM lparam);

#define 多开环境数量 31*2

多开环境数量 用 HCEnv_GetMaxWindowNum返回一个常数,可以自己写成一个常量

=============================================================================初始化列表和设置回调

// TODO: 在此添加额外的初始化
//
DWORD dwStyle = m_list.GetExtendedStyle();
//内部双缓冲，防止界面闪烁VC6未定义LVS_EX_DOUBLEBUFFER宏，使用者可以自定义，#define LVS_EX_DOUBLEBUFFER 0x00010000 LVS_EX_CHECKBOXES
m_list.SetExtendedStyle(dwStyle | LVS_EX_CHECKBOXES | LVS_REPORT | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER);
m_list.InsertColumn(0, L"序号", LVCFMT_CENTER, 45);
m_list.InsertColumn(1, L"账号", LVCFMT_CENTER, 50);
m_list.InsertColumn(2, L"密码", LVCFMT_LEFT, 50);//
m_list.InsertColumn(3, L"邮箱", LVCFMT_LEFT, 50);//
m_list.InsertColumn(4, L"人物信息", LVCFMT_LEFT, 100);//
m_list.InsertColumn(5, L"操作", LVCFMT_LEFT, 120);//
m_list.InsertColumn(6, L"状态信息", LVCFMT_LEFT, 500);//
// 初始化
for (int index = 1; index < 多开环境数量; index++)
{
CString info;
info.Format(L"%d", index);
auto in = m_list.InsertItem(index - 1, info);//序号
m_list.SetItemText(in, 1, g_账号信息Array[index].账号);
m_list.SetItemText(in, 2, g_账号信息Array[index].密码);
m_list.SetItemText(in, 3, g_账号信息Array[index].邮箱);
info.Format(L"%s,%d (%0.2f,%0.2f,%0.2f)", g_账号信息Array[index].名字, g_账号信息Array[index].等级*index, g_账号信息Array[index].fx, g_账号信息Array[index].fy, g_账号信息Array[index].fz);
m_list.SetItemText(in, 4, info);
m_list.SetItemText(in, 5, L"");
m_list.SetItemText(in, 6, L"");
}
//
auto ret1 = HCMT_InitProcess((int)Chit2TestDlg::g_pChit2TestDlg->m_hWnd, UIFun, LoginFun, FirstFun, SecondFun, EndFun, RestartFun);
auto ret2 = HCMT_InitOperate(EndBindFun, PauseBindFun, RecoverBindFun);
CString info; info.Format(L"1.HDMT_InitProcess->Ret:%lld\r\n2.HCMT_InitOperate->Ret:%lld", ret1,ret2);
m_logEdit.SetWindowText(info);

=============================================================================登录回调

__int64 __stdcall LoginFun(__int32 windowsIndex)
{
HDbgPrintf_Tools("LoginFun[%d]---begin", windowsIndex);
HCMT_MsgStepText(windowsIndex, "登录中");
HCMT_Sleep(2000);
HDbgPrintf_Tools("LoginFun[%d]---end", windowsIndex);
return 1;
}

=============================================================================主执行回调

__int64 __stdcall FirstFun(__int32
windowsIndex)
{
int index = 0;
while
(HCMT_IsRunning())
{
index++;
HDbgPrintf_Tools("FirstFun[%d]:%d",
windowsIndex, index);
auto ret =                                                           HCMT_Sleep(1000); if (ret ==
RET_结束)break;
}
return 1;
}

=============================================================================副执行回调

__int64 __stdcall SecondFun(__int32
windowsIndex)
{
int index = 0;
while
(HCMT_IsRunning())
{
index++;
HDbgPrintf_Tools("SecondFun[%d]:%d",
windowsIndex, index);
auto ret =                                                           HCMT_Sleep(1000); if (ret ==
RET_结束)break;
}
return 1;
}

=============================================================================结束回调

__int64 __stdcall EndFun(__int32 windowsIndex)
{
HDbgPrintf_Tools("EndFun[%d]->关闭截图", windowsIndex);
HDbgPrintf_Tools("EndFun[%d]->解绑后台", windowsIndex);
HDbgPrintf_Tools("EndFun[%d]->卸载环境", windowsIndex);
HCMT_Sleep(2000);
return 1;
}

=============================================================================重启前回调

__int64 __stdcall RestartFun(__int32
windowsIndex)
{
HDbgPrintf_Tools("RestartFun[%d]->关闭绑定游戏进程",
windowsIndex);
HCMT_MsgStepText(windowsIndex,
"关闭绑定游戏进程");
HCMT_Sleep(2000);
return 1;
}

=============================================================================结束绑定回调

//typedef __int64(__stdcall *FUNTYPE)(__int32 index);
__int64 __stdcall EndBindFun(__int32
index)
{
HDbgPrintf_Tools("EndBindFun[%d]->解绑后台",
index);
if (index >= 多开环境数量) index = index -
多开环境数量;
//这里最好还需要判断序号
是主次
//因为后台绑定相关接口调用一次就行了
HCMT_MsgStepText(index,
"解绑后台");
HCMT_Sleep(1000);
return 1;
}

=============================================================================暂停绑定回调

__int64 __stdcall PauseBindFun(__int32
index)
{
HDbgPrintf_Tools("PauseBindFun[%d]->暂停后台",
index);
if (index >= 多开环境数量) index = index -
多开环境数量;
//这里最好还需要判断序号
是主次
//因为后台绑定相关接口调用一次就行了
HCMT_MsgStepText(index,
"暂停后台");
HCMT_Sleep(1000);
return 1;
}

=============================================================================恢复绑定回调

__int64 __stdcall RecoverBindFun(__int32
index)
{
HDbgPrintf_Tools("RecoverBindFun[%d]->恢复后台",
index);
if (index >= 多开环境数量)index = index -
多开环境数量;
//这里最好还需要判断序号
是主次
//因为后台绑定相关接口调用一次就行了
HCMT_MsgStepText(index,
"恢复后台");
HCMT_Sleep(1000);
return 1;
}

=============================================================================UI回调

//自定义结构体根据自行修改
typedef struct 账号信息
{
//其他信息
WCHAR
账号[MAX_PATH];
WCHAR 密码[MAX_PATH];
WCHAR
邮箱[MAX_PATH];
WCHAR 备注[MAX_PATH];
WCHAR
名字[MAX_PATH];
//线程状态信息
WCHAR 状态信息[MAX_PATH];//主
副
//人物信息
int 等级;
float fx, fy,
fz;
//
账号信息()
{
ZeroMemory(名字,
MAX_PATH);
wcscpy_s(名字, MAX_PATH, L"HD多线程");
等级 =
99; fx = 1.0f; fy = 2.0f; fz = 3.0f;
ZeroMemory(账号,
MAX_PATH);
wcscpy_s(账号, MAX_PATH,
L"882724064");
ZeroMemory(密码,
MAX_PATH);
wcscpy_s(密码, MAX_PATH,
L"1809096");
ZeroMemory(邮箱,
MAX_PATH);
wcscpy_s(邮箱, MAX_PATH, L"382856600@qq.com");
ZeroMemory(备注,
MAX_PATH);
wcscpy_s(备注, MAX_PATH,
L"HD多线程测试");
}
}账号信息;

static 账号信息 g_账号信息Array[多开环境数量];

  //UI回调
__int64 __stdcall UIFun(__int32 windowsIndex, char *stepText, BOOL m_end1,
BOOL m_pause1, __int32 threadState1, BOOL m_end2, BOOL m_pause2, __int32
threadState2)
{
if (Chit2TestDlg::g_pChit2TestDlg == NULL) return
0;
CListCtrl* plist =
&(Chit2TestDlg::g_pChit2TestDlg->m_hDialog_多线程.m_list);
if
(plist == NULL) return 0;
if (stepText)
{
int
len = strlen(stepText);
if (len >
0)
{
CString infoW =
Tool::AsciiToUnicode(stepText).c_str();
plist->SetItemText(windowsIndex
- 1, 5, infoW);
}
}
CString
info;
info.Format(L"[主]->E:%d P:%d S:%s | [次]->E:%d P:%d S:%s ",
m_end1,
m_pause1,Tool::AsciiToUnicode(HCMT_GetStateString(threadState1)).c_str(),
m_end2, m_pause2,
Tool::AsciiToUnicode(HCMT_GetStateString(threadState2)).c_str());
plist->SetItemText(windowsIndex
- 1, 6, info);
return 1;
}

=============================================================================


多线程状态机

Help > 多线程模块[MT] >
多线程状态机

该模块需要配合多线程模块接口一起使用！！

该模块需要配合多线程模块接口一起使用！！

该模块需要配合多线程模块接口一起使用！！

使用该模块接口 记得初始化多线程模块！！

使用该模块接口 记得初始化多线程模块！！

使用该模块接口 记得初始化多线程模块！！


HCMT_StartStatus

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_StartStatus

函数简介 :

开启状态机

函数原型 ：

__int64 __stdcall HCMT_StartStatus();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用 配合多线程模块一起使用

2.一般在执行回调或者检查回调 调用就行 不需要都开启(内部有检测是否开启)

3.支持多线程,但是不建议,执行回调中调用就行了


HCMT_AddStatus

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_AddStatus

函数简介 :

添加状态机(状态值和状态回调进行映射绑定)

函数原型 ：

__int64 __stdcall HCMT_AddStatus(__int64 funCallBack, __int64 lparam, BOOL bEnable, __int32 statusType);

参数定义:

funCallBack:状态回调函数 类型: typedef __int64(__stdcall *HCMTStatusFunType)(__int32 windowsIndex,__int64 lparam);

lparam:额外参数，可以传递指针或者8字节数据，这个用户自定义参数会在触发回调的时候传递给回调的第二个形参

bEnable:状态是否有效，无效是不会触发状态回调的，即便是检索到这个状态的时候,也不会触发回调,只会不停判断

statusType:状态值，自定义值 (内置:-1表示无状态，不要重复指定) 大小决定优先级

《《《 特别注意:状态值的大小也表示优先级,优先级越高的回调,享有最先执行权限！！！！ 》》》

如:登录回调>死亡回调>买药回调>限时副本回调>主线回调

优先级大小策略:

1.优先级用户自行定义大小(-1表示没有,不要重复)建议从0开始 1 2 3...依次递增

2.优先级高回调的可以打断或者中断优先级低的回调,当优先级高的回调执行完毕,会继续执行优先级低的回调

2.如果是优先级一样的回调,只有执行完第一个,才能执行第二个.

3.优先级低的回调是不能打断优先级高的回调,此时如果想执行优先级低的回调,那么必须等待优先级高的回调执行完毕后,方可执行优先级低的回调

4.回调内部如果有循环流程,应加入退出循环条件,不要死循环

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用 配合多线程模块一起使用

2.必须在初始化的时候就添加全部可用的状态值 如:窗口初始化完成接口中
3.这个接口不能再多线程调用
4.如果需要多线程调用就自己加锁
5.不支持多线程


HCMT_EnableStatus

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_EnableStatus

函数简介 :

全局(全部窗口序号)禁用或者开启 状态

函数原型 ：

__int64 __stdcall HCMT_EnableStatus(__int32 statusType, BOOL bEnable);

参数定义:

statusType:自定义的状态值

bEnable:是否有效

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用 配合多线程模块一起使用

2.操作的状态值,必须先调用HCMT_AddStatus 添加状态,否则无效

3.支持多线程


HCMT_ChangeStatus

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_ChangeStatus

函数简介 :

改变状态机状态

函数原型 ：

__int64 __stdcall HCMT_ChangeStatus(__int32 statusType);

参数定义:

statusType:自定义的状态值

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate/HCMT_StartStatus后才能调用 配合多线程模块一起使用

2.操作的状态值,必须先调用HCMT_AddStatus 添加状态,否则无效

3.支持多线程,一般在检测回调中调用

4.只能改变比之前优先级低的优先级

《《《特别注意:状态值的大小也表示优先级,优先级越高的回调,享有最先执行权限！！！！ 》》》

如:登录回调>死亡回调>买药回调>限时副本回调>主线回调

优先级大小策略:

1.优先级用户自行定义大小(-1表示没有,不要重复)建议从0开始 1 2 3...依次递增

2.优先级高回调的可以打断或者中断优先级低的回调,当优先级高的回调执行完毕,会继续执行优先级低的回调

2.如果是优先级一样的回调,只有执行完第一个,才能执行第二个.

3.优先级低的回调是不能打断优先级高的回调,此时如果想执行优先级低的回调,那么必须等待优先级高的回调执行完毕后,方可执行优先级低的回调

4.回调内部如果有循环流程,应加入退出循环条件,不要死循环


HCMT_RetraceStatus

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_RetraceStatus

函数简介 :

回溯状态

函数原型 ：

__int64 __stdcall HCMT_RetraceStatus(BOOL bClear = FALSE);

参数定义:

bClear:真表示清除之前的栈缓存同时改变当前状态位-1(空)
bClear:假表示清除当前栈顶的状态,相同的全部删除,同时改变当前状态为清除后的栈顶的那个状态

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate/HCMT_StartStatus后才能调用 配合多线程模块一起使用

2.操作的状态值,必须先调用HCMT_AddStatus 添加状态,否则无效

3.支持多线程,一般在检测回调中调用

4.只能改变比之前优先级低的优先级

《《《特别注意:状态值的大小也表示优先级,优先级越高的回调,享有最先执行权限！！！！ 》》》

如:登录回调>死亡回调>买药回调>限时副本回调>主线回调

优先级大小策略:

1.优先级用户自行定义大小(-1表示没有,不要重复)建议从0开始 1 2 3...依次递增

2.优先级高回调的可以打断或者中断优先级低的回调,当优先级高的回调执行完毕,会继续执行优先级低的回调

2.如果是优先级一样的回调,只有执行完第一个,才能执行第二个.

3.优先级低的回调是不能打断优先级高的回调,此时如果想执行优先级低的回调,那么必须等待优先级高的回调执行完毕后,方可执行优先级低的回调

4.回调内部如果有循环流程,应加入退出循环条件,不要死循环


HCMT_IsStatus

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_IsStatus

函数简介 :

当前状态机的状态在回调中是否有效

函数原型 ：

__int64 __stdcall HCMT_IsStatus();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate/HCMT_StartStatus后才能调用 配合多线程模块一起使用

2.用在状态回调中,检索是否是当前状态
3.在设置的状态回调函数中循环调用检查当前窗口序号的状态类型是否是当前的映射的回调状态类型
4.支持多线程

C++例子:

=========================================================================

__int64 __stdcall HMT::登录状态回调(__int32 windowsIndex, __int64 lparam)
{
while (HCMT_IsStatus())
{
auto ret = HCMT_StatusSleep(1000);
HDbgPrintf_Command("HCMT_StatusSleep:%lld", ret);
HCMT_MsgStepText(windowsIndex, "正在登录中...");
}
return 1;
}

=========================================================================


HCMT_StatusSleep

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_StatusSleep

函数简介 :

状态机延迟函数 (自带暂停/结束/恢复/状态机)

函数原型 ：

__int64 __stdcall HCMT_StatusSleep(int mis);

参数定义:

mis:延迟毫秒

返回值:

1:正常

2:线程结束

3.线程被暂停过

4.状态机当前状态被改变

其他值:查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate/HCMT_StartStatus后才能调用 配合多线程模块一起使用
2.支持多线程 自带暂停/结束/恢复/状态机

3.注意区别于HCMT_Sleep这个接口是没法检索状态机状态的

C++例子:

=========================================================================

__int64 __stdcall HMT::登录状态回调(__int32 windowsIndex,
__int64 lparam)
{
while
(HCMT_IsStatus())
{
auto ret = HCMT_StatusSleep(1000);// <<<<<<<<-----------------------------这里能及时返回(当我们状态变动的时候) 返回值:4 表示状态变动
HDbgPrintf_Command("HCMT_StatusSleep:%lld",
ret);
HCMT_MsgStepText(windowsIndex,
"正在登录中...");
}
return 1;
}

=========================================================================


HCMT_GetStatus

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_GetStatus

函数简介 :

获取状态机状态

函数原型 ：

__int64 __stdcall HCMT_GetStatus(__int32 windowsIndex);

参数定义:

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate/HCMT_StartStatus后才能调用 配合多线程模块一起使用

2.支持多线程,一般在UI回调中调用,获取状态值并显示到控件上


HCMT_SleepEx

Help > 多线程模块[MT] > 多线程状态机 >
HCMT_SleepEx

函数简介 :

设延迟函数,自带暂停/结束/恢复检查/状态机状态(可选)(扩展版本)

函数原型 ：

__int64 __stdcall HCMT_SleepEx(int mis,BOOL bStatus = FALSE);

参数定义:

mis:毫秒

bStatus:是否状态机回调,默认为FALSE,如果在状态机回调中调用,请置为真/TURE

返回值:

1:正常

2:线程结束

3.线程被暂停过

4.状态改变了

其他值:查看返回值表 HD返回值表

备注:

1.HDMT_InitProcess/HCMT_InitOperate后才能调用

2.仅仅设置的是标志位,不会堵塞线程

3.检查随后触发HCMT_InitOperate设置的3个回调;理论上不能在HCMT_InitOperate设置的3个回调中调用,因为会导致无限调用自己(但是内部做了检测所以不会无限调用,也就是如果当前第一次已经检查到标志位并触发对应的绑定回调了,在回调中又再一次调用HCMT_Sleep,那么这一次的HCMT_Sleep只会正常休眠,并不继续检查了,防止无限调用);

3.其他回调均可以(无影响)

4.如果要内部检测状态机状态需要调用HCMT_StatusSleep


HC_CALL

Help > ()通用模块 >
HC_CALL

函数简介 :

通用CALL(适合X64),支持0-8个参数

函数原型 :

__int64 __stdcall HC_CALL(__int32 窗口序号, __int64 CALL地址, __int64 rcx = 0, __int64 rdx = 0, __int64 r8 = 0, __int64 r9 = 0, __int64 lparam5 = 0, __int64 lparam6 = 0, __int64 lparam7 = 0, __int64 lparam8 = 0, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 （从1开始）

CALL地址:CALL地址

rcx:CALL参数

rdx:CALL参数

r8:CALL参数

r9:CALL参数

l5:CALL参数

l6:CALL参数

l7:CALL参数

l8:CALL参数

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

如果需要更多参数传递请联系作者


HC_CALLX86

Help > ()通用模块 >
HC_CALLX86

函数简介 :

通用CALL(适合X86),支持0到8个参数

函数原型 :

__int64 __stdcall HC_CALLX86(__int32 窗口序号, __int32 CALL地址, __int32 ecx = 0,__int32 lparam1 = 0, __int32 lparam2 = 0, __int32 lparam3 = 0, __int32 lparam4 = 0, __int32 lparam5 = 0, __int32 lparam6 = 0, __int32 lparam7 = 0, __int32 lparam8 = 0, __int32 lparamNum = 0, __int32 addEsp = -1, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 （从1开始）

call地址:4字节接口地址

ecx :对象参数

lparam1-lparam8:从第一个到第八个参数

lparamNum:当前接口地址的传递的参数数量(支持0到8个参数)

addEsp:如果调用的接口地址是内平栈就置为-1,如果是外平栈就设置为参数数量(lparamNum)*0x4

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

如果需要更多参数传递请联系作者


HC_HookMainThread

Help > ()通用模块 >
HC_HookMainThread

函数简介 :

挂接主线程

函数原型 :

__int64 __stdcall HC_HookMainThread(__int32 窗口序号, __int64 窗口句柄);

参数定义:

窗口序号:窗口序号 (从1开始)

窗口句柄:窗口句柄

返回值:

查看返回值表 HD返回值表

备注:

无


ShellCode模块(SH)

Help >
ShellCode模块(SH)

ShellCode模块

1.支持汇编转机器码

2.机器码注入到指定进程

3.运行shellcode

HD库之shellcode相关操作

https://www.bilibili.com/video/BV1d94y1V7Vk/?spm_id_from=333.999.0.0&vd_source=62d93c95eb96c13685513f7775af114a

PS:最好复制到浏览器打开


HCSH_GetShellCode

Help > ShellCode模块(SH) >
HCSH_GetShellCode

函数简介:

汇编文本转换机器码

函数原型 ：

__int64 __stdcall HCSH_GetShellCode(__int32 模式, char* 汇编文本, BYTE *机器码缓冲区, __int32 机器码缓冲区大小, __int64 返回机器码字节大小的地址, __int64 错误1变量的地址, __int64 错误2变量的地址);

参数定义:

模式：32位（4）/64位（8）

汇编文本：缓冲区字符串地址

机器码缓冲区：用来存转换的机器码缓冲区(单位:字节)

机器码缓冲区大小:机器码缓冲区大小(单位:字节)

返回机器码字节大小的地址：用来存转换的机器码缓冲区的大小变量的地址 注意是传递变量的地址,在CALL内部写入值(单位:字节)

错误1：返回错误1(第几行有错误) 注意是传递变量的地址,在CALL内部写入值

错误2：返回错误2(具体错误描述) 注意是传递变量的地址,在CALL内部写入值

返回值:

查看返回值表 HD返回值表

备注:

无


HCSH_WriteShellCode

Help > ShellCode模块(SH) >
HCSH_WriteShellCode

函数简介 :

机器码写入到进程

函数原型 ：

__int64 __stdcall HCSH_WriteShellCode(__int32 pid, BYTE *机器码缓冲区, __int32 机器码缓冲区大小, __int64 返回变量的地址);

参数定义:

pid:进程pid

机器码缓冲区：机器码缓冲区

机器码缓冲区大小：机器码缓冲区大小

返回地址：返回写入的地址 注意是传递变量的地址,在CALL内部写入值

返回值:

查看返回值表 HD返回值表

备注:

这里执行用的是HD驱动来申请和写入这个机器码,注意要把HD驱动安装好

拿到了写入地址可以使用HD驱动创建远线程来执行


LUA模块(LUA)

Help >
LUA模块(LUA)

LUA模块

1.支持LUA自定义接口,并按照函数名调用

2.支持在LUA中使用C语言语法

3.提供了内存读写和模块获取(可以自定义数据获取接口)和json格式化库(用于和中控通讯)

4.运行效率接近C语言(不是普通LUA库)

HD库之LUA模块功能介绍(一)

https://www.bilibili.com/video/BV1z84y1X7Af/?spm_id_from=333.999.0.0&vd_source=62d93c95eb96c13685513f7775af114a

HD库之LUA模块功能介绍(二)

https://www.bilibili.com/video/BV1Gj411v7Lk/?spm_id_from=333.999.0.0

HD库之LUA模块功能介绍(三)

https://www.bilibili.com/video/BV1yj411a75o/?spm_id_from=333.999.0.0

PS:最好复制到浏览器打开


HCLUA_ReadFile

Help > LUA模块(LUA) >
HCLUA_ReadFile

函数简介：

执行或加载LUA文件

函数原型 ：

__int64 __stdcall HCLUA_ReadFile(__int32 窗口序号, char*文件名路径, __int32 LUA标识符, BOOL 是否执行 = FALSE, BOOL 是否需要拿到返回值 = FALSE, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

文件名路径：LUA文件名路径

LUA标识符：一个任意整数的标识(不要重复就行)

是否执行：是否直接执行LUA文件

是否需要拿到返回值:是否需要拿到返回值

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

LUA标识符:当【是否需要拿到返回值】参数为真的时候,用作线程的标识符,方便主动退出线程，标识符规则:不要太大了 {0到100}以内就行
是否执行:真表示执行并加载LUA(比如:注入一些自定义LUA接口同时还能执行LUA),反之只是加载LUA文件(比如:注入一些自定义LUA接口)
是否需要拿到返回值:真表示堵塞直到LUA文件执行完毕并获取返回值，反之表示开启一根线程执行(无法拿到返回值,可以在LUA文件中做一些耗时的操作)


HCLUA_CloseLua

Help > LUA模块(LUA) >
HCLUA_CloseLua

函数简介 :

关闭LUA线程

函数原型 ：

__int64 __stdcall HCLUA_CloseLua(__int32 窗口序号, __int32 LUA标识符 = -1);

参数定义:

窗口序号:窗口序号 (从1开始)

LUA标识符:通过标识符来停止LUA线程

返回值:

查看返回值表 HD返回值表

备注:

LUA标识符:调用【HCLUA_ReadFile】接口指定的【LUA标识符】参数,一一对应,-1表示全部LUA线程退出！！！


HCLUA_ExcuteCall

Help > LUA模块(LUA) >
HCLUA_ExcuteCall

函数简介 :

执行被注册过的LUA函数

函数原型 ：

__int64 __stdcall HCLUA_ExcuteCall (__int32 窗口序号, char*函数名, __int32 参数数量 = 0, __int64 rcx = 0, __int64 rdx = 0, __int64 r8 = 0, __int64 r9 = 0, __int64 lparam5 = 0, __int64 lparam6 = 0, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

函数名：被注册过的函数名

参数数量 ：参数数量

rcx:CALL参数

rdx:CALL参数

r8:CALL参数

r9:CALL参数

l5:CALL参数

l6:CALL参数

是否主线程调用：是否主线程调用

返回值:

查看返回值表 HD返回值表

备注:

json:
{"error":0,"ret":AAA,"data":XXX}


HOOK模块(HK)

Help >
HOOK模块(HK)

内置插件模块

各种HOOK


API HOOK

Help > HOOK模块(HK) >
API HOOK

封包API相关HOOK接口


HDHK_InterceptApi

Help > HOOK模块(HK) > API HOOK >
HDHK_InterceptApi

函数简介 :

设置拦截API(内置插件)X86X64

函数原型 :

__int64 HDHK_InterceptApi(__int32 窗口序号, char* 模块名字, char* 拦截接口名字, __int32 破坏字节数, __int64 回调地址, __int64 附加参数, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

模块名字:接口所在的dll模块名字

拦截接口名字:接口名字 如:send sendto recv recvfrom 注意是小写字母！

破坏字节数: [ X86->send recv sendto recvfrom是5 ] [ X64->send recv是5 sendto recvfrom是7]

回调地址:遵循下面回调函数类型

附加参数:自定义参数,此参数会传递给回调函数

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

目前仅支持4个API接口拦截:"send" "sendto" "recv" "recvfrom" 所在模块:"ws2_32.dll"

回调写法:

注意版本对应！！

==========================================================================================================================

参数解析:

rcx:套接字socket

rdx:缓冲区地址(这个地址是原生的)

r8:缓冲区大小(这个大小是原生缓冲区地址的大小)

r9:对应的flag参数

rbp:对应调用拦截接口时候的rbp寄存器值(一般我们不用修改)

rsp:调用原生接口对应的rsp寄存器值(通过这个值可以拿到任意其他堆栈值)

buffer:维护的内部缓冲区,发包收包的内容全在这个里面,修改包内容的时候,修改这个缓冲区内容就行,并把这个维护的缓冲区地址当做rdx传递过去(参考:修改回调返回方法)

bufferMaxSize:维护的内部缓冲区最大大小

bufferRealSize:维护的内部缓冲区中真实有效的字节大小(一般就是拦截的包内容大小)

l5:表示端口

l6:表示IP网络字节序 如:0x0100007F 表示IP"127.0.0.1"

==========================================================================================================================

"send":可以修改包内容 可以修改包大小

X86 X64：

typedef __int32(__stdcall *HandleCallBackFunType_Send)(__int32 窗口序号, __int32 插件序号, __int64 rcxOrl1, __int64 rdxOrl2, __int64 r8Orl3, __int64 r9Orl4, __int64 rbp, __int64 rsp, __int64 rip, char*buffer, __int32 bufferMaxSize, __int32 bufferRealSize, __int64 lparam);//返回1表示要修改

==========================================================================================================================

"sendto":可以修改包内容 可以修改包大小

X86 X64：

typedef __int32(__stdcall *HandleCallBackFunType_SendTo)(__int32 窗口序号, __int32 插件序号, __int64 rcxOrl1, __int64 rdxOrl2, __int64 r8Orl3, __int64 r9Orl4, __int64 l5, __int64 l6, __int64 rbp, __int64 rsp, __int64 rip, char*buffer, __int32 bufferMaxSize, __int32 bufferRealSize, __int64 lparam);//返回1表示要修改

==========================================================================================================================

"recv": 可以修改包内容 不能修改包大小

X86 X64：

typedef __int32(__stdcall *HandleCallBackFunType_Recv )(__int32 窗口序号, __int32 插件序号, __int64 rcxOrl1, __int64 rdxOrl2, __int64 r8Orl3, __int64 r9Orl4, __int64 rbp, __int64 rsp, __int64 rip, char*buffer, __int32 bufferMaxSize, __int32 bufferRealSize, __int64 lparam);//返回1表示要修改

==========================================================================================================================

"recvfrom":可以修改包内容 不能修改包大小

X86 X64：

typedef __int32(__stdcall *HandleCallBackFunType_RecvFrom)(__int32 窗口序号, __int32 插件序号, __int64 rcxOrl1, __int64 rdxOrl2, __int64 r8Orl3, __int64 r9Orl4, __int64 l5, __int64 l6, __int64 rbp, __int64 rsp, __int64 rip, char*buffer, __int32 bufferMaxSize, __int32 bufferRealSize, __int64 lparam);//返回1表示要修改

==========================================================================================================================

回调内修改写法请转至》》》》》 修改回调返回方法《《《《《《


HDHK_PauseInterceptApi

Help > HOOK模块(HK) > API HOOK >
HDHK_PauseInterceptApi

函数简介 :

暂停拦截API(内置插件)X86X64

函数原型 :

__int64 HDHK_PauseInterceptApi(__int32 窗口序号, char* 模块名字, char* 拦截接口名字, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

模块名字:接口所在的dll模块名字

拦截接口名字:接口名字 如:send sendto recv recvfrom 注意是小写字母！

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

目前仅支持4个API接口拦截:"send" "sendto" "recv" "recvfrom" 所在模块:"ws2_32.dll"


HDHK_RecoverInterceptApi

Help > HOOK模块(HK) > API HOOK >
HDHK_RecoverInterceptApi

函数简介 :

恢复拦截API(内置插件)X86X64

函数原型 :

__int64 HDHK_RecoverInterceptApi(__int32 窗口序号, char* 模块名字, char* 拦截接口名字, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

模块名字:接口所在的dll模块名字

拦截接口名字:接口名字 如:send sendto recv recvfrom 注意是小写字母！

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

目前仅支持4个API接口拦截:"send" "sendto" "recv" "recvfrom" 所在模块:"ws2_32.dll"


HDHK_UnInterceptApi

Help > HOOK模块(HK) > API HOOK >
HDHK_UnInterceptApi

函数简介 :

卸载拦截API(内置插件)X86X64

函数原型 :

__int64 HDHK_UnInterceptApi(__int32 窗口序号, char* 模块名字, char* 拦截接口名字, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

模块名字:接口所在的dll模块名字

拦截接口名字:接口名字 如:send sendto recv recvfrom 注意是小写字母！

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

目前仅支持4个API接口拦截:"send" "sendto" "recv" "recvfrom" 所在模块:"ws2_32.dll"


HDHK_SendApi

Help > HOOK模块(HK) > API HOOK >
HDHK_SendApi

函数简介 :

调用SendAPI(目标进程中调用) X86X64

函数原型 :

__int64 HDHK_SendApi(__int32 窗口序号, __int32 socket, BYTE *buffer, __int32 bufferSize, __int32 flag, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

socket:套接字socket

buffer:字节缓冲区地址

bufferSize:缓冲区字节大小

flag:send的第4个参数flag

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

无


HDHK_SendToApi

Help > HOOK模块(HK) > API HOOK >
HDHK_SendToApi

函数简介 :

调用SendtoAPI(目标进程中调用) X86X64

函数原型 :

__int64 HDHK_SendToApi(__int32 窗口序号, __int32 socket, BYTE *buffer, __int32 bufferSize, __int32 flag, __int32 port, __int32 ip, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

socket:套接字socket

buffer:字节缓冲区地址

bufferSize:缓冲区字节大小

flag:send的第4个参数flag

port:目标地址端口

ip:IP网络字节序,需要把字符串 如:"127.0.0.1"转为0x0100007F整数

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

无


API修改回调返回方法(X86)

Help > HOOK模块(HK) > API HOOK >
API修改回调返回方法(X86)

X86:

对应插件版本调用以下接口修改参数:

__int64 HDHK_ SetProcessCallBackLparamSendX86(__int32 窗口序号, __int32 l1, __int32 l2, __int32 l3, __int32 l4, __int32 ebp, __int32 esp, __int32 eip, __int32 mark );//设置回调函数返回值 给目标进程

__int64 HDHK_ SetProcessCallBackLparamRecvX86(__int32 窗口序号, __int32 l1, __int32 l2, __int32 l3, __int32 l4, __int32 ebp, __int32 esp, __int32 eip, __int32 mark);//设置回调函数返回值 给目标进程

__int64 HDHK_ SetProcessCallBackLparamSendToX86(__int32 窗口序号, __int32 l1, __int32 l2, __int32 l3, __int32 l4, __int32 l5, __int32 l6, __int32 ebp, __int32 esp, __int32 eip, __int32 mark);//设置回调函数返回值 给目标进程 l5端口 l6地址

__int64 HDHK_ SetProcessCallBackLparamRecvFromX86(__int32 窗口序号, __int32 l1, __int32 l2, __int32 l3, __int32 l4, __int32 l5, __int32 l6, __int32 ebp, __int32 esp, __int32 eip, __int32 mark);//设置回调函数返回值 给目标进程 l5端口 l6地址

备注:

参数

窗口序号:窗口序号

一一对应传递:l1 l2 l3 l4 l5 l6 rbp(一般不修改) esp(一般不修改) eip(一般不修改,设置的跳回地址)

mark:修改相关寄存器值和其他值的掩码值(2的倍数) ,修改多个值用| (或)连接 如:1|2|4 表示调用对应的修改参数接口的l1 l2 l3有效传递并修改

1(l1 需要修改) 第一个参数

2(l2 需要修改) 如果是缓冲区,那么指定对应回调函数的参数传递过来的 char*buffer 这个值 第二个参数

4 (l3 需要修改) 第三个参数

8 (l4 需要修改) 第四个参数

16 (ebp 需要修改)

32 (esp 需要修改)

64 (eip 需要修改)

128 (l5 端口需要修改)

256(l6 IP地址需要修改) 整数型的网络字节序 如:"127.0.0.1" 那么就需要写成:0x0100007F

返回值

0:表示不修改并且走原有流程

1:表示修改值并且走原有流程->针对拦截包并且包长度一致使用这个模式

2:表示修改值并且不走原有流程,而是走自己的流程->针对拦截包并且包长度不一致使用这个模式

========================================================================================================================================================================================

如：sendto回调+修改

__int32(__stdcallHandleCallBackFun_Sendto )(__int32 窗口序号, __int32 插件序号, __int64 rcxOrl1, __int64 rdxOrl2, __int64 r8Orl3, __int64 r9Orl4, __int64 l5, __int64 l6, __int64 rbp, __int64 rsp, __int64 rip, char*buffer, __int32 bufferMaxSize, __int32 bufferRealSize, __int32 lparam)//返回1或2表示要修改
{

//参数打印
HDbgPrintf_HOOK("触发Sendto回调->窗口序号:%d 插件序号:%d rcxOrl1:%llX rdxOrl2:%llX r8Orl3 ::%llX r9Orl4:%llX l5::%llX l6:%llX rbp:%llX rsp:%llX rip:%llX bufferRealSize:%d lparam:%d",
窗口序号, 插件序号,
rcxOrl1, rdxOrl2, r8Orl3, r9Orl4 ,
l5, l6,
rbp, rsp, rip,
bufferRealSize,
lparam
);

//IP地址转换
//struct in_addr; in_addr.S_un.S_addr
in_addr ipAddr; ipAddr.S_un.S_addr = ((ULONG)l6);
char str[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &ipAddr, str, INET_ADDRSTRLEN); //传递过来的网络IP字节序(0x0100007f)转成字符串形式"127.0.0.1"
HDbgPrintf_HOOK("目标端口:%lld 目标地址:%s", l5, str);

//。。。。。中间处理自己的逻辑(千万不要做任何耗时的功能)或者开一个线程处理

//。。。。。

//。。。。。

//最后调用修改接口修改对应的寄存器值和其他值
return HDHK_ SetProcessCallBackLparam_SendToX86(窗口序号, rcxOrl1,rdxOrl2,r8Orl3,r9Orl4,l5,l6,rbp,rsp,rip,0) ;//这个接口成功会返回1
}

========================================================================================================================================================================================


API修改回调返回方法(X64)

Help > HOOK模块(HK) > API HOOK >
API修改回调返回方法(X64)

X64:

对应插件版本调用以下接口修改参数:

__int64 HDHK_ SetProcessCallBackLparamSendX64(__int32 窗口序号, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 rbp, __int64 rsp, __int64 rip, __int32 mark);//设置回调函数返回值 给目标进程

__int64 HDHK_ SetProcessCallBackLparamRecvX64(__int32 窗口序号, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 rbp, __int64 rsp, __int64 rip, __int32 mark);//设置回调函数返回值 给目标进程

__int64 HDHK_ SetProcessCallBackLparamSendToX64(__int32 窗口序号, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 l5, __int64 l6, __int64 rbp, __int64 rsp, __int64 rip, __int32 mark);//设置回调函数返回值 给目标进程 l5端口 l6地址

__int64 HDHK_ SetProcessCallBackLparamRecvFromX64(__int32 窗口序号, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 l5, __int64 l6, __int64 rbp, __int64 rsp, __int64 rip, __int32 mark);//设置回调函数返回值 给目标进程 l5端口 l6地址

备注:

参数

窗口序号:窗口序号

一一对应传递:rcx rdx r8 r9 l5 l6 rbp(一般不修改) rsp(一般不修改) rip(一般不修改,设置的跳回地址)

mark:修改相关寄存器值和其他值的掩码值(2的倍数) ,修改多个值用| (或)连接 如:1|2|4 表示调用对应的修改参数接口的rcx rdx r8有效传递并修改

1(rcx 需要修改)

2(rdx 需要修改) 如果是缓冲区,那么指定对应回调函数的参数传递过来的 char*buffer 这个值

4 (r8 需要修改)

8 (r9 需要修改)

16 (rbp 需要修改)

32 (rsp 需要修改)

64 (rip 需要修改)

128 (l5 端口需要修改)

256(l6 IP地址需要修改) 整数型的网络字节序 如:"127.0.0.1" 那么就需要写成:0x0100007F

返回值

0:表示不修改并且走原有流程

1:表示修改值并且走原有流程->针对拦截包并且包长度一致使用这个模式

2:表示修改值并且不走原有流程,而是走自己的流程->针对拦截包并且包长度不一致使用这个模式

========================================================================================================================================================================================

如：sendto回调+修改

__int32(__stdcall HandleCallBackFun_Sendto )(__int32 窗口序号, __int32 插件序号, __int64 rcxOrl1, __int64 rdxOrl2, __int64 r8Orl3, __int64 r9Orl4, __int64 l5, __int64 l6, __int64 rbp, __int64 rsp, __int64 rip, char*buffer, __int32 bufferMaxSize, __int32 bufferRealSize, __int32 lparam)//返回1或2表示要修改
{

//参数打印
HDbgPrintf_HOOK("触发Sendto回调->窗口序号:%d 插件序号:%d rcxOrl1:%llX rdxOrl2:%llXr8Orl3 ::%llX r9Orl4:%llX l5::%llX l6:%llX rbp:%llX rsp:%llX rip:%llX bufferRealSize:%d lparam:%d",
窗口序号, 插件序号,
rcx, rdx, r8, r9,
l5, l6,
rbp, rsp, rip,
bufferRealSize,
lparam
);

//IP地址转换
//struct in_addr; in_addr.S_un.S_addr
in_addr ipAddr; ipAddr.S_un.S_addr = ((ULONG)l6);
char str[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &ipAddr, str, INET_ADDRSTRLEN);//传递过来的网络IP字节序(0x0100007f)转成字符串形式"127.0.0.1"
HDbgPrintf_HOOK("目标端口:%lld 目标地址:%s", l5, str);

//。。。。。中间处理自己的逻辑(千万不要做任何耗时的功能)或者开一个线程处理

//。。。。。

//。。。。。

//最后调用修改接口修改对应的寄存器值和其他值
return HDHK_ SetProcessCallBackLparam_SendToX64(窗口序号,rcxOrl1,rdxOrl2,r8Orl3,r9Orl4,l5,l6,rbp,rsp,rip,0);//这个接口成功会返回1
}

========================================================================================================================================================================================


Address HOOK

Help > HOOK模块(HK) >
Address HOOK

任意HOOK地址接口


HDHK_Hook

Help > HOOK模块(HK) > Address HOOK >
HDHK_Hook

函数简介 :

任意HOOK(内置插件)X86X64

函数原型 :

__int64 HDHK_Hook(__int32 窗口序号, __int64 hook地址, __int32 破坏字节 ,__int64 回调地址, __int64 附加参数, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

hook地址:当前HOOK的目标地址(参考适合的HOOK地址X86HOOK地址规则 X64HOOK地址规则)

破坏字节数: 涉及到的汇编字节数

回调地址:遵循下面回调函数类型

附加参数:自定义参数,此参数会传递给回调函数

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

无

回调写法:

==========================================================================================================================

X86 X64：
typedef __int64(__stdcall *HandleCallBackFunType)(
__int32 窗口序号, __int32 插件序号,
__int64 raxOreax, __int64 rbxOrebx,
__int64 rcxOrecx, __int64 rdxOredx,
__int64 rbpOrebp, __int64 rspOresp,
__int64 rsiOresi, __int64 rdiOredi,
__int64 r8, __int64 r9, __int64 r10, __int64 r11, __int64 r12, __int64 r13, __int64 r14, __int64 r15,
__int64 lparam);

参数解析:

窗口序号:对应的窗口序号

插件序号:内部自动传递

raxOreax rbxOrebx rcxOrecx rdxOredx rbpOrebp rspOresp rsiOresi rdiOredi:分别对应X86X64的8个寄存器

r8 r9 r10 r11 r12 r13 r14 r15:分别对应X64的8个寄存器

lparam:是HDHK_Hook的第五个参数附加参数

备注:

返回值 :

0 【忽视被破坏的汇编语句,直接跳到下一句汇编地址(HOOK地址+破坏字节)】

1 【走原有流程】

2 【需要修改值】+【忽视被破坏的汇编语句,直接跳到下一句汇编地址(HOOK地址+破坏字节)】

3 【需要修改值】+【走原有流程】

备注:调用约定是__stdcall

X86X64通用调用案例:

__int32 __stdcall HandleHookCallBackFun (
__int32 窗口序号, __int32 插件序号,
__int64 raxOreax, __int64 rbxOrebx,
__int64 rcxOrecx, __int64 rdxOredx,
__int64 rbpOrebp, __int64 rspOresp,
__int64 rsiOresi, __int64 rdiOredi,
__int64 r8, __int64 r9, __int64 r10, __int64 r11, __int64 r12, __int64 r13, __int64 r14, __int64 r15,
__int64 lparam)
{

HDbgPrintf_HOOK("触发HOOK回调->窗口序号:%d 插件序号:%d raxOreax:%llX rbxOrebx:%llX rcxOrecx:%llX rdxOredx:%llX rbpOrebp::%llX rspOresp:%llX rsiOresi:%llX rdiOredi:%llX r8:%llX r9:%llX r10:%llX r11:%llX r12:%llX r13:%llX r14:%llX r15:%llX lparam:%d",
窗口序号, 插件序号,
raxOreax, rbxOrebx, rcxOrecx, rdxOredx,
rbpOrebp, rspOresp, rsiOresi, rdiOredi,
r8, r9, r10, r11, r12, r13, r14, r15,
lparam
);

//....中间执行自己的逻辑

//....可以用驱动读写

//如果需要修改寄存器值 就调用HDHK_SetProcessHookCallBackLparam设置
__int32 mark = 1;
auto ret = HDHK_SetProcessHookCallBackLparam(窗口序号, 插件序号,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,0, mark);
HDbgPrintf_HOOK("ret:%lld",ret);

//返回值: 0 忽视HOOK语句 直接跳到原来 1 走原有流程 2 需要修改值+直接跳到原来 3 需要修改值+走原有流程
return 3;
}

回调内修改写法请转至》》》》》修改回调返回方法(X86X64)《《《《《《


HDHK_PauseHook

Help > HOOK模块(HK) > Address HOOK >
HDHK_PauseHook

函数简介 :

暂停任意HOOK(内置插件)X86X64

函数原型 :

__int64 HDHK_PauseHook(__int32 窗口序号, __int64 hook地址, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

hook地址:当前HOOK的目标地址

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

无


HDHK_RecoverHook

Help > HOOK模块(HK) > Address HOOK >
HDHK_RecoverHook

函数简介 :

恢复任意HOOK(内置插件)X86X64

函数原型 :

__int64 HDHK_RecoverHook(__int32 窗口序号, __int64 hook地址, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

hook地址:当前HOOK的目标地址

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

无


HDHK_UnHook

Help > HOOK模块(HK) > Address HOOK >
HDHK_UnHook

函数简介 :

卸载任意HOOK(内置插件)X86X64

函数原型 :

__int64 HDHK_UnHook(__int32 窗口序号, __int64 hook地址, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

hook地址:当前HOOK的目标地址

是否主线程调用:需要开启才开启,一般默认就行

返回值:

查看返回值表 HD返回值表

备注:

无


修改回调返回方法(X86X64)

Help > HOOK模块(HK) > Address HOOK >
修改回调返回方法(X86X64)

HD返回值表X86X64:
__int64 __stdcall HDHK_SetProcessHookCallBackLparam(__int32 窗口序号, __int32 插件序号,
__int64 raxOreax, __int64 rbxOrebx,
__int64 rcxOrecx, __int64 rdxOredx,
__int64 rbpOrebp, __int64 rspOresp,
__int64 rsiOresi, __int64 rdiOredi,
__int64 r8, __int64 r9, __int64 r10,
__int64 r11, __int64 r12, __int64 r13,
__int64 r14, __int64 r15,
__int64 rip,
__int32 mark);

备注:

参数

窗口序号:窗口序号

窗口序号:对应的窗口序号

插件序号:内部自动传递

raxOreax rbxOrebx rcxOrecx rdxOredx rbpOrebp rspOresp rsiOresi rdiOredi:分别对应X86X64的8个寄存器

r8 r9 r10 r11 r12 r13 r14 r15:分别对应X64的8个寄存器

rip:分别对应X86X64的跳回地址(一般不需要改变,除非特殊需求)

mark:修改相关寄存器值和其他值的掩码值(2的倍数) ,修改多个值用| (或)连接 如:1|2|4 表示调用对应的修改参数接口的rax rcx rdx 或 eax ecx edx有效传递并修改

mark: 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536
寄存器:raxOreax rbxOrebx rcxOrecx rdxOredx rbpOrebp rspOresp rsiOresi rdiOredi r8 r9 r10 r11 r12 r13 r14 r15 rip

返回值

看返回值表HD返回值表

========================================================================================================================================================================================

X86X64通用调用案例:

回调+修改
__int64 __stdcall HandleHookCallBackFun (
__int32 窗口序号, __int32 插件序号,
__int64 raxOreax, __int64 rbxOrebx,
__int64 rcxOrecx, __int64 rdxOredx,
__int64 rbpOrebp, __int64 rspOresp,
__int64 rsiOresi, __int64 rdiOredi,
__int64 r8, __int64 r9, __int64 r10, __int64 r11, __int64 r12, __int64 r13, __int64 r14, __int64 r15,
__int64 lparam )
{

HDbgPrintf_HOOK("触发HOOK回调->窗口序号:%d 插件序号:%d raxOreax:%llX rbxOrebx:%llX rcxOrecx:%llX rdxOredx:%llX rbpOrebp::%llX rspOresp:%llX rsiOresi:%llX rdiOredi:%llX r8:%llX r9:%llX r10:%llX r11:%llX r12:%llX r13:%llX r14:%llX r15:%llX lparam:%lld",
窗口序号, 插件序号,
raxOreax, rbxOrebx, rcxOrecx, rdxOredx,
rbpOrebp, rspOresp, rsiOresi, rdiOredi,
r8, r9, r10, r11, r12, r13, r14, r15,
lparam
);

//....中间执行自己的逻辑

//....可以用驱动读写

//如果需要修改寄存器值 就调用HDHK_SetProcessHookCallBackLparam 设置

//这里我们只让rax或eax值有效修改 mark为2的0次方也就是1
__int32 mark = 1;
auto ret = HDHK_SetProcessHookCallBackLparam(窗口序号, 插件序号,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,0, mark);
HDbgPrintf_HOOK("ret:%lld",ret);

//回调返回值: 0 忽视HOOK语句 直接跳到原来 1 走原有流程 2 需要修改值+直接跳到原来 3 需要修改值+走原有流程
return 3;
}

========================================================================================================================================================================================


X86HOOK地址规则

Help > HOOK模块(HK) > Address HOOK >
X86HOOK地址规则
如何找HOOK点
如果破坏的2句汇编中 有je这种 就不适合
最好的就是一句汇编 破坏数量大于等于5 可以包含相对跳
【1】如果涉及到一句汇编
如:
1.OK
772A4FAF | E9 9F2AFFFF | jmp ntdll.77297A53
2.OK
772A4F79 | E8 423C0100 | call <ntdll.RtlRaiseException>
3.OK
772A4F9F | FF15 E0913577 | call dword ptr ds:[<&RtlDebugPrintTimes>]
4.OK
772A4F99 | 8B0D DC693577 | mov ecx,dword ptr ds:[773569DC]
5.OK
772A4F99 | 890D DC693577 | mov dword ptr ds:[773569DC],ecx
6.OK
75460EC5 | 833D 945C4875 00 | cmp dword ptr ds:[75485C94],0
7.OK
其他(没有jmp call je jg 相对偏移等跳转指令)都可以
【2】如果涉及到2句或大于2句的汇编 那么汇编中不要涉及相对跳(jmp je jg等)之类的汇编
如:
1.NO
772A5015 | 76 05 | jbe ntdll.772A501C |
772A5017 | B9 FFFF0000 | mov ecx, FFFF |
2.NO
772A5042 | 0BFF | or edi, edi |
772A5044 | 74 1E | je ntdll.772A5064 |
3.OK
其他(没有jmp call je jg 等跳转指令)都可以
【3】实战HOOK例子:
1.CALL
75460F00 | E8 FBFDFFFF | call <user32.MessageBoxTimeoutW> |
75460F05 | 5D | pop ebp |
2.普通汇编
75460EF0 | 6A FF | push FFFFFFFF |
75460EF2 | 6A 00 | push 0 |
75460EF4 | FF75 14 | push dword ptr ss:[ebp+14] |
75460EF7 | FF75 10 | push dword ptr ss:[ebp+10] |


X64HOOK地址规则

Help > HOOK模块(HK) > Address HOOK >
X64HOOK地址规则

如何找HOOK点
最好的就是一句汇编 破坏数量大于等于5 可以包含相对跳
【1】如果涉及到一句汇编
如:
1.OK
772A4FAF | E9 9F2AFFFF | jmp ntdll.77297A53
2.OK
772A4F79 | E8 423C0100 | call <ntdll.RtlRaiseException>
3.OK
FF15 9AAF7800 | call qword ptr ds:[<&TlsGetValue>]
4.OK
00007FFE1056246D | 8B0D 7969A100 | mov ecx,dword ptr ds:[7FFE10F78DEC]
00007FFE1056246D | 890D 7969A100 | mov dword ptr ds:[7FFE10F78DEC],ecx
5.OK
==
48:8B0D 7869A100 | mov rcx,qword ptr ds:[7FFE10F78DEC] 0D:rcx
48:890D 7869A100 | mov qword ptr ds:[7FFE10F78DEC],rcx
==
00007FFE6FCFB2B8 | 4C:8B15 498B0300 | mov r10,qword ptr ds:[7FFE6FD33E08] | 15 r10
00007FFE6FCFB2B8 | 44:8B15 498B0300 | mov r10d,dword ptr ds:[7FFE6FD33E08] |
00007FFE6FCFB2B8 | 44:8915 498B0300 | mov dword ptr ds : [7FFE6FD33E08], r10d |
00007FFE6FCFB2B8 | 4C:8915 498B0300 | mov qword ptr ds : [7FFE6FD33E08], r10 |
==
00007FFE6FCFB297 | 44:391D 52800300 | cmp dword ptr ds : [7FFE6FD332F0], r11d | dword:4439
00007FFE6FCFB297 | 44:3B1D 52800300 | cmp r11d,dword ptr ds:[7FFE6FD332F0] | dword:443B
00007FFE6FCFB297 | 4C:391D 52800300 | cmp qword ptr ds:[7FFE6FD332F0],r11 | qword:4839
00007FFE6FCFB297 | 4C:3B1D 52800300 | cmp r11,qword ptr ds:[7FFE6FD332F0] | qword:483B
6.OK
00007FFE6FCFB2AF | F04C:0FB115 488B0300 | lock cmpxchg qword ptr ds:[7FFE6FD33E00],r10 |
00007FFE6FCFB2AF | F044:0FB11D 488B0300 | lock cmpxchg dword ptr ds:[7FFE6FD33E00],r11d |
7.OK 这种情况没有偏移可以计算 注意和情况5的区别
00007FFFB53A91C0 | 48:8BC4 | mov rax, rsp |
00007FFFB53A91C3 | 48 : 8958 10 | mov qword ptr ds : [rax + 10], rbx |
8.OK
其他(没有jmp call je jg 相对偏移等跳转指令)都可以
【2】如果涉及到2句或大于2句的汇编 那么汇编中不要涉及相对跳(jmp je jg等)之类的汇编
如:
1. NO
00007FFE1056247E | 48:85C0 | test rax, rax |
00007FFE10562481 | 74 0C | je sogoupy.7FFE1056248F | 74是跳
2.NO
00007FFE10562467 | 74 04 | je sogoupy.7FFE1056246D | 74是跳
00007FFE10562469 | 85D2 | test edx, edx |
00007FFE1056246B | 75 22 | jne sogoupy.7FFE1056248F | 75是跳
3.NO
00007FFE0FE57A39 | 48:8BF0 | mov rsi, rax |
00007FFE0FE57A3C | 8B0D FAFE0500 | mov ecx, dword ptr ds : [7FFE0FEB793C] | FAFE0500是偏移
【3】实战HOOK例子:
1. 无跳转汇编
00007FFE0FE57A2B | 48:83EC 30 | sub rsp,30 | HOOK 破坏7字节
00007FFE0FE57A2F | 48:8BF9 | mov rdi,rcx |
00007FFE0FE57A32 | 33DB | xor ebx,ebx | jmp back
00007FFE0FE57A34 | E8 E7000000 | call ichat_bundle64.7FFE0FE57B20 |
00007FFE0FE57A39 | 48:8BF0 | mov rsi,rax |
2. E8 0x00000000
00007FFE0FE57A34 | E8 E7000000 | call ichat_bundle64.7FFE0FE57B20 | HOOK 破坏5字节
00007FFE0FE57A39 | 48:8BF0 | mov rsi,rax | jmp back
00007FFE0FE57A3C | 8B0D FAFE0500 | mov ecx,dword ptr ds:[7FFE0FEB793C] |
3. mov
00007FFE0FE57A3C | 8B0D FAFE0500 | mov ecx,dword ptr ds:[7FFE0FEB793C] | HOOK 破坏6字节
00007FFE0FE57A42 | FF15 F0770300 | call qword ptr ds:[<&TlsGetValue>] | jmp back
00007FFE0FE57A48 | 48:8BC8 | mov rcx,rax |
4. mov
00007FFE0FE57BD1 | 48:892D 50540600 | mov qword ptr ds:[7FFE0FEBD028],rbp | HOOK 破坏7字节
00007FFE0FE57BD8 | 49:8BCE | mov rcx,r14 | jmp back
5. jmp
00007FFE0FE211BA | E9 196A0300 | jmp ichat_bundle64.7FFE0FE57BD8 | HOOK 破坏5字节
00007FFE0FE211BF | CC | int3 | jmp back
6. cmp
00007FFE6FCFB297 | 44:391D 52800300 | cmp dword ptr ds:[7FFE6FD332F0],r11d | HOOK 破坏7字节
00007FFE6FCFB29E | 74 2E | je user32.7FFE6FCFB2CE | jmp back
7. call
00007FFE6FCFB2D9 | E8 D2FDFFFF | call <user32.MessageBoxTimeoutW> | HOOK 破坏5字节 00007FFE6FCFB0B0
00007FFE6FCFB2DE | 48:83C4 38 | add rsp,38 | jmp back
00007FFE6FCFB2E2 | C3 | ret |
8. lock cmpxchg qword
00007FFE6FCFB2AF | F04C:0FB115 488B0300 | lock cmpxchg qwordptr ds:[7FFE6FD33E00],r10| HOOK 破坏9字节
00007FFE6FCFB2B8 | 4C:8B15 498B0300 | mov r10,qword ptr ds:[7FFE6FD33E08] | jmp back
9. lock cmpxchg dword
00007FFE6FCFB2AF | F044:0FB11D 488B0300 | lock cmpxchg dword ptrds:[7FFE6FD33E00],r11d |破坏9字节
00007FFE6FCFB2B8 | 4C:8B15 498B0300 | mov r10,qword ptr ds:[7FFE6FD33E08] | jmp back
10.wspsend头
00007FFFB53A91C0 | 48:8BC4 | mov rax, rsp |
00007FFFB53A91C3 | 48 : 8958 10 | mov qword ptr ds : [rax + 10], rbx |


X64 HOOK【WSPSend】

Help > HOOK模块(HK) > Address HOOK >
X64 HOOK【WSPSend】

1.函数原型

int WSPSend(

SOCKET s,   ---rcx

LPWSABUF lpBuffers,---rdx

DWORD dwBufferCount,---r8

LPDWORD lpNumberOfBytesSent, ---r9

DWORD dwFlags, ---rsp+28h

LPWSAOVERLAPPED lpOverlapped,---rsp+30h

LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, ---rsp+38h

LPWSATHREADID lpThreadId, ---rsp+40h

LPINT lpErrno---rsp+48h

);

2.拦截包在第二个参数lpBuffers结构体(WSABUF)中的第一个成员是包长度 第二个成员是包地址

typedef struct __WSABUF {
u_long len;
char FAR* buf;
}
WSABUF, FAR* LPWSABUF;

3.每次拦截读取这个包内容就行

4.注意第三个参数dwBufferCount表示一共有多少个结构体(WSABUF)

易语言拦截案例:


HCN_LoadDrv

Help > 驱动模块(N) >
HCN_LoadDrv

函数简介:

加载N驱动

函数原型:

__int64 __stdcall HCN_LoadDrv ();

参数定义:

无参数

返回值:

查看返回值表 HD返回值表

成功返回1

备注:

需要联网,可以卸载,驱动内置了进程,如需要自定义进程名联系管理员添加或者用HD驱动


HCN_InjectDll(W/A)X86

Help > 驱动模块(N) >
HCN_InjectDll(W/A)X86

函数简介 :

注入32/64位DLL(需要先加载N驱动)

函数原型:

HEARTDLL_API_HN __int64 __stdcall HCN_InjectDllWX86 (wchar_t *DLL路径W);

HEARTDLL_API_HN __int64 __stdcall HCN_InjectDllAX86 (char *DLL路径A);

参数定义:

DLL路径W:Unicode字符串

DLL路径W:Ascii字符串

返回值:

查看返回值表 HD返回值表

成功返回1

备注:

无


HCN_InjectDll(W/A)X64

Help > 驱动模块(N) >
HCN_InjectDll(W/A)X64

函数简介 :

注入32/64位DLL(需要先加载N驱动)

函数原型:

HEARTDLL_API_HN __int64 __stdcall HCN_InjectDllWX64 (wchar_t *DLL路径W);

HEARTDLL_API_HN __int64 __stdcall HCN_InjectDllAX64 (char *DLL路径A);

参数定义:

DLL路径W:Unicode字符串

DLL路径W:Ascii字符串

返回值:

查看返回值表 HD返回值表

成功返回1

备注:

无


HCN_InstallPlug(86/64)

Help > 驱动模块(N) >
HCN_InstallPlug(86/64)

函数简介 :

安装32/64位HD插件(需要先加载N驱动)

函数原型:

__int64 __stdcall HCN_InstallPlugX86();

__int64 __stdcall HCN_InstallPlugX64();

参数定义:

无

返回值:

查看返回值表 HD返回值表

成功返回1

备注:

无


HCN_UnLoadDrv

Help > 驱动模块(N) >
HCN_UnLoadDrv

函数简介 :

卸载驱动同时清除了注入的DLL缓存

函数原型 :

__int64 __stdcall HCN_UnLoadDrv();

参数定义:

无

返回值:

查看返回值表 HD返回值表

返回值:0释放失败 1成功释放

备注:

取消窗口关联,一定要卸载相关信息,随后所有循环会快速内退,从而线程安全退出！！！！


驱动模块(HD)

Help >
驱动模块(HD)

//宏返回值
//驱动宏返回值
//宏返回值
//宏返回值
//这个值必须大于0 用在最开始加载驱动的返回
小于0会蓝屏！！
#define LOAD_SUCCESS
0x00000001
//下面的值是其他接口自定义返回值 必须小于0
大于0统一返回的都是0！！
#define
DRERROR_SUCCESS 0x00000002
#define DRERROR_SUCCESSEX 0xE0000000
#define
DRERROR_SUCCESSTEST 0xE0000001
#define DRERROR_EXIST 0xE0000002
#define
DRERROR_FAID 0xE0000003
#define DRERROR_无法打开进程 0xE0000004
#define
DRERROR_无效的句柄表 0xE0000005
#define DRERROR_用户验证失败 0xE0000006
#define
DRERROR_内存类型不符 0xE0000007
#define DRERROR_超出内存范围 0xE0000008
#define
DRERROR_隐藏内存失败 0xE0000009
#define DRERROR_查询内存失败 0xE000000A
#define
DRERROR_申请内存失败 0xE000000B
#define DRERROR_超出读写字节 0xE000000C
#define
DRERROR_分配内存失败 0xE000000D
#define DRERROR_无效的缓冲区 0xE000000E
#define
DRERROR_无法结束自身 0xE000000F
#define DRERROR_无法识别数据 0xE0000010
#define
DRERROR_进程位数错误 0xE0000011
#define DRERROR_读写地址错误 0xE0000012
#define
DRERROR_劫持线程失败 0xE0000013
#define DRERROR_X86DLL格式有误 0xE0000014
#define
DRERROR_X64DLL格式有误 0xE0000015
#define DRERROR_无合适处理器 0xE0000016
#define
DRERROR_未找到鼠标   0xE0000017
#define DRERROR_未找到键盘
0xE0000018
#define DRERROR_未找到入口参数 0xE0000019//没有找到入口参数
#define
DRERROR_输入缓冲区为空 0xE0000020//输入缓冲区为空
#define DRERROR_未找到模块基址
0xE0000021//
#define DRERROR_未找到函数地址 0xE0000022//
#define ERROR_参数有误
0xE0000023//参数有误

HD库之驱动演示过检查

https://www.bilibili.com/video/BV1ow411B74L/?spm_id_from=333.999.0.0&vd_source=62d93c95eb96c13685513f7775af114a

PS:最好复制到浏览器打开


HCHD_LoadDrv

Help > 驱动模块(HD) >
HCHD_LoadDrv

函数简介 :

加载HD驱动 (正式版本)

函数原型 :

__int64 __stdcall HCHD_LoadDrv();

参数定义 :

无参数

返回值:

查看返回值表 HD返回值表

备注:

需要联网,不可以卸载驱动,可以清除注入DLL缓存

此接口相当于调用HCHD_LoadDrv2 传递-1:HDEx正式版本(云下发 正常驱动,无特殊处理)


HCHD_LoadDrv2

Help > 驱动模块(HD) >
HCHD_LoadDrv2

函数简介 :

云下发 加载驱动或组件 (可以通过指定驱动序号,加载不同版本的驱动 如:正式版本 定制版本 备用版本 其他保护盾 VT等等)

函数原型 :

__int64 __stdcall HCHD_LoadDrv2(__int32 type = 0);

参数定义 :

type:驱动序号 -1表示:正式驱动(如果需要快速读写遍历需要手动初始化相关读写) 0表示:定制版本(适合驱动快读读写遍历) 1表示:备用版本

说明:云下发 加载驱动或组件
-1:HDEx正式版本(云下发 正常驱动,无特殊处理)
0:HDExx备用版本(云下发 适合驱动快读读写遍历)
1:HDExxx定制版本(云下发 正常驱动,无特殊处理)
2:HDHOOK驱动(云下发 快速读写 VT无痕HOOK)
3:HDPP保护驱动(云下发 进程保护和隐藏等保护)
4:HDYOLOV识别(云下发 HYolov5 8 10 11 组件到当前路径并安装)

后续还会增加其他组件和驱动保护盾....

返回值:

查看返回值表 HD返回值表

备注:

需要联网,不可以卸载驱动,可以清除注入DLL缓存


HCHD_InitFastRW

Help > 驱动模块(HD) >
HCHD_InitFastRW

函数简介 :

初始化HD驱动快速读写(一般在HD安装驱动接口后的下一句就开始初始化)

函数原型 :

__int64 __stdcall HCHD_InitFastRW();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

如果最开始安装HD驱动调用的是HCHD_LoadDrv同时又需要快速读写遍历,就需要先调用此接口,然后调用HCHD_RWExx 进行快读内存读写遍历(百万级别)

如果最开始安装HD驱动调用的是HCHD_LoadDrv2并传递驱动序号为0,表示可以直接调用HCHD_RWExx 进行快读内存读写遍历(百万级别),不需要再调用此接口了


HCHD_InjectX86X64

Help > 驱动模块(HD) >
HCHD_InjectX86X64

函数简介 :

把DLL注入到指定进程中(指定DLL二进制文件数据)

函数原型 :

__int64 __stdcall HCHD_InjectX86X64(char* injectExeName, __int32 dllBits, __int32 injectMode, __int32 memoryHide, PVOID injectData, __int32 injectSize);

参数定义 :

injectExeName:进程名(如:Game.exe)

dllBits:进程位(32/64)

injectMode:注入模式(0/1/2),一般0,1模式就行,2用于steam游戏

memoryHide:内存保护模式(0/1/2)

injectData:注入数据缓冲区首地址

injectSize:注入数据缓冲区大小(单位:字节)

返回值 :

查看返回值表 HD返回值表

备注:

不能卸载驱动,可以清除注入DLL缓存,支持32/64进程


HCHD_InjectX86X64ByFile

Help > 驱动模块(HD) >
HCHD_InjectX86X64ByFile

函数简介 :

把DLL注入到指定进程中(指定DLL文件路径)

函数原型 :

__int64 __stdcall HCHD_InjectX86X64ByFile(char* injectExeName, __int32 dllBits, __int32 injectMode, __int32 memoryHide, char *DLL绝对路径A);

参数定义 :

injectExeName:进程名(如:Game.exe)

dllBits:进程位(32/64)

injectMode:注入模式(0/1/2),一般0,1模式就行,2用于steam游戏

memoryHide:内存保护模式(0/1/2)

DLL绝对路径A:DLL绝对路径A

返回值 :

查看返回值表 HD返回值表

备注:

不能卸载驱动,可以清除注入DLL缓存,支持32/64进程


HCHD_InstallPlug(86/64)

Help > 驱动模块(HD) >
HCHD_InstallPlug(86/64)

函数简介 :

安装HD插件到指定进程中

函数原型 :

__int64 __stdcall HCHD_InstallPlugX86 (char* injectExeName, __int32 injectMode, __int32 memoryHide);

__int64 __stdcall HCHD_InstallPlugX64 (char* injectExeName, __int32 injectMode, __int32 memoryHide);

参数定义 :

injectExeName:进程名(如:Game.exe)

injectMode:注入模式(0/1/2),一般0,1模式就行,2用于steam游戏

memoryHide:内存保护模式(0/1/2)

返回值 :

查看返回值表 HD返回值表

备注:

需要联网,可以清除注入DLL缓存,支持32/64进程


HCHD_UnInstallPlug

Help > 驱动模块(HD) >
HCHD_UnInstallPlug

函数简介 :

卸载插件(并不是从进程中卸载,而是清除了下一次进程打开的时候安装插件的缓存)

函数原型 :

__int64 __int64 __stdcall HCHD_UnInstallPlug();

参数定义 :

无

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MousePress

Help > 驱动模块(HD) >
HCHD_MousePress

函数简介 :

前台驱动鼠标移动并点击

函数原型 :

__int64 __stdcall HCHD_MousePress(__int32 abx, __int32 aby, __int32 mButCode, __int32 mis);

参数定义 :

X：屏幕坐标X

X：屏幕坐标Y

mButCode：

鼠标移动时鼠标按钮的值 如下：
#define MOUSE_BUTTON_1_DOWN 1 左按下
#define MOUSE_BUTTON_1_UP 2 左弹起
#define MOUSE_BUTTON_2_DOWN 4 中按下
#define MOUSE_BUTTON_2_UP 8 中弹起
#define MOUSE_BUTTON_3_DOWN 16 右按下
#define MOUSE_BUTTON_3_UP 32 右弹起

mis:按下和弹起之间的毫秒差

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MousePressEx

Help > 驱动模块(HD) >
HCHD_MousePressEx

函数简介 :

前台驱动鼠标移动并点击(可指定句柄)

函数原型 :

__int64 __stdcall HCHD_MousePressEx(__int64 hwnd, __int32 x, __int32 y, __int32 mButCode, __int32 mis);

参数定义 :

hwnd: 窗口句柄

X：窗口客户区坐标X

X：窗口客户区坐标Y

mButCode：

鼠标移动时鼠标按钮的值 如下：
#define MOUSE_BUTTON_1_DOWN 1 左按下
#define MOUSE_BUTTON_1_UP 2 左弹起
#define MOUSE_BUTTON_2_DOWN 4 中按下
#define MOUSE_BUTTON_2_UP 8 中弹起
#define MOUSE_BUTTON_3_DOWN 16 右按下
#define MOUSE_BUTTON_3_UP 32 右弹起

mis:按下和弹起之间的毫秒差

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MouseDown

Help > 驱动模块(HD) >
HCHD_MouseDown

函数简介 :

前台驱动鼠标移动并按下指定键(可指定句柄)

函数原型 :

__int64 __stdcall HCHD_MouseDown(__int64 hwnd, __int32 x, __int32 y, __int32 mButCode);

参数定义 :

hwnd: 窗口句柄

X：窗口客户区坐标X

X：窗口客户区坐标Y

mButCode：

鼠标移动时鼠标按钮的值 如下：
#define MOUSE_BUTTON_1_DOWN 1 左按下
#define MOUSE_BUTTON_2_DOWN 4 中按下
#define MOUSE_BUTTON_3_DOWN 16 右按下

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MouseUp

Help > 驱动模块(HD) >
HCHD_MouseUp

函数简介 :

前台驱动鼠标移动并弹起指定键(可指定句柄)

函数原型 :

__int64 __stdcall HCHD_MouseUp(__int64 hwnd, __int32 x, __int32 y, __int32 mButCode);

参数定义 :

hwnd: 窗口句柄

X：窗口客户区坐标X

X：窗口客户区坐标Y

mButCode：

鼠标移动时鼠标按钮的值 如下：
#define MOUSE_BUTTON_1_UP 2 左弹起
#define MOUSE_BUTTON_2_UP 8 中弹起
#define MOUSE_BUTTON_3_UP 32 右弹起

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_KbPress

Help > 驱动模块(HD) >
HCHD_KbPress

函数简介 :

前台驱动键盘(按下并弹起)

函数原型 :

__int64 __stdcall HCHD_KbPress(__int32 virtualKeyCode, __int32 mis);

参数定义 :

virtualKeyCode:虚拟键码

mis:按下和弹起之间的毫秒差

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_KbDown

Help > 驱动模块(HD) >
HCHD_KbDown

函数简介 :

前台驱动键盘(按下某键)

函数原型 :

__int64 __stdcall HCHD_KbDown(__int32 virtualKeyCode);

参数定义 :

virtualKeyCode:虚拟键码

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_KbUp

Help > 驱动模块(HD) >
HCHD_KbUp

函数简介 :

前台驱动键盘(弹起某键)

函数原型 :

__int64 __stdcall HCHD_KbUp(__int32 virtualKeyCode);

参数定义 :

virtualKeyCode:虚拟键码

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_RW

Help > 驱动模块(HD) >
HCHD_RW

函数简介:

驱动读写

函数原型 :

__int64 __stdcall HCHD_RW(__int32 pid, __int64 targetAddress, __int64 bufferAddress, __int32 bufferOfBytes, __int32 rwType);

参数定义 :

pid：进程ID

targetAddress：目标地址

bufferAddress：数据缓冲区指针

bufferOfBytes：数据缓冲区大小,

rwType：读写类型[0=读内存;1=写内存;2=强写内存]

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_RWExx

Help > 驱动模块(HD) >
HCHD_RWExx

,函数简介 :

驱动读写(百万级别读写 单线程)

函数原型 :

__int64 __stdcall HCHD_RWExx(__int32 pid, __int64 targetAddress, __int64 bufferAddress, __int32 bufferOfBytes, __int32 rwType);

参数定义 :

pid：进程ID

targetAddress：目标地址

bufferAddress：数据缓冲区指针

bufferOfBytes：数据缓冲区大小,

rwType：读写类型[0=读内存;1=写内存;2=强写内存]

返回值 :

查看返回值表 HD返回值表

备注:

如果最开始安装HD驱动调用的是HCHD_LoadDrv同时又需要快速读写遍历,就需要先调用HCHD_InitFastRW,然后调用此接口进行快读内存读写遍历(百万级别)

如果最开始安装HD驱动调用的是HCHD_LoadDrv2并传递驱动序号为0,表示可以直接调用HCHD_RWExx 进行快读内存读写遍历(百万级别),不需要再调用HCHD_InitFastRW接口了


HCHD_BeginRWEx

Help > 驱动模块(HD) >
HCHD_BeginRWEx

函数简介 :

驱动读写Ex(开始批读写)与HCHD_EndRWEx成对出现 适合快速遍历(百万级别读写 单线程)

函数原型:

__int64 __stdcall HCHD_BeginRWEx(__int32 pid);

参数定义 :

pid：进程ID

返回值 :

查看返回值表 HD返回值表

备注:

适合快速遍历


HCHD_RWEx

Help > 驱动模块(HD) >
HCHD_RWEx

函数简介 :

驱动读写Ex(批量读写)(百万级别读写 单线程)

函数原型 :

__int64 __stdcall HCHD_RWEx (__int64 targetAddress, __int64 bufferAddress, __int32 bufferOfBytes, __int32 rwType);

参数定义 :

targetAddress：目标地址

bufferAddress：数据缓冲区指针

bufferOfBytes：数据缓冲区大小,

rwType：读写类型[0=读内存;1=写内存;2=强写内存]

返回值 :

查看返回值表 HD返回值表

备注:

先调用HCHD_BeginRWEx 然后中间调用该接口HCHD_RWEx 最后调用HCHD_EndRWEx 用于释放环境


HCHD_EndRWEx

Help > 驱动模块(HD) >
HCHD_EndRWEx

函数简介 :

驱动读写Ex(结束批读写)与HCHD_BeginRWEx成对出现 适合快速遍历(百万级别读写 单线程)

函数原型:

__int64 __stdcall HCHD_EndRWEx();

参数定义 :

无

返回值 :

查看返回值表 HD返回值表

备注:

适合快速遍历


HCHD_AddrIsRead

Help > 驱动模块(HD) >
HCHD_AddrIsRead

函数简介 :

检查地址是否可读

函数原型 :

__int64 __stdcall HCHD_AddrIsRead(__int32 pid, __int64 addr,__int32 size);

参数定义 :

pid:进程ID 指定为0 表示 初始化HD快速读写遍历(适合)

addr:需要测试的地址

size:地址所涉及到的字节大小(4字节或者8字节),不能为其他字节数

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_PP

Help > 驱动模块(HD) >
HCHD_PP

函数简介 :

进程保护

函数原型 :

__int64 __stdcall HCHD_PP(__int32 pid, BOOL bOpen);

参数定义 :

pid：进程ID

bOpen：是否开启[1=开启保护;0=关闭保护]

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_PHide

Help > 驱动模块(HD) >
HCHD_PHide

函数简介 :

开启进程隐藏

函数原型 :

__int64 __stdcall HCHD_PHide(__int32 pid);

参数定义 :

pid：进程ID

返回值 :

查看返回值表 HD返回值表

备注:

一次性只能隐藏一个,如果需要隐藏第二个,先把之前的给显示了


HCHD_PShow

Help > 驱动模块(HD) >
HCHD_PShow

函数简介 :

进程显示

函数原型 :

__int64 __stdcall HCHD_PShow(__int32 pid);

参数定义 :

pid：进程ID

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_PPKill

Help > 驱动模块(HD) >
HCHD_PPKill

函数简介 :

进程杀死

函数原型 :

__int64 __stdcall HCHD_PPKill(char* processName,__int32 pid);

参数定义 :

processName：进程名 把当前所有相同进程名全部杀掉

pid:进程PID 指定了PID 进程名就失效

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MemoryAllocate

Help > 驱动模块(HD) >
HCHD_MemoryAllocate

函数简介 :

驱动申请内存

函数原型 :

__int64 __stdcall HCHD_MemoryAllocate(__int32 pid, __int64 memorySize, __int32 memoryProtect, BOOL bHighAddress, __int64 pOutBuffer);

参数定义 :

pid：进程ID

memorySize：申请大小

memoryProtect：内存保护属性 例如:0x40(64)可读可写可执行

bHighAddress：是否申请高位内存 如果申请大小超过4字节存储的值 就属于高位内存 一般为假就行

pOutBuffer：缓冲区指针( 存申请返回的地址)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MemoryAllocateEx

Help > 驱动模块(HD) >
HCHD_MemoryAllocateEx

函数简介 :

驱动申请内存(扩展版本)

函数原型 :

__int64 __stdcall HCHD_MemoryAllocateEx(__int32 pid, __int64 memoryAddr, __int64 memorySize, __int32 memoryProtect, BOOL bHighAddress, __int64 pOutBuffer);

参数定义 :

pid：进程ID

memoryAddr:指定的内存地址或者为NULL(0)

memorySize：申请大小

memoryProtect：内存保护属性

bHighAddress：是否申请高位内存 如果申请大小超过4字节存储的值 就属于高位内存 一般为假就行

pOutBuffer：缓冲区指针( 存申请返回的地址)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MemoryFree

Help > 驱动模块(HD) >
HCHD_MemoryFree

函数简介 :

驱动内存释放

函数原型 :

__int64 __stdcall HCHD_MemoryFree(__int32 pid, __int64 memoryAddress);

参数定义 :

pid：进程ID

memoryAddress：需要释放的内存地址

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MemoryProtect

Help > 驱动模块(HD) >
HCHD_MemoryProtect

函数简介:

驱动修改内存保护属性

函数原型 :

__int64 __stdcall HCHD_MemoryProtect(__int32 pid, __int64 memoryAddress, __int64 memoryOfBytes, __int32 newProtect);

参数定义 :

pid：进程ID

memoryAddress：内存地址

memoryOfBytes：内存大小

newProtect：新保护值

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MemoryHide

Help > 驱动模块(HD) >
HCHD_MemoryHide

函数简介 :

驱动内存隐藏

函数原型 :

__int64 __stdcall HCHD_MemoryHide (__int32 pid, __int64 memoryAddress, __int64 memoryOfBytes);

参数定义 :

pid：进程ID

memoryAddress：内存地址

memoryOfBytes：内存大小

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MemoryQuery

Help > 驱动模块(HD) >
HCHD_MemoryQuery

函数简介 :

驱动内存查询

函数原型 :

__int64 __stdcall HCHD_MemoryQuery (__int32 pid, __int64 memoryAddress, PVOID pOutBuffer);

参数定义 :

pid：进程ID

memoryAddress：内存地址

pOutBuffer：缓冲区指针[这里固定使用的是64位的MEMORY_BASIC_INFORMATION结构体,结构体大(48字节)] 结构体:MEMORY_BASIC_INFORMATION

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_MemoryFindCode

Help > 驱动模块(HD) >
HCHD_MemoryFindCode

函数简介:

驱动通过特征码查找地址

函数原型 :

__int64 __stdcall HCHD_MemoryFindCode(__int32 pid, __int64 address, __int64 siginCode, __int32 siginCodeSize, __int32 iProtect, __int64 outBuffer);

参数定义 :

pid：进程ID

address：起始搜索地址

siginCode：特征码(二进制缓冲区不是字符串)

siginCodeSize：特征码长度(字节单位),

iProtect：要搜索的内存保护属性

outBuffer：缓冲区(存地址)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_GetMainModuleBase

Help > 驱动模块(HD) >
HCHD_GetMainModuleBase

函数简介 :

驱动获取主模块EXE的地址

函数原型 :

__int64 __stdcall HCHD_GetMainModuleBase(__int32 pid, __int64 outBuffer);

参数定义 :

pid：进程ID

outBuffer：缓冲区指针(存地址)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_GetModuleBase

Help > 驱动模块(HD) >
HCHD_GetModuleBase

函数简介 :

驱动获取指定模块的地址

函数原型 :

__int64 __stdcall HCHD_GetModuleBase(__int32 pid, char* moduleName, __int64 outBuffer);

参数定义 :

pid：进程ID

moduleName：模块名(Ascii字符串)

outBuffer：缓冲区指针(存地址)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_GetModuleCallAddr

Help > 驱动模块(HD) >
HCHD_GetModuleCallAddr

函数简介 :

驱动获取指定模块的指定的函数地址

函数原型 :

__int64 __stdcall HCHD_GetModuleCallAddr(__int32 pid, char* moduleName, char* callName, __int64 outBuffer);

参数定义 :

pid：进程ID

moduleName：模块名(Ascii字符串)

callName:函数名字(Ascii字符串)

outBuffer：缓冲区指针(存地址)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_ChangeMachineKey

Help > 驱动模块(HD) >
HCHD_ChangeMachineKey

函数简介:

驱动修改机器码

函数原型:

__int64 __stdcall HCHD_ChangeMachineKey(__int32 type);

参数定义 :
参数:类型
0=全部开启
1=注册表
2=硬盘序列号
3=网卡序列号
4=本地文件特征
5=微端设备序列号
6=网络代理设备序列号
7=图形处理器(GPU-GUID)
8=分区序列号
9=固态硬盘序列号
10=主板BIOS序列号
11=硬盘数据卷序列号(静态)
12=硬盘数据卷序列号(动态)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_NTNCaptureScreen

Help > 驱动模块(HD) >
HCHD_NTNCaptureScreen

函数简介 :

驱动内核反截图

函数原型 :

__int64 __stdcall HCHD_NTNCaptureScreen(__int64 hWnd, BOOL Enable);

参数定义 :
hWnd:窗口句柄

Enable:是否开启

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_NTThreadRunCall

Help > 驱动模块(HD) >
HCHD_NTThreadRunCall

函数简介:

驱动内存远线程执行函数

函数原型 :

__int64 __stdcall HCHD_NTThreadRunCall(__int32 pid, __int64 callAddress);

参数定义 :
pid:进程PID

callAddress:CALL地址

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_ClearInject

Help > 驱动模块(HD) >
HCHD_ClearInject

函数简介 :

驱动清除注入缓存(全局插件缓存,DLL缓存)

函数原型 :

__int64 __stdcall HCHD_ClearInject();

参数定义 :
无

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_PcrocessRoot

Help > 驱动模块(HD) >
HCHD_PcrocessRoot

函数简介 :

进程提权

函数原型 :

__int64 __stdcall HCHD_PcrocessRoot(__int32 pid);

参数定义 :
pid:进程PID(内部会通过PID获取进程句柄)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCHD_HandleRoot

Help > 驱动模块(HD) >
HCHD_HandleRoot

函数简介 :

进程提权

函数原型 :

__int64 __stdcall HCHD_HandleRoot(__int64 handle);

参数定义 :
handle:句柄

返回值 :

查看返回值表 HD返回值表

备注:

无


HCN_NormalInstallPlugX86

Help > 注入模块(Inject) >
HCN_NormalInstallPlugX86

函数简介 :

普通注入插件(X86),不需要安装驱动,这个不是无痕注入,只支持32位的

函数原型:

__int64 __stdcall HCN_NormalInstallPlugX86 (__int32 pid);

参数定义:

pid:进程PID

返回值:

查看返回值表 HD返回值表

备注:

这个不是无痕注入
方便操作一些小程序
普通注入插件DLL 参数->进程PID,进程位数(32)
可以在打开进程的经常下安装插件DLL
初始化进程环境后调用这个安装插件 然后循环等待拿到PID
不是驱动级别


HCN_NormalInstallPlugX86Ex

Help > 注入模块(Inject) >
HCN_NormalInstallPlugX86Ex

函数简介 :

普通注入插件(X86)),不需要安装驱动,这个不是无痕注入

函数原型:

__int64 __stdcall HCN_NormalInstallPlugX86Ex (__int64 topHwnd);

参数定义:

hwnd:进程窗口句柄

返回值:

查看返回值表 HD返回值表

备注:

这个不是无痕注入

方便操作一些小程序

用法和HCN_NormalInstallPlugX86一样 这个接口只是参数是句柄 防止一些进程一次性打开多个 这个句柄可以用来指定某个窗口


HCN_NormalInstallPlugX64

Help > 注入模块(Inject) >
HCN_NormalInstallPlugX64

函数简介 :

普通注入插件(X64),不需要安装驱动,这个不是无痕注入,只支持64位的

函数原型:

__int64 __stdcall HCN_NormalInstallPlugX64(__int32 pid);

参数定义:

pid:进程PID

返回值:

查看返回值表 HD返回值表

备注:

这个不是无痕注入
方便操作一些小程序
普通注入插件DLL 参数->进程PID,进程位数(32)
可以在打开进程的经常下安装插件DLL
初始化进程环境后调用这个安装插件 然后循环等待拿到PID
不是驱动级别


HCN_NormalInstallPlugX64Ex

Help > 注入模块(Inject) >
HCN_NormalInstallPlugX64Ex

函数简介 :

普通注入插件(X64),不需要安装驱动,这个不是无痕注入 ,只支持64位的

函数原型:

__int64 __stdcall HCN_NormalInstallPlugX64Ex(__int64 topHwnd);

参数定义:

hwnd:进程窗口句柄

返回值:

查看返回值表 HD返回值表

备注:

这个不是无痕注入

方便操作一些小程序

用法和HCN_NormalInstallPlugX86一样 这个接口只是参数是句柄 防止一些进程一次性打开多个 这个句柄可以用来指定某个窗口


HCHD_NormalInstallPlugX86X64

Help > 注入模块(Inject) >
HCHD_NormalInstallPlugX86X64

函数简介 :

安装HD插件(需要预先安装HD驱动) ,【注入方式1】

函数原型:

__int64 __stdcall HCHD_NormalInstallPlugX86X64(__int32 pid, __int32 dllBits, BOOL bWait = TRUE);

参数定义:

pid:进程PID

dllBits：32/64

bWait :可以忽视,暂时无效

返回值:

查看返回值表 HD返回值表

备注:

不是无模块注入
可以在打开进程的情况下注入
驱动级别的,自动判断目标进程位数


HCHD_NormalInjectX86X64ByFile

Help > 注入模块(Inject) >
HCHD_NormalInjectX86X64ByFile

函数简介 :

安装指定DLL(需要预先安装HD驱动) ,【注入方式1】

函数原型:

__int64 __stdcall HCHD_NormalInjectX86X64ByFile(__int32 pid, char *DLL绝对路径A,BOOL bWait = TRUE);

参数定义 :

pid:进程PID

DLL绝对路径A:需要加载的DLL全路径

bWait :可以忽视,暂时无效

返回值:

查看返回值表 HD返回值表

备注:

不是无模块注入
可以在打开进程的情况下注入
驱动级别的,自动判断目标进程 位数


HCHD_NormalInstallPlugX86X64Ex

Help > 注入模块(Inject) >
HCHD_NormalInstallPlugX86X64Ex

函数简介 :

安装HD插件(需要预先安装HD驱动) ,【注入方式2】

函数原型:

__int64 __stdcall HCHD_NormalInstallPlugX86X64Ex(__int32 pid, __int32 dllBits, BOOL bWait = TRUE);

参数定义:

pid:进程PID

dllBits：32/64

bWait :可以忽视,暂时无效

返回值:

查看返回值表 HD返回值表

备注:

不是无模块注入
可以在打开进程的情况下注入
驱动级别的,自动判断目标进程位数


HCHD_NormalInjectX86X64ByFileEx

Help > 注入模块(Inject) >
HCHD_NormalInjectX86X64ByFileEx

函数简介 :

安装指定DLL(需要预先安装HD驱动) , 【注入方式2】

函数原型:

__int64 __stdcall HCHD_NormalInjectX86X64ByFileEx(__int32 pid, char *DLL绝对路径A,BOOL bWait = TRUE);

参数定义 :

pid:进程PID

DLL绝对路径A:需要加载的DLL全路径

bWait :可以忽视,暂时无效

返回值:

查看返回值表 HD返回值表

备注:

不是无模块注入
可以在打开进程的情况下注入
驱动级别的,自动判断目标进程 位数


盾(HDPP)

Help >
盾(HDPP)

保护盾

过反外挂引擎

先开启保护再开目标进程


HCHDPP_Protect

Help > 盾(HDPP) >
HCHDPP_Protect

函数简介 :

一键保护进程(隐藏等)

函数原型:

__int64 __stdcall HCHDPP_Protect (__int32 pid);

参数定义:

pid:进程PID

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数3来安装保护盾HDPP驱动


VT(HDVT)

Help >
VT(HDVT)

不支持AMD CPU

不支持I9 CPU

支持全系统版本和大部分CPU


HCHDVT_AllocateMemory

Help > VT(HDVT) >
HCHDVT_AllocateMemory

函数简介 :

VT驱动申请内存

函数原型:

__int64 __stdcall HCHDVT_AllocateMemory(__int32 pid, __int32 size);

参数定义:

pid:进程PID

size:申请内存大小(字节)

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_FreeMemory

Help > VT(HDVT) >
HCHDVT_FreeMemory

函数简介 :

VT驱动释放内存

函数原型:

__int64 __stdcall HCHDVT_FreeMemory(__int32 pid, __int64 addr, __int32 size);

参数定义:

pid:进程PID

addr:释放地址(该地址是由HCHDVT_AllocateMemory申请的内存地址)

size:申请内存大小(字节)

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_Read

Help > VT(HDVT) >
HCHDVT_Read

函数简介 :

VT驱动读内存

函数原型:

__int64 __stdcall HCHDVT_Read(__int32 pid, __int64 addr, void* data, __int32 size);

参数定义:

pid:进程PID

addr:目标地址

data:存读数据的缓冲区地址

size:读的大小(字节),缓冲区的大小要大于等于读的大小

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_Write

Help > VT(HDVT) >
HCHDVT_Write

函数简介 :

VT驱动写内存

函数原型:

__int64 __stdcall HCHDVT_Write(__int32 pid, __int64 addr, void* data, __int32 size);

参数定义:

pid:进程PID

addr:目标地址

data:写入数据的缓冲区地址(存要写的数据)

size:写的大小(字节),缓冲区的大小要大于等于写的大小

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_GetModule

Help > VT(HDVT) >
HCHDVT_GetModule

函数简介 :

VT驱动获取模块地址

函数原型 :

__int64 __stdcall HCHDVT_GetModule (__int32 pid, char* moduleName);

参数定义:

pid:进程PID

moduleName:模块名字(ascii编码)

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_GetModuleFun

Help > VT(HDVT) >
HCHDVT_GetModuleFun

函数简介 :

VT驱动获取模块函数地址

函数原型 :

__int64 __stdcall HCHDVT_GetModuleFun(__int32 pid, __int64 moduleAddr, char* funName);

参数定义:

pid:进程PID

moduleAddr:模块地址

moduleName:函数名字(ascii编码)

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_Hook

Help > VT(HDVT) >
HCHDVT_Hook

函数简介 :

VT驱动无痕HOOK ,过CRC

函数原型 :

__int64 __stdcall HCHDVT_Hook(__int32 pid, __int64 addr, void* data, __int32 size, __int32 type);

参数定义:

pid:进程PID

addr:HOOK地址

data:写入数据缓冲区

size:写入数据缓冲区大小

type:

0:关闭VT HCHDVT_Hook(0,0,0,0,0)

1:开启VT HCHDVT_Hook(0,0,0,0,1)

2:VT写入 HCHDVT_Hook(pid,addr,data,size,2)

3:VT恢复之前HOOK的地址 HCHDVT_Hook(pid,addr,0,0,3)

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_RemoteCall

Help > VT(HDVT) >
HCHDVT_RemoteCall

函数简介 :

VT驱动远程插入执行

函数原型 :

__int64 __stdcall HCHDVT_RemoteCall(__int32 pid, void* data, __int32 size);

参数定义:

pid:进程PID

data:执行shellcode首地址(注意: 这个地址是本进程的地址 不是目标的地址 内部会拷贝的)

size:shellcode字节大小

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_InjectX64

Help > VT(HDVT) >
HCHDVT_InjectX64

函数简介 :

VT驱动无痕无模块注入X64DLL

函数原型 :

__int64 __stdcall HCHDVT_InjectX64(__int32 pid, void* data, __int32 size);

参数定义:

pid:进程PID

data:DLL二进制数据

size:DLL二进制数据大小

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2传递参数2来安装HDVT驱动


HCHDVT_InjectX86

Help > VT(HDVT) >
HCHDVT_InjectX86

函数简介 :

VT驱动无痕无模块注入X86DLL

函数原型 :

__int64 __stdcall HCHDVT_InjectX86(__int32 pid, void* data, __int32 size);

参数定义 :

pid:进程PID

data:DLL二进制数据

size:DLL二进制数据大小

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2 传递参数2来安装HDVT驱动


HCHDVT_InstallPlugX64

Help > VT(HDVT) >
HCHDVT_InstallPlugX64

函数简介 :

VT驱动无痕无模块安装X64插件到目标进程中

函数原型 :

__int64 __stdcall HCHDVT_InstallPlugX64 (__int32 pid);

参数定义 :

pid:进程PID

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2 传递参数2来安装HDVT驱动


HCHDVT_InstallPlugX86

Help > VT(HDVT) >
HCHDVT_InstallPlugX86

函数简介 :

VT驱动无痕无模块安装X86插件到目标进程中

函数原型 :

__int64 __stdcall HCHDVT_InstallPlugX86 (__int32 pid);

参数定义 :

pid:进程PID

返回值:

查看返回值表 HD返回值表

备注:

需要调用HCHD_LoadDrv2 传递参数2来安装HDVT驱动


YOLOV(HDYOLOV)

Help >
YOLOV(HDYOLOV)

支持ncnn模型

支持yolov版本 5 8 10 11

支持CPU GPU


HCYOLO_AddModel

Help > YOLOV(HDYOLOV) >
HCYOLO_AddModel

函数简介 :

添加YOLOV(ncnn.bin 和 ncnn.param)模型文件(从内存中加载模型)

函数原型:

__int64 __stdcall HCYOLO_AddModel(__int32 ver, void* modeData, __int32 modeDataSize, void* modeLparam, __int32 modeLparamSize, __int32 size = 640, BOOL bGpu = FALSE, char* password = NULL);

参数定义:

ver:yolov版本 支持5 8 10 11版本

modeData:ncnn.bin 模型文件的二进制数据

modeDataSize:ncnn.bin 模型文件的二进制数据大小

modeLparam:ncnn.param模型文件的二进制数据

modeLparamSize:ncnn.param模型文件的二进制数据大小

size :训练时候的图片大小 一般默认640

bGpu :是否GPU识别

password :没有就空,一般为默认空就行

返回值:

查看返回值表 HD返回值表

备注:

ncnn模型
bin ＝ “XXX.ncnn.bin”
param ＝ “XXX.ncnn.param”
从内存中加载模型
备注:一个进程 仅同时支持一个版本的模型

需要调用HCHD_LoadDrv2 传递参数4来安装YOLOV组件模块


HCYOLO_AddModelFile

Help > YOLOV(HDYOLOV) >
HCYOLO_AddModelFile

函数简介 :

添加YOLOV(ncnn.bin 和 ncnn.param)模型文件(从文件中加载模型)

函数原型:

__int64 __stdcall HCYOLO_AddModelFile (__int32 ver, char* modeFileName, char* modeLparamName, __int32 size = 640, BOOL bGpu = FALSE, char* password = NULL);

参数定义:

ver:yolov版本 支持5 8 10 11版本

modeFileName:ncnn.bin 模型文件名(支持绝对路径或相对路径) 相对路径需要调用HCRES_SetResPath 设置路径

modeLparamName:ncnn.param模型文件名(支持绝对路径或相对路径) 相对路径需要调用HCRES_SetResPath设置路径

size :训练时候的图片大小 一般默认640

bGpu :是否GPU识别

password :没有就空,一般为默认空就行

返回值:

查看返回值表 HD返回值表

备注:

ncnn模型
bin ＝ “XXX.ncnn.bin”
param ＝ “XXX.ncnn.param”
从文件中加载模型
备注:一个进程 仅同时支持一个版本的模型

需要调用 HCHD_LoadDrv2 传递参数4来安装YOLOV组件模块


HCYOLO_Identify

Help > YOLOV(HDYOLOV) >
HCYOLO_Identify

函数简介 :

添加YOLOV(ncnn.bin 和 ncnn.param)模型文件(从文件中加载模型) ,从后台截图缓存识别

函数原型:

__int64 __stdcall HCYOLO_Identify(__int32 窗口序号,float conf = 0.7f, float iou = 0.4f, BOOL bDebug = FALSE);

参数定义:

窗口序号:窗口序号

conf:置信度 默认0.7

iou:过重率 一般默认在0.4~0.6之间 默认0.4

bDebug:是否弹窗调试标注查看 默认假

返回值:

查看返回值表 HD返回值表

备注:

识别信息调用HCEnv_GetRetJson获取字符串信息 以“|”分割,自行切割

%d,%f,%f,%f,%f,%f,%d| %d,%f,%f,%f,%f,%f,%d|

字段含义:
类别,X1,Y1,X2,Y2,置信度,耗时|类别,X1,Y1,X2,Y2,置信度,耗时|

需要调用HCHD_LoadDrv2 传递参数4来安装YOLOV组件模块


HCYOLO_IdentifyByFile

Help > YOLOV(HDYOLOV) >
HCYOLO_IdentifyByFile

函数简介 :

添加YOLOV(ncnn.bin 和 ncnn.param)模型文件(从文件中加载模型) ,从指定图片文件识别

函数原型:

__int64 __stdcall HCYOLO_IdentifyByFile (__int32 窗口序号, char* image, float conf = 0.7f, float iou = 0.4f, BOOL bDebug = FALSE);

参数定义:

窗口序号:窗口序号

image:图片文件名(支持绝对路径或相对路径) 相对路径需要调用 HCRES_SetResPath 设置路径 (图片格式支持多种格式:png jpg bmp等)

conf:置信度 默认0.7

iou:过重率 一般默认在0.4~0.6之间 默认0.4

bDebug:是否弹窗调试标注查看 默认假

返回值:

查看返回值表 HD返回值表

备注:

识别信息调用HCEnv_GetRetJson获取字符串信息 以“|”分割,自行切割

%d,%f,%f,%f,%f,%f,%d| %d,%f,%f,%f,%f,%f,%d|

字段含义:
类别,X1,Y1,X2,Y2,置信度,耗时|类别,X1,Y1,X2,Y2,置信度,耗时|

需要调用HCHD_LoadDrv2 传递参数4来安装YOLOV组件模块


HCYOLO_IdentifyByMem

Help > YOLOV(HDYOLOV) >
HCYOLO_IdentifyByMem

()函数简介 :

添加YOLOV(ncnn.bin 和 ncnn.param)模型文件(从文件中加载模型) ,从指定图片内存识别

函数原型:

__int64 __stdcall HCYOLO_IdentifyByMem(__int32 窗口序号, void* imgData,__int32 imgDataSize, float conf = 0.7f, float iou = 0.4f, BOOL bDebug = FALSE);

参数定义:

窗口序号:窗口序号

imgData:图片文件二进制数据(图片格式支持多种格式:png jpg bmp等)

imgDataSize:图片文件二进制数据大小

conf:置信度 默认0.7

iou:过重率 一般默认在0.4~0.6之间 默认0.4

bDebug:是否弹窗调试标注查看 默认假

返回值:

查看返回值表 HD返回值表

备注:

识别信息调用HCEnv_GetRetJson获取字符串信息 以“|”分割,自行切割

%d,%f,%f,%f,%f,%f,%d| %d,%f,%f,%f,%f,%f,%d|

字段含义:
类别,X1,Y1,X2,Y2,置信度,耗时|类别,X1,Y1,X2,Y2,置信度,耗时|

需要调用HCHD_LoadDrv2 传递参数4来安装YOLOV组件模块


VNC(HDVNC)

Help >
VNC(HDVNC)

支持全虚拟机版本

连接虚拟机端口控制虚拟机键鼠


HCVnc_Connect

Help > VNC(HDVNC) >
HCVnc_Connect

函数简介 :

连接虚拟机

函数原型:

__int64 __stdcall HCVnc_Connect(__int32 windowsIndex,__int32 port);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

port:虚拟机开启VNC设置的端口

返回值:

查看返回值表 HD返回值表

备注:

对应的虚拟机请开启VNC并设置好端口


HCVnc_Close

Help > VNC(HDVNC) >
HCVnc_Close

函数简介 :

关闭连接虚拟机

函数原型:

__int64 __stdcall HCVnc_Close (__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

对应的虚拟机请开启VNC并设置好端口


HCVnc_MoveTo

Help > VNC(HDVNC) >
HCVnc_MoveTo

函数简介 :

VNC鼠标绝对移动 (自带移动轨迹 直线波动防检测)

函数原型:

__int64 __stdcall HCVnc_MoveTo(__int32 windowsIndex, __int32 x, __int32 y);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

x:虚拟机屏幕坐标X

y:虚拟机屏幕坐标Y

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_MoveToOffset

Help > VNC(HDVNC) >
HCVnc_MoveToOffset

函数简介 :

VNC鼠标相对移动 (自带移动轨迹 直线波动防检测)

函数原型:

__int64 __stdcall HCVnc_MoveToOffset(__int32 windowsIndex, __int32 x, __int32 y);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

x:虚拟机屏幕相对坐标X

y:虚拟机屏幕相对坐标X

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_LeftClick

Help > VNC(HDVNC) >
HCVnc_LeftClick

函数简介 :

VNC鼠标左键点击

函数原型:

__int64 __stdcall HCVnc_LeftClick(__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_LeftDown

Help > VNC(HDVNC) >
HCVnc_LeftDown

函数简介 :

VNC鼠标左键按下

函数原型:

__int64 __stdcall HCVnc_LeftDown(__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_LeftUp

Help > VNC(HDVNC) >
HCVnc_LeftUp

函数简介 :

VNC鼠标左键弹起

函数原型:

__int64 __stdcall HCVnc_LeftUp(__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_LeftDoubleClick

Help > VNC(HDVNC) >
HCVnc_LeftDoubleClick

函数简介 :

VNC鼠标左键双击

函数原型:

__int64 __stdcall HCVnc_LeftDoubleClick(__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_RightClick

Help > VNC(HDVNC) >
HCVnc_RightClick

函数简介 :

VNC鼠标右键点击

函数原型:

__int64 __stdcall HCVnc_RightClick(__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_RightDown

Help > VNC(HDVNC) >
HCVnc_RightDown

函数简介 :

VNC鼠标右键按下

函数原型:

__int64 __stdcall HCVnc_RightDown(__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_RightUp

Help > VNC(HDVNC) >
HCVnc_RightUp

函数简介 :

VNC鼠标右键弹起

函数原型:

__int64 __stdcall HCVnc_RightUp(__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_WheelDown

Help > VNC(HDVNC) >
HCVnc_WheelDown

函数简介 :

VNC鼠标滚轮滚下

函数原型:

__int64 __stdcall HCVnc_WheelDown(__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_WheelUp

Help > VNC(HDVNC) >
HCVnc_WheelUp

函数简介 :

VNC鼠标滚轮滚上

函数原型:

__int64 __stdcall HCVnc_WheelUp (__int32 windowsIndex);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_KeyPress

Help > VNC(HDVNC) >
HCVnc_KeyPress

函数简介 :

VNC键盘按键敲击

函数原型:

__int64 __stdcall HCVnc_KeyPress(__int32 windowsIndex, int keycode, BOOL isKeypad = false);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

keycode:VK键值

isKeypad :是否数字小键盘 一般假

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_KeyDown

Help > VNC(HDVNC) >
HCVnc_KeyDown

函数简介 :

VNC键盘按键按下

函数原型 :

__int64 __stdcall HCVnc_KeyDown (__int32 windowsIndex, int keycode);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

keycode:VK键值

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_KeyUp

Help > VNC(HDVNC) >
HCVnc_KeyUp

函数简介 :

VNC键盘按键弹起

函数原型 :

__int64 __stdcall HCVnc_KeyUp (__int32 windowsIndex, int keycode);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

keycode:VK键值

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_KeyPressStr

Help > VNC(HDVNC) >
HCVnc_KeyPressStr

函数简介 :

VNC键盘连续按键字符串(数字+字母)

函数原型 :

__int64 __stdcall HCVnc_KeyPressStr(__int32 windowsIndex, char* strText, BOOL isKeypad = false);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

strText:字符串(ascii编码) 如:"1234567890qwerty~!@#$%^&*()_+{}|:"<>?"

isKeypad :是否数字小键盘 一般假

返回值:

查看返回值表 HD返回值表

备注:

无


HCVnc_SendString

Help > VNC(HDVNC) >
HCVnc_SendString

函数简介 :

VNC键盘输入字符串(中文+数字+符号+字母)

函数原型 :

__int64 __stdcall HCVnc_SendString(__int32 windowsIndex, char* strText);

参数定义:

窗口序号:窗口序号 每个窗口序号可以绑定一个虚拟机VNC端口

strText:字符串(ascii编码) 如:"1234567890qwerty~!@#$%^&*()_+{}|:"<>?欢迎使用HD插件"

返回值:

查看返回值表 HD返回值表

备注:

无


内存操作模块(M)

Help >
内存操作模块(M)

//【偏移表达式格式】

相对偏移]+x]+y]+z 取地址
相对偏移]+x]+y]+z] 取地址值
//如:0x123456]+0x56]-0x44] 第一个偏移表示的是基地址 的偏移 不是基地址地址
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]" 注意事项:

1.加了取地址里面值 不加是地址 对于读整数型/长整数型接口 有效

如:0X123]A]B]C C偏移不会被忽视 同时0X123]A]B]读到的地址 + C偏移 得到地址并返回

如:0X123]A]B]C] C偏移不会被忽视 同时0X123]A]B]读到的地址 + C偏移 取相加后得到的地址里面的值

2.对于读字节流 读浮点数 读双浮点 或写的全部接口 都必须在最后一个加上+] 否则最后一个偏移会被忽视

如:0X123]A]B]C C偏移会被忽视

如:0X123]A]B]C] C偏移不会会被忽视


HCM_FindCode

Help > 内存操作模块(M) >
HCM_FindCode

函数简介 :

特征码查找

函数原型 ：

__int64 __stdcall HCM_FindCode(__int32 窗口序号, char *特征码字符串地址, __int32 偏移, __int32 次数, __int32 type = 1, char *模块名字 = NULL);

参数定义 :

窗口序号:窗口序号 (从1开始)

特征码字符串地址:特征码字符串地址(支持??)

偏移：正负偏移

次数：找到的第几次 从1开始

type：获取的是(基地址/CALL地址/直接地址/地址中的值) 1为地址 2为基地址 3为CALL 4为地址中的值

模块名字:在指定的模块中搜索,默认为主模块 NULL为默认

返回值 :

查看返回值表 HD返回值表

备注:

无


HCM_FindCodeEx

Help > 内存操作模块(M) >
HCM_FindCodeEx

函数简介 :

特征码查找(通过指定地址)

函数原型 ：

__int64 __stdcall HCM_FindCodeEx(__int32 窗口序号, __int64 开始地址, __int64 扫描范围大小, char *特征码字符串地址, __int32 偏移, __int32 次数, __int32 type = 1);

参数定义 :

窗口序号:窗口序号 (从1开始)

开始地址:指定开始扫描的地址

扫描范围大小:指定开始扫描的地址大小,结束地址等于开始地址+扫描范围大小

特征码字符串地址:特征码字符串地址(支持??)

偏移：正负偏移

次数：找到的第几次 从1开始

type：获取的是(基地址/CALL地址/直接地址/地址中的值) 1为地址 2为基地址 3为CALL 4为地址中的值

返回值 :

查看返回值表 HD返回值表

备注:

无


HCM_Read

Help > 内存操作模块(M) >
HCM_Read

函数简介 :

读整数数据

函数原型 ：

__int64 __stdcall HCM_Read (__int32 窗口序号, char *表达式字符串地址, __int32 读取大小, char *模块名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

表达式字符串地址:表达式字符串地址(格式)

读取大小：读取大小 支持 1 2 4 8大小

模块名字:在指定的模块中读写,默认为主模块

是否主线程调用:是否主线程调用

格式:

//【偏移表达式格式】

相对偏移]+x]+y]+z 取地址
相对偏移]+x]+y]+z] 取地址值
//如:0x123456]+0x56]-0x44] 第一个偏移表示的是基地址的偏移 不是基地址地址
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]" 加了取地址里面值 不加是地址

返回值:

查看返回值表 HD返回值表

备注:

无


HCM_ReadAddr

Help > 内存操作模块(M) >
HCM_ReadAddr

函数简介 :

读整数数据

函数原型 ：

__int64 __stdcall HCM_ReadAddr(__int32 窗口序号, __int64 addr, __int32 读取大小, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

addr:需要读的内存地址

读取大小：读取大小 支持 1 2 4 8大小

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

备注:

无


HCM_Write

Help > 内存操作模块(M) >
HCM_Write

函数简介 :

写整数数据

函数原型 ：

__int64 __stdcall HCM_Write(__int32 窗口序号, char *表达式字符串地址, __int64 value, __int32 写入大小, char *模块名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

表达式字符串地址:表达式字符串地址 最后一个必须+“]”才有意义 否则 会忽视最后一个偏移

value：写入值

写入大小：写入值的字节大小(最大就8字节)

模块名字:在指定的模块中读写,默认为主模块

是否主线程调用:是否主线程调用

格式:

//【偏移表达式格式】
//尽支持十六进制格式:XXX]XXX]XXX]XXX]
//如:0x123456]+0x56]-0x44]
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]"不要忘了加

返回值:

查看返回值表HD返回值表

备注:

无


HCM_WriteAddr

Help > 内存操作模块(M) >
HCM_WriteAddr

函数简介 :

写整数数据

函数原型 ：

__int64 __stdcall HCM_WriteAddr(__int32 窗口序号, __int64 addr, __int64 value, __int32 写入大小, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

addr:需要写的内存地址

value:写入的值

写入大小：写入大小(最大8字节)

是否主线程调用:是否主线程调用

返回值:

查看返回值表HD返回值表

备注:

无


HCM_ReadData

Help > 内存操作模块(M) >
HCM_ReadData

函数简介 :

读字节流数据

函数原型 ：

__int64 __stdcall HCM_ReadData(__int32 窗口序号, char *表达式字符串地址, BYTE* byteBuffer, __int32 byBufferSize, __int32 读取大小, char *模块名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

表达式字符串地址:表达式字符串地址(格式) 读字节流 最后一个必须+“]”才有意义 否则 会忽视最后一个偏移

byteBuffer:存放读取字节集缓冲区

byBufferSize:存放读取字节集缓冲区的大小

读取大小：读取大小 1到100KB大小

模块名字:在指定的模块中读写,默认为主模块

是否主线程调用:是否主线程调用

格式:

//【偏移表达式格式】
//尽支持十六进制格式:XXX]XXX]XXX]XXX]
//如:0x123456]+0x56]-0x44]  第一个偏移表示的是基地址的偏移 不是基地址地址
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]"不要忘了加  读字节流 最后一个必须+“]”才有意义
否则 会忽视最后一个偏移

返回值:

查看返回值表 HD返回值表

高4字节是GetLastError()返回

低4字节是HD返回值

备注:

json返回字节流
利用 HCEnv_GetRetJson拿到返回地址,提取的字节数为读取大小数
最大读取100KB字节大小,注意这个限制,否则会报错


HCM_ReadFD

Help > 内存操作模块(M) >
HCM_ReadFD

函数简介 :

读单/双浮点数

函数原型 ：

__int64 __stdcall HCM_ReadFD(__int32 窗口序号, char *表达式字符串地址, __int32 读取大小, char *模块名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

表达式字符串地址:表达式字符串地址(格式) 最后一个必须+“]”才有意义 否则 会忽视最后一个偏移

读取大小：4 float单浮点 8 double 双浮点

模块名字:在指定的模块中读写,默认为主模块

是否主线程调用:是否主线程调用

格式:

//【偏移表达式格式】
//尽支持十六进制格式:XXX]XXX]XXX]XXX]
//如:0x123456]+0x56]-0x44]  第一个偏移表示的是基地址的偏移 不是基地址地址
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]"不要忘了加 最后一个必须+“]”才有意义 否则
会忽视最后一个偏移

返回值:

查看返回值表 HD返回值表

备注:
返回结果
以float举例:
json返回字符串
如:{\"error\":0,\"ret\":[{\"bRet\":1,\"iError\":0,\"value\":999.000}]}


HCM_ReadDataAddr

Help > 内存操作模块(M) >
HCM_ReadDataAddr

函数简介 :

读字节流数据

函数原型 ：

__int64 __stdcall HCM_ReadDataAddr(__int32 窗口序号, __int64 addr, BYTE* byteBuffer, __int32 byBufferSize, __int32 读取大小, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

addr:目标进程的地址

byteBuffer:存放读取字节集缓冲区

byBufferSize:存放读取字节集缓冲区的大小

读取大小：1到100KB大小

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

高4字节是GetLastError()返回

低4字节是HD返回值

备注:

json返回字节流
利用 HCEnv_GetRetJson拿到返回地址,提取的字节数为读取大小数
最大读取100KB字节大小,注意这个限制,否则会报错


HCM_ReadFDAddr

Help > 内存操作模块(M) >
HCM_ReadFDAddr

函数简介 :

读单/双浮点数

函数原型 ：

__int64 __stdcall HCM_ReadFDAddr(__int32 窗口序号, __int64 addr, __int32 读取大小, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

addr:目标进程的地址

读取大小： 4 float单浮点 8 double 双浮点

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

备注:

读取大小: 4 float单浮点 8 double 双浮点
以float举例:
json返回字符串
如:"999.0000"


HCM_WriteData

Help > 内存操作模块(M) >
HCM_WriteData

函数简介 :

写字节流数据

函数原型 ：

__int64 __stdcall HCM_WriteData(__int32 窗口序号, char *表达式字符串地址, char* byteBuffer, __int32 写入大小, char *模块名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

表达式字符串地址:表达式字符串地址(格式)

byteBuffer:字节流缓冲区地址

写入大小：写入大小 1到100KB大小

模块名字:在指定的模块中读写,默认为主模块

是否主线程调用:是否主线程调用

格式:

//【偏移表达式格式】
//尽支持十六进制格式:XXX]XXX]XXX]XXX]
//如:0x123456]+0x56]-0x44] 第一个偏移表示的是基地址的偏移 不是基地址地址
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]"不要忘了加

返回值:

查看返回值表 HD返回值表

高4字节是GetLastError()返回

低4字节是HD返回值

备注:

最大写入100KB字节大小,注意这个限制,否则会报错
json返回值
{\"error\":0,\"ret\":[{\"bRet\":1,\"iError\":0}]}


HCM_WriteF

Help > 内存操作模块(M) >
HCM_WriteF

函数简介 :

写单浮点数 4字节

函数原型 ：

__int64 __stdcall HCM_WriteF(__int32 窗口序号, char *表达式字符串地址, float value, char *模块名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

表达式字符串地址:表达式字符串地址(格式) 最后一个必须+“]”才有意义 否则 会忽视最后一个偏移

value:需要写入的单浮点数

模块名字:在指定的模块中读写,默认为主模块

是否主线程调用:是否主线程调用

格式:

//【偏移表达式格式】
//尽支持十六进制格式:XXX]XXX]XXX]XXX]
//如:0x123456]+0x56]-0x44] 第一个偏移表示的是基地址的偏移 不是基地址地址
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]"不要忘了加

返回值:

查看返回值表 HD返回值表

备注:
json返回值
{\"error\":0,\"ret\":[{\"bRet\":1,\"iError\":0}]}


HCM_WriteD

Help > 内存操作模块(M) >
HCM_WriteD

函数简介 :

写双浮点数 8字节

函数原型 ：

__int64 __stdcall HCM_WriteD(__int32 窗口序号, char *表达式字符串地址, double value, char *模块名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

表达式字符串地址:表达式字符串地址(格式) 最后一个必须+“]”才有意义 否则 会忽视最后一个偏移

value:需要写入的双浮点数

模块名字:在指定的模块中读写,默认为主模块

是否主线程调用:是否主线程调用

格式:

//【偏移表达式格式】
//尽支持十六进制格式:XXX]XXX]XXX]XXX]
//如:0x123456]+0x56]-0x44] 第一个偏移表示的是基地址的偏移 不是基地址地址
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]"不要忘了加

返回值:

查看返回值表 HD返回值表

备注:
json返回值
{\"error\":0,\"ret\":[{\"bRet\":1,\"iError\":0}]}


HCM_WriteDataAddr

Help > 内存操作模块(M) >
HCM_WriteDataAddr

函数简介 :

写字节流数据

函数原型 ：

__int64 __stdcall HCM_WriteDataAddr(__int32 窗口序号, __int64 addr, char* byteBuffer, __int32 写入大小, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

addr:目标进程的地址

byteBuffer:字节缓冲区,最大写入100KB

写入大小：1到100KB大小

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

高4字节是GetLastError()返回

低4字节是HD返回值

备注:

json返回字节流
利用HCEnv_GetRetJson拿到返回地址,提取的字节数为读取大小数
最大读取100KB字节大小,注意这个限制,否则会报错


HCM_WriteAddrF

Help > 内存操作模块(M) >
HCM_WriteAddrF

函数简介 :

写单浮点数 4字节

函数原型 ：

__int64 __stdcall HCM_WriteAddrF(__int32 窗口序号, __int64 addr, float value,BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

addr:目标进程地址

value: float单浮点值

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

备注:
无


HCM_WriteAddrD

Help > 内存操作模块(M) >
HCM_WriteAddrD

函数简介 :

写双浮点数 8字节

函数原型 ：

__int64 __stdcall HCM_WriteAddrD(__int32 窗口序号, __int64 addr, double value,BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

addr:目标进程地址

value: double单浮点值

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

备注:
无


HCM_GetModuleBase

Help > 内存操作模块(M) >
HCM_GetModuleBase

函数简介 :

获取模块地址

函数原型 ：

__int64 __stdcall HCM_GetModuleBase(__int32 窗口序号, char* 模块名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

模块名字:NULL默认获取主模块首地址

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

备注:
无


HCM_GetModuleFunAddr

Help > 内存操作模块(M) >
HCM_GetModuleFunAddr

函数简介 :

获取模块中的导出接口地址

函数原型 ：

__int64 __stdcall HCM_GetModuleFunAddr(__int32 窗口序号, char* 模块名字 = NULL, char* 函数名字 = NULL, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

模块名字:NULL默认获取主模块首地址

函数名字:导出接口名字

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

成功:返回地址

备注:
无


HCM_IsBadReadAddr

Help > 内存操作模块(M) >
HCM_IsBadReadAddr

函数简介 :

判断指定地址是否在目标进程中有效可读

函数原型 ：

__int64 __stdcall HCM_IsBadReadAddr(__int32 窗口序号, __int64 addr, __int32 size, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

addr:目标进程地址

size:地址大小 一般32位是4字节 64位是8字节

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

备注:
无


HCM_FloatTakeInt

Help > 内存操作模块(M) >
HCM_FloatTakeInt

函数简介 :

浮点数转整数值的浮点数形式

函数原型 ：

__int64 __stdcall HCM_FloatTakeInt(float value);

参数定义 :

value:浮点数值

返回值:

查看返回值表 HD返回值表

备注:
如:

浮点数->内存中整数值的浮点数形式

1.0 -> 0x3F800000


HCM_AsmCallX86

Help > 内存操作模块(M) >
HCM_AsmCallX86

函数简介 :

执行汇编CALLX86 传递汇编代码

函数原型 ：

__int64 __stdcall HCM_AsmCallX86(__int32 窗口序号, __int64 excuteCallAddr, char* 汇编文本A = NULL, BOOL bFreeAddr = FALSE, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

excuteCallAddr:目标进程地址

如果指定为0,那么会在目标进程中申请内存并执行 汇编,同时返回申请的内存地址(json获取,格式 XXXX|YYYYY === 执行内存地址|汇编执行返回值 )

如果指定执行内存地址,则会直接执行并不会申请新的内存(这个时候汇编文本可为0)

汇编文本A:汇编文本 汇编文本不宜过大 内部转换为汇编最大2048字节

如果汇编转换机器码错误,则json格式:"{\"error\":0,\"ret\":[{\"bRet\":%d,\"outSize\":%d,\"count\":%d,\"error\":%d}]}",

bFreeAddr: 是否释放地址 指定excuteCallAddr参数 仅仅只是释放内存 不会执行汇编

是否主线程调用:是否主线程调用

返回值:

查看返回值表 HD返回值表

返回执行汇编CALL的返回值或错误值

当执行汇编流程 会返回这个json格式: XXXX|YYYYY === 执行内存地址|汇编执行返回值

当汇编转换错误 会返回这个json格式: "{\"error\":0,\"ret\":[{\"bRet\":%d,\"outSize\":%d,\"count\":%d,\"error\":%d}]}"

备注:
无


HCM_AsmCallX64

Help > 内存操作模块(M) >
HCM_AsmCallX64

函数简介 :

执行汇编CALLX64 传递汇编代码

函数原型 ：

__int64 __stdcall HCM_AsmCallX64(__int32 窗口序号, __int64 excuteCallAddr, char* 汇编文本A = NULL, BOOL bFreeAddr = FALSE, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

excuteCallAddr:目标进程地址

如果指定为0,那么会在目标进程中申请内存并执行 汇编,同时返回申请的内存地址(json获取,格式 XXXX|YYYYY === 执行内存地址|汇编执行返回值 )

如果指定执行内存地址,则会直接执行并不会申请新的内存(这个时候汇编文本可为0)

汇编文本A:汇编文本 汇编文本不宜过大 内部转换为汇编最大2048字节

如果汇编转换机器码错误,则json格式:"{\"error\":0,\"ret\":[{\"bRet\":%d,\"outSize\":%d,\"count\":%d,\"error\":%d}]}",

bFreeAddr: 是否释放地址 指定 excuteCallAddr参数 仅仅只是释放内存 不会执行汇编

是否主线程调用:是否主线程调用

返回值 :

查看返回值表 HD返回值表

返回执行汇编CALL的返回值或错误值

当执行汇编流程 会返回这个json格式: XXXX|YYYYY === 执行内存地址|汇编执行返回值

当汇编转换错误 会返回这个json格式: "{\"error\":0,\"ret\":[{\"bRet\":%d,\"outSize\":%d,\"count\":%d,\"error\":%d}]}"

备注:
无


偏移表达式格式

Help > 内存操作模块(M) >
偏移表达式格式

//【偏移表达式格式】

相对偏移]+x]+y]+z 取地址
相对偏移]+x]+y]+z] 取地址值
//如:0x123456]+0x56]-0x44] 第一个偏移表示的是基地址的偏移 不是基地址地址
//加号"+"可要可不要
//减号"-"负偏移需要
//最后一个"]" 注意事项:

1.加了取地址里面值 不加是地址 对于读整数型/长整数型接口 有效

如:0X123]A]B]C C偏移不会被忽视 同时0X123]A]B]读到的地址 + C偏移 得到地址并返回

如:0X123]A]B]C] C偏移不会被忽视 同时0X123]A]B]读到的地址 + C偏移后取相加后的地址里面的值

2.对于读字节流 读浮点数 读双浮点 或写的全部接口 都必须在最后一个加上+] 否则最后一个偏移会被忽视

如:0X123]A]B]C C偏移会被忽视

如:0X123]A]B]C] C偏移不会会被忽视


HCFP_Capture

Help > 找图模块(FP) >
HCFP_Capture

函数简介 :

截图并保存到文件(.bmp)

函数原型 ：

__int64 __stdcall HCFP_Capture(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, char* fileNamePath, BOOL 是否打开查看器 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

fileNamePath:保存到文件的路径+文件名(.bmp)

是否打开查看器:是否打开查看

返回值:

查看返回值表 HD返回值表

备注:

无


HCFP_FindColor

Help > 找图模块(FP) >
HCFP_FindColor

函数简介 :

单点找色

函数原型 ：

__int64 __stdcall HCFP_FindColor(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如:303030) RGB 十六进制 RGB-偏色|000000-000000|000000-000000

sim：整个像素矩阵的相似度

dirType :排序类型 / 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:高4字节为 x 低4字节为y

json: "{"error":0,"ret":[{"bRet":ret,"info":"X1,Y1"}]}",

备注:

注意返回值含义和XY值的提取


HCFP_FindColors

Help > 找图模块(FP) >
HCFP_FindColors

函数简介 :

多点找色

函数原型 ：

__int64 __stdcall HCFP_FindColors(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如:303030) RGB 十六进制 RGB-偏色|000000-000000|000000-0000000

sim：整个像素矩阵的相似度

dirType :排序类型/ 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

返回找到匹配颜色的数量

备注:

json:

{error:0, ret :[{ bRet:1,info:结果}]}"

info格式->像素序号,x1,y1|像素序号,x2,y2


HCFP_FindColorsOffset

Help > 找图模块(FP) >
HCFP_FindColorsOffset

函数简介 :

多点偏移找色

函数原型 ：

__int64 __stdcall HCFP_FindColorsOffset(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, char* firstDeltaColor, char* deltaColor, double sim, __int32 bALL = 0, __int32 dirType = 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:宽度

h:高度

firstDeltaColor:首色 XXXXXX-YYYYYY 格式

deltaColor：偏移色 x1|y1|XXXXXX-YYYYYY| XXXXXX-YYYYYY| ...,x2|y3|XXXXXX-YYYYYY| XXXXXX-YYYYYY| ...,...格式

sim:相似度

bALL:是否全部找 0表示找到一个就返回

dirType :排序类型/ 方向类型排序/方向类型

返回值:

查看返回值表 HD返回值表

备注:

json：

"{\"error\":0,\"ret\":[{\"bRet\":%lld,\"info\":\"%s\"}]}",

info:x1,y1|x2,y2|


HCFP_CmpColors

Help > 找图模块(FP) >
HCFP_CmpColors

函数简介 :

比较颜色

函数原型 ：

__int64 __stdcall HCFP_CmpColors(__int32 窗口序号, __int32 x, __int32 y,char* deltaColor);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x

y

deltaColor：XXXXXX-YYYYYY 格式

返回值:

查看返回值表 HD返回值表

1找到

0未找到

备注:

无


HCFP_CmpColorExs

Help > 找图模块(FP) >
HCFP_CmpColorExs

函数简介 :

多点找色确定某个图像块,指定多个具体点

函数原型 ：

__int64 __stdcall HCFP_CmpColorExs (__int32 窗口序号, char* deltaXYColor );

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

deltaXYColor:x1|y1|e3e6eb-101010|e3e6eb-101010|e3e6eb-101010|...,x2|y2|e3e6eb-101010|e3e6eb-101010|e3e6eb-101010|...

返回值:

查看返回值表 HD返回值表

找到返回8字节长整数包含第一个坐标点x1,y1 低4字节x1 高4字节y1

未找到返回0或者小于0

json: "{"error":0,"ret":[{"bRet":ret,"info":”X1,Y1“}]}",

备注:

这个接口是给具体的坐标直接比较颜色

而这个HCFP_FindColorsOffset是是先搜索首色然后以首色开始拿到偏移的坐标去比较颜色


HCFP_GetColor

Help > 找图模块(FP) >
HCFP_GetColor

函数简介 :

获取某个点的颜色值 (从后台)

函数原型 ：

__int64 __stdcall HCFP_GetColor(__int32 窗口序号, __int32 x, __int32 y);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:客户区x

y:客户区y

返回值:

查看返回值表 HD返回值表

大于0表示具体颜色值(ARGB) 4字节颜色

备注:

注意返回值含义和值的提取

#pragma pack(1)
typedef struct MYA8R8G8B8
{
BYTE m_a;//0x00
BYTE m_r;//低8位
BYTE m_g;//中8位
BYTE m_b;//高8位
MYA8R8G8B8()
{
m_a = 0; m_r = 0; m_g = 0; m_b = 0;
}
}MYA8R8G8B8;

#pragma pack()

json:

“{"error":0,"ret":[{"bRet":1,"info":"44,29,5B"}]}” A(0x00) r g b r红色:低8位 g绿色:中8位 b蓝色:高8位 RGB FFFFFF


HCFP_FindPic

Help > 找图模块(FP) >
HCFP_FindPic

函数简介 :

在客户区范围内找图

函数原型 ：

__int64 __stdcall HCFP_FindPic (__int32 窗口序号,__int32 x, __int32 y, __int32 w, __int32 h, char*图片名字, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

图片名字：一张图片(bmp)文件名字(不包含路径，路径调用HCRES_SetResPath全局设置)

deltaColor：偏色(如:303030) RGB 十六进制

sim：整个像素矩阵的相似度

dirType :排序类型/ 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:低4字节为 x 高4字节为y

备注:

注意返回值含义和xy值的提取


HCFP_FindPicEx

Help > 找图模块(FP) >
HCFP_FindPicEx

函数简介 :

在客户区范围内找图 (返回找到其中一张信息)

函数原型 ：

__int64 __stdcall HCFP_FindPicEx(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h,char*图片名字集合, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

图片名字集合：多张张图片(bmp)文件名字(不包含路径，路径调用 HCRES_SetResPath 全局设置) ,以'|'分隔开

deltaColor：偏色(如:303030) RGB 十六进制

sim：整个像素矩阵的相似度

dirType :排序类型/ 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:低4字节为 x 高4字节为y

备注:

注意返回值含义和xy值的提取

返回json：

{error:0,ret:[{bRet:NN,info:MM}]}

NN：返回值

MM：索引,X,Y


HCFP_IsDisplayDead

Help > 找图模块(FP) >
HCFP_IsDisplayDead

函数简介 :

在客户区范围内检测再规定时间内是否卡图

函数原型 ：

__int64 __stdcall HCFP_IsDisplayDead(__int32 窗口序号,__int32 x, __int32 y, __int32 w, __int32 h,__int32 mstime);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

mstime：间隔时间(不变就说明卡屏了),不会卡主线程

返回值:

查看返回值表 HD返回值表

备注:

无


HCFP_GetRangeCRC

Help > 找图模块(FP) >
HCFP_GetRangeCRC

函数简介 :

在客户区范围内获取像素CRC值,用于卡屏校验

函数原型 ：

__int64 __stdcall HCFP_GetRangeCRC(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

返回值:

查看返回值表 HD返回值表

备注:

json:

{\"error\":0,\"ret\":[{\"bRet\":%lld,\"info\":"%X“,\"time\":%d}]}

info字段是校验值 4字节整数


HCFP_FindColorByFile

Help > 找图模块(FP) >
HCFP_FindColorByFile

函数简介 :

单点找色(从文件)

函数原型 ：

__int64 __stdcall HCFP_FindColorByFile(__int32 窗口序号, char*orgImageName, __int32 x, __int32 y, __int32 w, __int32 h, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

orgImageName:指定一张原图数据(支持绝对路径和相对路径)bmp图片文件

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如:303030) RGB 十六进制 RGB-偏色|00000000-00000000|00000000-00000000

sim：整个像素矩阵的相似度

dirType :排序类型/ 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:高4字节为 x 低4字节为y

json: "{"error":0,"ret":[{"bRet":ret,"info":"X1,Y1"}]}",

备注:

注意返回值含义和XY值的提取


HCFP_FindColorByMem

Help > 找图模块(FP) >
HCFP_FindColorByMem

函数简介 :

单点找色(从内存)

函数原型 ：

__int64 __stdcall HCFP_FindColorByMem(__int32 窗口序号, BYTE* data, __int32 dataSize, __int32 x, __int32 y, __int32 w, __int32 h, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如:303030) RGB 十六进制 RGB-偏色|00000000-00000000|00000000-00000000

sim：整个像素矩阵的相似度

dirType :排序类型/ 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:高4字节为 x 低4字节为y

json: "{"error":0,"ret":[{"bRet":ret,"info":"X1,Y1"}]}",

备注:

注意返回值含义和XY值的提取

图片内存缓冲区自己维护


HCFP_FindColorsByFile

Help > 找图模块(FP) >
HCFP_FindColorsByFile

函数简介 :

多点找色(从文件)

函数原型 ：

__int64 __stdcall HCFP_FindColorsByFile(__int32 窗口序号, char*orgImageName, __int32 x, __int32 y, __int32 w, __int32 h, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

orgImageName:指定一张原图数据(支持绝对路径和相对路径)

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如:303030) RGB 十六进制 RGB-偏色|00000000-00000000|00000000-00000000

sim：整个像素矩阵的相似度

dirType :排序类型 / 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

备注:

json:

{error:0, ret :[{ bRet:1,info:结果}]}"

info格式->像素序号,x1,y1|像素序号,x2,y2


HCFP_FindColorsByMem

Help > 找图模块(FP) >
HCFP_FindColorsByMem

函数简介 :

多点找色(从内存)

函数原型 ：

__int64 __stdcall HCFP_FindColorsByMem(__int32 窗口序号, BYTE* data, __int32 dataSize, __int32 x, __int32 y, __int32 w, __int32 h, char* deltaColor, double sim, __int32 dirType= 0);

参数定义 :

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如:303030) RGB 十六进制 RGB-偏色|00000000-00000000|00000000-00000000

sim：整个像素矩阵的相似度

dirType :排序类型/ 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

备注:

json:

{error:0, ret :[{ bRet:1,info:结果}]}"

info格式->像素序号,x1,y1|像素序号,x2,y2

图片内存缓冲区自己维护


HCFP_FindColorsOffsetByFile

Help > 找图模块(FP) >
HCFP_FindColorsOffsetByFile

函数简介 :

多点偏移找色(从文件)

函数原型 ：

__int64 __stdcall HCFP_FindColorsOffsetByFile(__int32 窗口序号, char*orgImageName, __int32 x, __int32 y, __int32 w, __int32 h, char* firstDeltaColor, char* deltaColor, double sim, __int32 bALL = 0, __int32 dirType = 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

orgImageName:指定一张原图数据(支持绝对路径和相对路径)

x:矩形范围左上角x

y:矩形范围左上角y

w:宽度

h:高度

firstDeltaColor:首色 XXXXXX-YYYYYY 格式

deltaColor：偏移色 x1|y1|XXXXXX-YYYYYY| XXXXXX-YYYYYY| ...,x2|y3|XXXXXX-YYYYYY| XXXXXX-YYYYYY| ...,...格式

sim:相似度

bALL:是否全部找 0表示找到一个就返回

dirType :排序类型 / 方向类型排序/方向类型

返回值:

查看返回值表 HD返回值表

备注:

无


HCFP_FindColorsOffsetByMem

Help > 找图模块(FP) >
HCFP_FindColorsOffsetByMem

函数简介 :

多点偏移找色(从内存)

函数原型 ：

__int64 __stdcall HCFP_FindColorsOffsetByMem(__int32 窗口序号, BYTE* data, __int32 dataSize, __int32 x, __int32 y, __int32 w, __int32 h, char* firstDeltaColor, char* deltaColor, double sim, __int32 bALL = 0, __int32 dirType = 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

x:矩形范围左上角x

y:矩形范围左上角y

w:宽度

h:高度

firstDeltaColor:首色 XXXXXX-YYYYYY 格式

deltaColor：偏移色 x1|y1|XXXXXX-YYYYYY| XXXXXX-YYYYYY| ...,x2|y3|XXXXXX-YYYYYY| XXXXXX-YYYYYY| ...,...格式

sim:相似度

bALL:是否全部找 0表示找到一个就返回

dirType :排序类型 / 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

备注:

图片内存缓冲区自己维护


HCFP_FindPicByFile

Help > 找图模块(FP) >
HCFP_FindPicByFile

函数简介 :

在客户区范围内找图(从文件)

函数原型 ：

__int64 __stdcall HCFP_FindPicByFile(__int32 窗口序号, char*orgImageName, __int32 x, __int32 y, __int32 w, __int32 h, char*图片名字, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

orgImageName:指定一张原图数据(支持绝对路径和相对路径)

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

图片名字：一张图片(bmp)文件名字(路径调用HCRES_SetResPath全局设置) (支持绝对路径和相对路径)

deltaColor：偏色(如:303030) RGB 十六进制

sim：整个像素矩阵的相似度

dirType :排序类型 / 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:高4字节为 x 低4字节为y

备注:

注意返回值含义和xy值的提取


HCFP_FindPicByMem

Help > 找图模块(FP) >
HCFP_FindPicByMem

函数简介 :

在客户区范围内找图(从内存)

函数原型 ：

__int64 __stdcall HCFP_FindPicByMem(__int32 窗口序号, BYTE* data, __int32 dataSize, __int32 x, __int32 y, __int32 w, __int32 h, char*图片名字, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

图片名字：一张图片(bmp)文件名字(路径调用HCRES_SetResPath全局设置) (支持绝对路径和相对路径)

deltaColor：偏色(如:303030) RGB 十六进制

sim：整个像素矩阵的相似度

dirType :排序类型 / 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:高4字节为 x 低4字节为y

备注:

注意返回值含义和xy值的提取

图片内存缓冲区自己维护


HCFP_FindPicExByFile

Help > 找图模块(FP) >
HCFP_FindPicExByFile

函数简介 :

在客户区范围内找图(从文件)

函数原型 ：

__int64 __stdcall HCFP_FindPicExByFile(__int32 窗口序号, char*orgImageName, __int32 x, __int32 y, __int32 w, __int32 h, char*图片名字集合, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

orgImageName:指定一张原图数据(支持绝对路径和相对路径)

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

图片名字集合：多张张图片(bmp)文件名字(不包含路径，路径调用 HCRES_SetResPath 全局设置) ,以'|'分隔开(支持绝对路径和相对路径)

deltaColor：偏色(如:303030) RGB 十六进制

sim：整个像素矩阵的相似度

dirType :排序类型 / 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:低4字节为 x 高4字节为y

备注:

注意返回值含义和xy值的提取

返回json：

{error:0,ret:[{bRet:NN,info:MM}]}

NN：返回值

MM：索引,X,Y


HCFP_FindPicExByMem

Help > 找图模块(FP) >
HCFP_FindPicExByMem

函数简介 :

在客户区范围内找图(从内存)

函数原型 ：

__int64 __stdcall HCFP_FindPicExByMem(__int32 窗口序号, BYTE* data, __int32 dataSize, __int32 x, __int32 y, __int32 w, __int32 h, char*图片名字集合, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

图片名字集合：多张张图片(bmp)文件名字(不包含路径，路径调用 HCRES_SetResPath 全局设置) ,以'|'分隔开(支持绝对路径和相对路径)

deltaColor：偏色(如:303030) RGB 十六进制

sim：整个像素矩阵的相似度

dirType :排序类型 / 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:低4字节为 x 高4字节为y

备注:

注意返回值含义和xy值的提取

图片内存缓冲区自己维护

返回json：

{error:0,ret:[{bRet:NN,info:MM}]}

NN：返回值

MM：索引,X,Y


HCFP_FindPicExFromMem

Help > 找图模块(FP) >
HCFP_FindPicExFromMem

函数简介 :

在客户区范围内找图(子图从内存)

函数原型 ：

__int64 __stdcall HCFP_FindPicExFromMem(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, char*子图内存地址集合字符串, char* deltaColor, double sim, __int32 dirType= 0);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

子图内存地址集合字符串: "地址1,长度1|地址2,长度2|地址3,长度3" 地址和长度用十进制表示

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

图片名字集合：多张张图片(bmp)文件名字(不包含路径，路径调用 HCRES_SetResPath 全局设置) ,以'|'分隔开(支持绝对路径和相对路径)

deltaColor：偏色(如:303030) RGB 十六进制

sim：整个像素矩阵的相似度

dirType :排序类型 / 方向类型 排序/方向类型

返回值:

查看返回值表 HD返回值表

大于0表示:低4字节为 x 高4字节为y

备注:

注意返回值含义和xy值的提取

图片内存缓冲区自己维护

返回json：

{error:0,ret:[{bRet:NN,info:MM}]}

NN：返回值

MM：索引,X,Y


HCFP_CmpColorsByFile

Help > 找图模块(FP) >
HCFP_CmpColorsByFile

函数简介 :

比较颜色(从文件)

函数原型 ：

__int64 __stdcall HCFP_CmpColorsByFile(__int32 窗口序号, char*orgImageName, __int32 x, __int32 y, char* deltaColor);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

orgImageName:指定一张原图数据(支持绝对路径和相对路径)

x:矩形范围左上角x

y:矩形范围左上角y

deltaColor：XXXXXX-YYYYYY 格式

返回值:

查看返回值表 HD返回值表

1找到

0未找到

备注:

无


HCFP_CmpColorsByMem

Help > 找图模块(FP) >
HCFP_CmpColorsByMem

函数简介 :

比较颜色(从内存)

函数原型 ：

__int64 __stdcall HCFP_CmpColorsByMem(__int32 窗口序号, BYTE* data, __int32 dataSize, __int32 x, __int32 y, char* deltaColor);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

x:矩形范围左上角x

y:矩形范围左上角y

deltaColor：XXXXXX-YYYYYY 格式

返回值:

查看返回值表 HD返回值表

1找到

0未找到

备注:

图片内存缓冲区自己维护


HCFP_CmpColorExsByFile

Help > 找图模块(FP) >
HCFP_CmpColorExsByFile

函数简介 :

多点找色确定某个图像块,指定多个具体点,从文件

函数原型 ：

__int64 __stdcall HCFP_CmpColorExsByFile (__int32 窗口序号, char*orgImageName, char* deltaXYColor );

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

orgImageName:指定一张原图数据(支持绝对路径和相对路径)

deltaXYColor:x1|y1|e3e6eb-101010|e3e6eb-101010|e3e6eb-101010|...,x2|y2|e3e6eb-101010|e3e6eb-101010|e3e6eb-101010|...

返回值:

查看返回值表 HD返回值表

找到返回8字节长整数包含第一个坐标点x1,y1 低4字节x1 高4字节y1

未找到返回0或者小于0

json: "{"error":0,"ret":[{"bRet":ret,"info":”X1,Y1“}]}",

备注:

无


HCFP_CmpColorExsByMem

Help > 找图模块(FP) >
HCFP_CmpColorExsByMem

函数简介 :

多点找色确定某个图像块,指定多个具体点,从内存

函数原型 ：

__int64 __stdcall HCFP_CmpColorExsByMem(__int32 窗口序号, BYTE* data, __int32 dataSize, char* deltaXYColor);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

deltaXYColor:x1|y1|e3e6eb-101010|e3e6eb-101010|e3e6eb-101010|...,x2|y2|e3e6eb-101010|e3e6eb-101010|e3e6eb-101010|...

返回值:

查看返回值表 HD返回值表

找到返回8字节长整数包含第一个坐标点x1,y1 低4字节x1 高4字节y1

未找到返回0或者小于0

json: "{"error":0,"ret":[{"bRet":ret,"info":”X1,Y1“}]}",

备注:

无


HCFP_GetColorByFile

Help > 找图模块(FP) >
HCFP_GetColorByFile

函数简介 :

获取颜色(从文件)

函数原型 ：

__int64 __stdcall HCFP_GetColorByFile(__int32 窗口序号, char*orgImageName, __int32 x, __int32 y);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

orgImageName:指定一张原图数据(支持绝对路径和相对路径)

x:矩形范围左上角x

y:矩形范围左上角y

返回值:

查看返回值表 HD返回值表

备注:

注意返回值含义和值的提取

#pragma pack(1)
typedef struct MYA8R8G8B8
{
BYTE m_a;//0x00
BYTE m_r;//低8位
BYTE m_g;//中8位
BYTE m_b;//高8位
MYA8R8G8B8()
{
m_a = 0; m_r = 0; m_g = 0; m_b = 0;
}
}MYA8R8G8B8;

#pragma pack()

json:

“{"error":0,"ret":[{"bRet":1,"info":"44,29,5B"}]}” A(0x00) r g b r红色:低8位 g绿色:中8位 b蓝色:高8位 RGB FFFFFF


HCFP_GetColorByMem

Help > 找图模块(FP) >
HCFP_GetColorByMem

函数简介 :

获取颜色(从内存)

函数原型 ：

__int64 __stdcall HCFP_GetColorByMem(__int32 窗口序号, BYTE* data, __int32 dataSize, __int32 x, __int32 y);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

x:矩形范围左上角x

y:矩形范围左上角y

返回值:

查看返回值表 HD返回值表

备注:

图片内存缓冲区自己维护

注意返回值含义和值的提取

#pragma pack(1)
typedef struct MYA8R8G8B8
{
BYTE m_a;//0x00
BYTE m_r;//低8位
BYTE m_g;//中8位
BYTE m_b;//高8位
MYA8R8G8B8()
{
m_a = 0; m_r = 0; m_g = 0; m_b = 0;
}
}MYA8R8G8B8;

#pragma pack()

json:

“{"error":0,"ret":[{"bRet":1,"info":"44,29,5B"}]}” A(0x00) r g b r红色:低8位 g绿色:中8位 b蓝色:高8位 RGB FFFFFF


找字模块(FS)

Help >
找字模块(FS)

像素找字


HCFS_SetDictFile

Help > 找字模块(FS) >
HCFS_SetDictFile

函数简介 :

设置当前像素识字的字库文件(为了提高识别效率,不支持多线程)

建议在登录回调中 最开始初始化调用

其他线程需要那个序号就切换那个序号 HCFS_SwitchCurDictFile

调用一次会给所有窗口序号添加当前设置的字库文件

函数原型 ：

__int64 __stdcall HCFS_SetDictFile(__int32 窗口序号, __int32 字库序号 ,char* file);

参数定义:

窗口序号：窗口序号

字库序号：字库序号 自定义整数类型 枚举类型 宏定义 不要小于0 ！！ 小于0用于错误返回值

file：字库文件名字(可以加路径) 最后寻找路径: 1.全局路径( HCRES_SetResPath 设置路径) + file 或者 2.包含路径的file

返回值:

查看返回值表 HD返回值表

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

这个不支持多线程,请在开启前首先设置好

类型提前添加字库,需要在当前线程使用字库必须调用 HCFS_SwitchCurDictFile 切换字库

字库文件 绑定 窗口序号
字库序号 绑定 线程
窗口序号 支持多线程多进程 来操作目标进程
可以在多线程中 通过窗口序号 拿到 所有绑定的 字库文件信息
至于在多线程中 要使用的是哪一个字库文件？ 取决于 当前线程所绑定的字库序号

总结:
1.所有字库文件 只需要和窗口序号 关联一次就行
2.在多线程中 需要使用到那个字库序号 就切换就行 多线程有自己的字库序号副本 互不影响 各自切换


HCFS_SetDictFileEx

Help > 找字模块(FS) >
HCFS_SetDictFileEx

函数简介 :

设置当前像素识字的字库文件(为了提高识别效率,不支持多线程)

请在主线程中最开始初始化调用

其他线程需要那个序号就切换那个序号 HCFS_SwitchCurDictFile

调用一次会给所有窗口序号添加当前设置的字库文件

函数原型 ：

__int64 __stdcall HCFS_SetDictFileEx(__int32 字库序号 ,char* file);

参数定义:

窗口序号：窗口序号

字库序号：字库序号 自定义整数类型 枚举类型 宏定义 不要小于0 ！！ 小于0用于错误返回值

file：字库文件名字(可以加路径) 最后寻找路径:全局路径( HCRES_SetResPath 设置路径) + file

返回值:

查看返回值表 HD返回值表

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

这个不支持多线程,请在开启前首先设置好

类型提前添加字库,需要在当前线程使用字库必须调用 HCFS_SwitchCurDictFile 切换字库


HCFS_SwitchCurDictFile

Help > 找字模块(FS) >
HCFS_SwitchCurDictFile

函数简介 :

切换当前像素识字的字库文件(支持多线程)

函数原型 ：

__int64 __stdcall HCFS_SwitchCurDictFile(__int32 窗口序号, __int32 字库序号);

参数定义:

窗口序号：窗口序号

字库序号：字库序号 自定义整数类型 枚举类型 宏定义

返回值:

查看返回值表 HD返回值表

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好

运行起来了就不能设置 否则冲突

切换字库文件可以在运行的时候切换,而HCFS_SetDictFile设置字库文件必须在初始化阶段中进行！

对于多线程操作同一个窗口序号的时候,切换字库支持多线程操作,操作前请先在主执行线程中设置字库就行其他副线程(包含主线程)就只需要切换就行


HCFS_GetCurDictInfo

Help > 找字模块(FS) >
HCFS_GetCurDictInfo

函数简介 :

获取当前线程的加载后的字库文件信息 (支持多线程)

函数原型 ：

__int64 __stdcall HCFS_GetCurDictInfo (__int32 窗口序号);

参数定义:

窗口序号：窗口序号

返回值:

查看返回值表 HD返回值表

备注:

json:

"{"error":0,"ret":[{"bRet":ret,"info":info}]}"

info:窗口索引,当前字库索引,加载了字库文件数量,(加载的字库序号,对应的字条数目)|... 如: info: 0,1,3,(1,55)|(2,55)|(3,55)|

注意返回的是当前线程的字库信息


HCFS_GetCurDictIndex

Help > 找字模块(FS) >
HCFS_GetCurDictIndex

函数简介 :

获取当前线程绑定的字库索引 (支持多线程)

函数原型 ：

__int64 __stdcall HCFS_GetCurDictIndex(__int32 窗口序号);

参数定义:

窗口序号：窗口序号

返回值 :

查看返回值表 HD返回值表

备注:

返回大于等于0的值是当前线程绑定的字库索引


HCFS_FindStr

Help > 找字模块(FS) >
HCFS_FindStr

函数简介 :

在客户区范围内找字(只支持单字符串并且是单字符字库)

函数原型 ：

__int64 __stdcall HCFS_FindStr(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR deltaColor , double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

大于0表示:高4字节为 y 低4字节为x

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->0,x1,y1,w1,h1,sim

字库格式: （兼容大漠插件字库文件）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrEx

Help > 找字模块(FS) >
HCFS_FindStrEx

函数简介 :

在客户区范围内找字(支持多字符串并且是单字符字库)

函数原型 ：

__int64 __stdcall HCFS_FindStrEx(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR deltaColor, double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串 支持多字符串 例如: 大理|无量山|溶洞 "|" 分割

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析 < /FONT>

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

字符串用 HCEnv_GetRetJson 获取

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w1,h1,sim|字符串序号,x2,y2,w2,h2,sim

字库格式: （兼容大漠插件字库文件）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrExx

Help > 找字模块(FS) >
HCFS_FindStrExx

函数简介 :

在客户区范围内找字(支持多字符串并且是单字符字库) 找到一个就返回

函数原型 ：

__int64 __stdcall HCFS_FindStrExx(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR deltaColor , double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串 支持多字符串 例如: 大理|无量山|溶洞 "|" 分割

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

字符串用 HCEnv_GetRetJson 获取

大于0表示:高4字节为 x 低4字节为y 同时字符串信息存在json中

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath 设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w1,h1,sim|字符串序号,x2,y2 ,w2,h2,sim

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilVPoints

Help > 找字模块(FS) >
HCFS_FindStrMutilVPoints

函数简介 :

单字符串找

字库是字符串

例如:洛阳 多行 返回多个坐标 一行只找一列(一次)

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilVPoints(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素参考： 水平垂直间距解析和案例分析 < /SPAN>

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

大于0表示:找到的数量

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->0,x1,y1,w,h,sim|0,x2,y2,w,h,sim |0,x3,y2,w,h,sim |...

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilVPointsByFile

Help > 找字模块(FS) >
HCFS_FindStrMutilVPointsByFile

函数简介 :

单字符串找 (原图从文件)

字库是字符串

例如:洛阳 多行 返回多个坐标 一行只找一列(一次)

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilVPointsByFile(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, LPCSTR iamgeName, __int32 bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

iamgeName:bmp图片名字,支持加路径,不加路径则在全局路径找,图片后缀不要省略(支持绝对路径和相对路径)

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析 < /SPAN>

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

大于0表示:找到的数量

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->0,x1,y1,w,h,sim| 0,x2,y2,w,h ,sim | 0,x3,y2,w,h ,sim |...

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilVPointsByMem

Help > 找字模块(FS) >
HCFS_FindStrMutilVPointsByMem

函数简介 :

单字符串找(原图从内存)

字库是字符串

例如:洛阳 多行 返回多个坐标 一行只找一列(一次)

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilVPointsByMem(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, BYTE* data, __int32 dataSize, __int32 bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

data:bmp图片格式的二进制内存数据首地址

dataSize:图片数据大小

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析 < /SPAN>

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

大于0表示:找到的数量

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->0,x1,y1,w,h,sim| 0,x2,y2,w,h,sim|0,x3,y2,w,h ,sim |...

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilHVPoints

Help > 找字模块(FS) >
HCFS_FindStrMutilHVPoints

函数简介 :

单字符串找

字库是字符串

例如:洛阳 多行多列 返回多个坐标

一行找多列(多次) 找多行

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilHVPoints(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析 < /SPAN>

返回值:

查看返回值表 HD返回值表

大于0表示:找到的数量

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->0,x1,y1,w,h,sim| 0,x2,y2,w,h,sim | 0,x3,y2,w,h ,sim |...

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilHVPointsByFile

Help > 找字模块(FS) >
HCFS_FindStrMutilHVPointsByFile

函数简介 :

单字符串找 (原图从文件)

字库是字符串

例如:洛阳 多行多列 返回多个坐标

一行找多列(多次) 找多行

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilHVPointsByFile(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, LPCSTR iamgeName, __int32 bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

iamgeName:bmp图片名字,支持加路径,不加路径则在全局路径找,图片后缀不要省略 (支持绝对路径和相对路径)

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析 < /FONT>

返回值:

查看返回值表 HD返回值表

大于0表示:找到的数量

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->0,x1,y1,w,h,sim| 0,x2,y2,w,h,sim|0,x3,y2,w,h,sim |...

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilHVPointsByMem

Help > 找字模块(FS) >
HCFS_FindStrMutilHVPointsByMem

函数简介 :

单字符串找 (原图从内存)

字库是字符串

例如:洛阳 多行多列 返回多个坐标

一行找多列(多次) 找多行

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilHVPointsByMem(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, BYTE* data, __int32 dataSize, __int32 bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

data:bmp图片格式的二进制内存数据首地址

dataSize:图片数据大小

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

大于0表示:找到的数量

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->0,x1,y1,w,h,sim| 0,x2,y2,w,h,sim | 0,x3,y2,w,h ,sim |...

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilsAuto

Help > 找字模块(FS) >
HCFS_FindStrMutilsAuto

函数简介 :

单/多字符串找 都兼容 |分割

字库是字符串或单字

找到一个就返回

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilsAuto(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR strs, LPCSTR color_format, double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串 支持多字符串 例如: 大理|无量山|溶洞 "|" 分割

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

字符串用 HCEnv_GetRetJson 获取

备注:

单 多字符串找 都兼容 |分割 找到一个就返回 字库是字符串或单字
判断规则: 拼接+完整 1.有完整先识别完整 2.无完整按拼接处理 3.有分隔符|,统一按完整字符串处理

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号(0开始),x1,y1,w,h,sim

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilsAutoByFile

Help > 找字模块(FS) >
HCFS_FindStrMutilsAutoByFile

函数简介 :

单/多字符串找 都兼容 |分割

字库是字符串或单字

找到一个就返回

可以通过指定图片来获取截图数据 其他功能和HCFS_FindStrMutilsAuto一致

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilsAutoByFile(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR strs, LPCSTR color_format, double sim, LPCSTR iamgeName, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串 支持多字符串 例如: 大理|无量山|溶洞 "|" 分割

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

iamgeName:bmp图片名字,支持加路径,不加路径则在全局路径找,图片后缀不要省略 (支持绝对路径和相对路径)

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

字符串用 HCEnv_GetRetJson 获取

备注:

单 多字符串找 都兼容 |分割 找到一个就返回 字库是字符串或单字
判断规则: 拼接+完整 1.有完整先识别完整 2.无完整按拼接处理 3.有分隔符|,统一按完整字符串处理

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath 设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w,h,sim

字库格式:（ 兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilsAutoByMem

Help > 找字模块(FS) >
HCFS_FindStrMutilsAutoByMem

函数简介 :

单/多字符串找 都兼容 |分割

字库是字符串或单字

找到一个就返回

可以通过指定图片来获取截图数据 其他功能和HCFS_FindStrMutilsAuto一致

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilsAutoByMem(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR strs, LPCSTR color_format, double sim, BYTE* data, __int32 dataSize, __int32 bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串 支持多字符串 例如: 大理|无量山|溶洞 "|" 分割

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

data:bmp图片格式的二进制内存数据首地址

dataSize:图片数据大小

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

字符串用 HCEnv_GetRetJson 获取

备注:

单 多字符串找 都兼容 |分割 找到一个就返回 字库是字符串或单字
判断规则: 拼接+完整 1.有完整先识别完整 2.无完整按拼接处理 3.有分隔符|,统一按完整字符串处理

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath 设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w,h,sim

字库格式:（ 兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilsAutoEx

Help > 找字模块(FS) >
HCFS_FindStrMutilsAutoEx

函数简介 :

单/多字符串找 都兼容 |分割

字库是字符串或单字

找到全部或仅仅找一个

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilsAutoEx(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR strs, LPCSTR color_format, double sim, long bfx, __int32 dirType= 0, __int32 bFindOne= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串 支持多字符串 例如: 大理|无量山|溶洞 "|" 分割

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

bFindOne:是否找到一个就返回

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1 参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启 参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

字符串用 HCEnv_GetRetJson 获取

备注:

单 多字符串找 都兼容 |分割 找到一个就返回 字库是字符串或单字
判断规则: 拼接+完整 1.有完整先识别完整 2.无完整按拼接处理 3.有分隔符|,统一按完整字符串处理

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号(0开始),x1,y1,w,h,sim

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilsAutoByFileEx

Help > 找字模块(FS) >
HCFS_FindStrMutilsAutoByFileEx

函数简介 :

单/多字符串找 都兼容 |分割

字库是字符串或单字

找到全部或仅仅找一个

可以通过指定图片来获取截图数据 其他功能和HCFS_FindStrMutilsAuto一致

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilsAutoByFileEx(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR strs, LPCSTR color_format, double sim, LPCSTR iamgeName, long bfx, __int32 dirType= 0, __int32 bFindOne=0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串 支持多字符串 例如: 大理|无量山|溶洞 "|" 分割

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

iamgeName:bmp图片名字,支持加路径,不加路径则在全局路径找,图片后缀不要省略 (支持绝对路径和相对路径)

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

bFindOne:是否找到一个就返回

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

字符串用 HCEnv_GetRetJson 获取

备注:

单 多字符串找 都兼容 |分割 找到一个就返回 字库是字符串或单字
判断规则: 拼接+完整 1.有完整先识别完整 2.无完整按拼接处理 3.有分隔符|,统一按完整字符串处理

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath 设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w,h,sim

字库格式:（ 兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilsAutoByMemEx

Help > 找字模块(FS) >
HCFS_FindStrMutilsAutoByMemEx

函数简介 :

单/多字符串找 都兼容 |分割

字库是字符串或单字

找到全部或仅仅找一个

可以通过指定图片来获取截图数据 其他功能和HCFS_FindStrMutilsAuto一致

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilsAutoByMemEx(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR strs, LPCSTR color_format, double sim, BYTE* data, __int32 dataSize, __int32 bfx, __int32 dirType= 0, __int32 bFindOne =0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串 支持多字符串 例如: 大理|无量山|溶洞 "|" 分割

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

data:bmp图片格式的二进制内存数据首地址

dataSize:图片数据大小

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

bFindOne:是否找到一个就返回 默认0表示全部找

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素参考： 水平垂直间距解析和案例分析

groundRate:一个字的周围占比 默认0.1参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

字符串用 HCEnv_GetRetJson 获取

备注:

单 多字符串找 都兼容 |分割 找到一个就返回 字库是字符串或单字
判断规则: 拼接+完整 1.有完整先识别完整 2.无完整按拼接处理 3.有分隔符|,统一按完整字符串处理

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath 设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w,h,sim

字库格式:（ 兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutil

Help > 找字模块(FS) >
HCFS_FindStrMutil

函数简介 :

单字符串找 字库是字符串 例如:洛阳

函数原型 ：

__int64 __stdcall HCFS_FindStrMutil(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

在客户区范围内找字符串(只支持单字符串) ,同时字库是字符串

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w1,h1,sim|字符串序号,x2,y2,w2,h2,sim

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilsEx

Help > 找字模块(FS) >
HCFS_FindStrMutilsEx

函数简介 :

多字符串找 字库是字符串 例如:洛阳| 北京|广州

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilsEx(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

在客户区范围内找字符串(只支持单字符串) ,同时字库是字符串

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w1,h1,sim| 字符串序号,x2,y2,w2,h2,sim

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_FindStrMutilsExx

Help > 找字模块(FS) >
HCFS_FindStrMutilsExx

函数简介 :

多字符串找 字库是字符串 例如:洛阳| 北京|广州 找到一个就返回

函数原型 ：

__int64 __stdcall HCFS_FindStrMutilsExx(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR str, LPCSTR color_format, double sim, long bfx, __int32 dirType= 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

str：需要找找的字符串

color_format：偏色(如:303030) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型 / 方向类型 排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素 参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

MAKEXYWHTO8(fx1, fy1, w, h);

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

在客户区范围内找字符串(只支持单字符串) ,同时字库是字符串

json:

{error:0, ret :[{ bRet:1,info:识字结果}]}"

info格式->字符串序号,x1,y1,w1,h1,sim| 字符串序号,x2,y2,w2,h2,sim

字库格式:（兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_Ocr

Help > 找字模块(FS) >
HCFS_Ocr

函数简介 :

在客户区范围内识别字

字库是字符串或单字

拼接+字符串都支持

函数原型 ：

__int64 __stdcall HCFS_Ocr(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR deltaColor, double sim, long bfx, __int32 dirType = 0, int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型/ 方向类型排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素参考： 水平垂直间距解析和案例分析

groundRate:一个字的周围占比 默认0.1参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

字符串用HCEnv_GetRetJson获取

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath 设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{"error":0,"ret":AAA,"info":BBB}

AAA:0未找到 1找到

BBB:json数组 如: [{"x":0,"y":0,"text":“NULL”}]表示未找到 类似这样 [{"x":123,"y":456,"text":"洛阳"},{"x":654,"y":987,"text":"洱海"}] 表示找到了

格式化字符串:

未找到: "{\"error\":0,\"ret\":%lld,\"info\":[{\"x\":0,\"y\":0,\"text\":\"NULL\"}]}"

找到:"{\"error\":0,\"ret\":%lld,\"info\":%s}"

字库格式:（ 兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_OcrByFile

Help > 找字模块(FS) >
HCFS_OcrByFile

函数简介 :

在客户区范围内识别字

字库是字符串或单字

拼接+字符串都支持

函数原型 ：

__int64 __stdcall HCFS_OcrByFile(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR color_format, double sim, LPCSTR iamgeName, __int32 bfx, __int32 dirType= 0 , int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11 = TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

iamgeName:指定一张识字的图片文件(.bmp),支持加路径,不加路径则在全局路径找,图片后缀不要省略(支持绝对路径和相对路径)

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型/ 方向类型排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素参考： 水平垂直间距解析和案例分析

groundRate: 一个字的周围占比 默认0.1参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

字符串用 HCEnv_GetRetJson 获取

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{"error":0,"ret":AAA,"info":BBB}

AAA:0未找到 1找到

BBB:json数组 如: [{"x":0,"y":0,"text":“NULL”}]表示未找到 类似这样 [{"x":123,"y":456,"text":"洛阳"},{"x":654,"y":987,"text":"洱海"}] 表示找到了

格式化字符串:

未找到: "{\"error\":0,\"ret\":%lld,\"info\":[{\"x\":0,\"y\":0,\"text\":\"NULL\"}]}"

找到:"{\"error\":0,\"ret\":%lld,\"info\":%s}"

字库格式:（ 兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_OcrByMem

Help > 找字模块(FS) >
HCFS_OcrByMem

函数简介 :

在客户区范围内识别字

字库是字符串或单字

拼接+字符串都支持

函数原型 ：

__int64 __stdcall HCFS_OcrByMem(__int32 窗口序号, long findX, long findY, long findW, long findH, LPCSTR color_format, double sim, BYTE* data, __int32 dataSize, __int32 bfx, __int32 dirType= 0 , int spaceH = 11, int spaceV = 11, double groundRate = 0.1, BOOL bOne11= TRUE);

参数定义:

窗口序号:窗口序号 (从1开始) 0表示全局全屏识别

x:矩形范围左上角x

y:矩形范围左上角y

w:矩形范围宽度

h:矩形范围高度

deltaColor：偏色(如: ffffff-000000|1c1c1c-000000) RGB 十六进制 "|" 分割 多点找字

sim：整个像素矩阵的相似度

data:bmp图片格式的二进制内存数据首地址

dataSize:图片数据大小

bfx:是否开启反向相似度(开启更精准,但是对于一些小范围的可能会过滤掉,一般开启就行)

dirType :排序类型/ 方向类型排序/方向类型

spaceH:字体水平间距 默认11像素 参考： 水平垂直间距解析和案例分析

spaceV:字体垂直间距 默认11像素参考： 水平垂直间距解析和案例分析

groundRate:一个字的周围占比 默认0.1参考： 周围占比解析和案例分析

bOne11:一个字是否独占11像素 默认真/TREU/开启参考： one11解析和案例分析

返回值:

查看返回值表 HD返回值表

字符串用 HCEnv_GetRetJson 获取

备注:

字库文件会在资源路径下寻找，还需要调用HCRES_SetResPath设置路径

设置后会自动解析文件字库数据

设置字库文件 初始化要全部设置好 运行起来了就不能设置 否则冲突

json:

{"error":0,"ret":AAA,"info":BBB}

AAA:0未找到 1找到

BBB:json数组 如: [{"x":0,"y":0,"text":“NULL”}]表示未找到 类似这样 [{"x":123,"y":456,"text":"洛阳"},{"x":654,"y":987,"text":"洱海"}] 表示找到了

格式化字符串:

未找到: "{\"error\":0,\"ret\":%lld,\"info\":[{\"x\":0,\"y\":0,\"text\":\"NULL\"}]}"

找到:"{\"error\":0,\"ret\":%lld,\"info\":%s}"

字库格式:（ 兼容大漠插件字库文件 ）

3FE7FCD9FFFFFE7FCFFBFFFFF98FFFB1E0001C0FFFFFE707E1EC398FFFFFCCC198130$邮件$0.0.196$13 ----》字符串字库

009813FE7FC008$1$0.0.23$9 ----》单字符字库


HCFS_SetCharSpaceHV

Help > 找字模块(FS) >
HCFS_SetCharSpaceHV

函数简介 :

设置间距 (在识别拼接字和OCR中尤其重要) -丢弃 改为每个接口单独设置

函数原型 ：

__int64 __stdcall HCFS_SetCharSpaceHV(int lenH = 11, int lenV = 11);

参数定义:

lenH:水平方向的间距 默认11像素

lenV:垂直方向的间距 默认11像素

返回值:

查看返回值表 HD返回值表

备注:

1.当相邻的字/数字/字母/符号,在间距范围内,才被认为是一个整体(字符串)

2.不明白什么是水平垂直间距请前往查看水平垂直间距解析和案例分析

3.这种对于数字和符号,尤其重要


HCFS_IsOne11

Help > 找字模块(FS) >
HCFS_IsOne11

函数简介 :

设置11行中(同宽)矩形内,是否只有一个字 -丢弃 改为每个接口单独设置

函数原型 ：

__int64 __stdcall HCFS_IsOne11(BOOL b = TRUE);

参数定义:

b:是否打开 默认打开

返回值:

查看返回值表 HD返回值表

返回当前开关状态 0/1

备注:

1.如果打开识别速度快,关闭速度慢一点(不影响多少)

2.如果这个i这个字,由2个字符组成 '.' 和'|'

3.如果打开表示i是一个整体识别,不能拆开识别

4.如果关闭表示i可以拆分成2个字符分别识别


HCFS_GroundRate

Help > 找字模块(FS) >
HCFS_GroundRate

函数简介 :

设置字周围一个像素 上下左右的像素占比 -丢弃 改为每个接口单独设置

函数原型 ：

double __stdcall HCFS_GroundRate(double rate = 0.1);

参数定义:

rate:占比 分别是4个方向的上下左右

返回值:

查看返回值表 HD返回值表

备注:

1.对于那种连体字的情况下占比越高,可能识别的不准确
2.这个相当于一个容错率占比
3.返回当前设置后的占比
4.默认0.1

5.这种对于数字和符号,尤其重要,可以准确的提高识别率,越小的字效果越好


水平垂直间距解析和案例分析

Help > 找字模块(FS) >
水平垂直间距解析和案例分析

1


周围占比解析和案例分析

Help > 找字模块(FS) >
周围占比解析和案例分析


one11解析和案例分析

Help > 找字模块(FS) >
one11解析和案例分析


智能识图模块(FI)

Help >
智能识图模块(FI)

视频效果链接: https://www.bilibili.com/video/BV1Dp4y1A7un/?spm_id_from=333.999.0.0&vd_source=62d93c95eb96c13685513f7775af114a

PS:最好复制到浏览器打开


HCFI_FindImage

Help > 智能识图模块(FI) >
HCFI_FindImage

函数简介 :

识图(返回的是圆型的圆点)

函数原型：

__int64 __stdcall HCFI_FindImageA(__int32 窗口序号, char*图片名字集合, double sim = 0.8, BOOL 是否灰度图 = FALSE, BOOL 是否打开查看器 = FALSE);
__int64 __stdcall HCFI_FindImageW(__int32 窗口序号, wchar_t*图片名字集合, double sim = 0.8, BOOL 是否灰度图 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp|

sim:相似度0-1

是否灰度图:是否灰度图 一般开启就行

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"data":[{"x":XX,"y":YY},{"x":XX,"y":YY},{"x":XX,"y":YY}],"time":ZZZ}

每张图会有1个坐标点(圆点)

AAA:表示找到几个
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindImageEx

Help > 智能识图模块(FI) >
HCFI_FindImageEx

函数简介 :

识图(返回的是矩形左上角和右下角)

函数原型：

__int64 __stdcall HCFI_FindImageExA(__int32 窗口序号, char*图片名字集合, double sim = 0.8, BOOL 是否灰度图 = FALSE, BOOL 是否打开查看器 = FALSE);
__int64 __stdcall HCFI_FindImageExW(__int32 窗口序号, wchar_t*图片名字集合, double sim = 0.8, BOOL 是否灰度图 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp|

sim:相似度0-1

是否灰度图:是否灰度图 一般开启就行

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"data":[{"x1":XX,"y1":YY,"x2":XX,"y2":YY},{"x1":XX,"y1":YY,"x2":XX,"y2":YY}],"time":ZZZ}

每张图会有2个坐标点(左上角+右下角)

AAA:表示找到几个
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindRangeImage

Help > 智能识图模块(FI) >
HCFI_FindRangeImage

函数简介 :

范围内识图

函数原型 ：

__int64 __stdcall HCFI_FindRangeImageA (__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, char*图片名字集合, __int32 type = 0, double sim = 0.8, BOOL 是否灰度图 = FALSE, BOOL 是否打开查看器 = FALSE);
__int64 __stdcall HCFI_FindRangeImageW (__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, wchar_t*图片名字集合, __int32 type = 0, double sim = 0.8 , BOOL 是否灰度图 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

x,y,w,h:左上角+高度+宽度

图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp|

type:0表示返回圆点 1表示返回矩形左上角和右下角

sim:相似度0-1

是否灰度图:是否灰度图 一般开启就行

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"data":[{"x":XX,"y":YY},{"x":XX,"y":YY},{"x":XX,"y":YY}]} type==0< /STRONG>

每张图会有1个坐标点(圆点)

{"error":0,"ret":AAA,"data":[{"x1":XX,"y1":YY,"x2":XX,"y2":YY},{"x1":XX,"y1":YY,"x2":XX,"y2":YY}]} type==1< /STRONG>

每张图会有2个坐标点(左上角+右下角)

AAA:表示找到几个
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindImageTem*

Help > 智能识图模块(FI) >
HCFI_FindImageTem*

函数简介 :

识图

函数原型：

__int64 __stdcall HCFI_FindImageTemA(__int32 窗口序号, char*图片名字集合, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE, BOOL 是否全部 = FALSE,BOOL 是否打开查看器 = FALSE);
__int64 __stdcall HCFI_FindImageTemW(__int32 窗口序号, wchar_t*图片名字集合, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE, BOOL 是否全部 = FALSE,BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp|

sim:相似度0-1

type:0 1 2 3 4 5 一共6种算法 一般用3或5就行 其他效率不高,不精准，一般默认5就行，特别的情况根据实际情况而定

是否灰度图:是否灰度图 一般开启就行

是否全部:找出全部结果（在原图中找出所有子图） 仅仅支持type(第四个参数) :3 4 5的情况下 内部会自动过滤去重矩形

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"size":BBB,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}

解析字段含义:
error:错误值 0表示没有错误
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量),这个值和index值作为最终是否找到的依据
BBB:表示去重矩形数据前的大小,作为一个参考值,如果参数(是否全部==假),AAA和BBB值一样,否则不一样
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindRangeImageTem*

Help > 智能识图模块(FI) >
HCFI_FindRangeImageTem*

函数简介 :

范围识图

函数原型：

__int64 __stdcall HCFI_FindRangeImageTemA(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, char*图片名字集合, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE, BOOL 是否全部 = FALSE, BOOL 是否打开查看器 = FALSE);
__int64 __stdcall HCFI_FindRangeImageTemW(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, wchar_t*图片名字集合, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE, BOOL 是否全部 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

x,y,w,h:左上角+高度+宽度

图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp|

sim:相似度0-1

type:0 1 2 3 4 5 一共6种算法 一般用3或5就行 其他效率不高,不精准，一般默认5就行，特别的情况根据实际情况而定

是否灰度图:是否灰度图 一般开启就行

是否全部:找出全部结果（在原图中找出所有当前遍历的子图,找完就继续下一张,否则就找到一张子图就开始下一张） 仅仅支持type(第四个参数) :3 4 5的情况下 内部会自动过滤去重矩形

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"size":BBB,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}

解析字段含义:
error:错误值 0表示没有错误
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量),这个值和index值作为最终是否找到的依据
BBB:表示去重矩形数据前的大小,作为一个参考值,如果参数(是否全部==假),AAA和BBB值一样,否则不一样
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindImageByFile

Help > 智能识图模块(FI) >
HCFI_FindImageByFile

函数简介 :

从文件中加载截图数据并识图(返回的是矩形左上角和右下角)

函数原型：

__int64 __stdcall HCFI_FindImageByFile(__int32 窗口序号, char*原图名字, char*子图片名字集合, double sim = 0.9,BOOL 是否灰度图 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

原图名字:指定一张原图文件名(支持绝对路径和相对路径)

图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp| (支持绝对路径和相对路径)

sim:相似度0-1

是否灰度图:是否灰度图 一般开启就行

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"data":[{"x1":XX,"y1":YY,"x2":XX,"y2":YY},{"x1":XX,"y1":YY,"x2":XX,"y2":YY}],"time":ZZZ}

每张图会有2个坐标点(左上角+右下角)

AAA:表示找到几个
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindImageTemByFile*

Help > 智能识图模块(FI) >
HCFI_FindImageTemByFile*

函数简介 :

从文件中加载截图数据并识图(返回的是矩形左上角和右下角)

函数原型：

__int64 __stdcall HCFI_FindImageTemByFile (__int32 窗口序号, char*原图名字, char*子图片名字集合, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE, BOOL 是否全部 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

原图名字:指定一张原图文件名(支持绝对路径和相对路径)

子图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp|(支持绝对路径和相对路径)

sim:相似度0-1

type:0 1 2 3 4 5 一共6种算法 一般用3或5就行 其他效率不高,不精准，一般默认5就行，特别的情况根据实际情况而定

是否灰度图:是否灰度图 一般开启就行

是否全部:找出全部结果（在原图中找出所有子图） 仅仅支持type(第四个参数) :3 4 5的情况下 内部会自动过滤去重矩形

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":AAA,"size":BBB,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}

解析字段含义:
error:错误值 0表示没有错误
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量),这个值和index值作为最终是否找到的依据
BBB:表示去重矩形数据前的大小,作为一个参考值,如果参数(是否全部==假),AAA和BBB值一样,否则不一样
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindRangeImageTemByFile*

Help > 智能识图模块(FI) >
HCFI_FindRangeImageTemByFile*

函数简介 :

范围识图(原图从文件)

函数原型：

__int64 __stdcall HCFI_FindRangeImageTemByFile(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, char*原图名字, char*图片名字集合, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE,BOOL 是否全部 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

x,y,w,h:左上角+高度+宽度

原图名字:指定一张原图文件名(支持绝对路径和相对路径)

图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp|

sim:相似度0-1

type:0 1 2 3 4 5 一共6种算法 一般用3或5就行 其他效率不高,不精准，一般默认5就行，特别的情况根据实际情况而定

是否灰度图:是否灰度图 一般开启就行

是否全部:找出全部结果（在原图中找出所有子图） 仅仅支持type(第四个参数) :3 4 5的情况下 内部会自动过滤去重矩形

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"size":BBB,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}

解析字段含义:
error:错误值 0表示没有错误
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量),这个值和index值作为最终是否找到的依据
BBB:表示去重矩形数据前的大小,作为一个参考值,如果参数(是否全部==假),AAA和BBB值一样,否则不一样
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindImageByMem

Help > 智能识图模块(FI) >
HCFI_FindImageByMem

函数简介 :

从内存中加载截图数据并识图(返回的是矩形左上角和右下角)

函数原型：

__int64 __stdcall HCFI_FindImageByMem(__int32 窗口序号, BYTE*data, __int32 dataSize, char*子图片名字集合, double sim = 0.8, BOOL 是否灰度图 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp| (支持绝对路径和相对路径)

sim:相似度0-1

是否灰度图:是否灰度图 一般开启就行

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量)
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindImageTemByMem*

Help > 智能识图模块(FI) >
HCFI_FindImageTemByMem*

函数简介 :

识图(原图从内存)

函数原型：

__int64 __stdcall HCFI_FindImageTemByMem(__int32 窗口序号, BYTE*data, __int32 dataSize, char*子图片名字集合, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE, BOOL 是否全部 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

sim:相似度0-1

type:0 1 2 3 4 5 一共6种算法 一般用3或5就行 其他效率不高,不精准，一般默认5就行，特别的情况根据实际情况而定

是否灰度图:是否灰度图 一般开启就行

是否全部:找出全部结果（在原图中找出所有子图） 仅仅支持type(第四个参数) :3 4 5的情况下 内部会自动过滤去重矩形

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"size":BBB,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}

解析字段含义:
error:错误值 0表示没有错误
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量),这个值和index值作为最终是否找到的依据
BBB:表示去重矩形数据前的大小,作为一个参考值,如果参数(是否全部==假),AAA和BBB值一样,否则不一样
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindRangeImageTemByMem*

Help > 智能识图模块(FI) >
HCFI_FindRangeImageTemByMem*

函数简介 :

从内存中加载截图数据并识图(返回的是矩形左上角和右下角)

函数原型：

__int64 __stdcall HCFI_FindRangeImageTemByMem(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h, BYTE*data, __int32 dataSize, char*图片名字集合, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE, BOOL 是否全部 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

x,y,w,h:左上角+高度+宽度

data:Bmp图片字节数据缓冲区地址

dataSize:Bmp图片字节大小

子图片名字集合:如:hd1.bmp|hd2.bmp|hd3.bmp|hd4.bmp|(支持绝对路径和相对路径)

sim:相似度0-1

type:0 1 2 3 4 5 一共6种算法 一般用3或5就行 其他效率不高,不精准，一般默认5就行，特别的情况根据实际情况而定

是否灰度图:是否灰度图 一般开启就行

是否全部:找出全部结果（在原图中找出所有子图） 仅仅支持type(第四个参数) :3 4 5的情况下 内部会自动过滤去重矩形

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"size":BBB,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}

解析字段含义:
error:错误值 0表示没有错误
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量),这个值和index值作为最终是否找到的依据
BBB:表示去重矩形数据前的大小,作为一个参考值,如果参数(是否全部==假),AAA和BBB值一样,否则不一样
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindImageTemFromMem*

Help > 智能识图模块(FI) >
HCFI_FindImageTemFromMem*

函数简介 :

识图(子图从内存)

函数原型：

__int64 __stdcall HCFI_FindImageTemFromMem(__int32 窗口序号,char*子图内存地址集合字符串, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE, BOOL 是否全部 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

子图内存地址集合字符串: "地址1,长度1|地址2,长度2|地址3,长度3" 地址和长度用十进制表示

sim:相似度0-1

type:0 1 2 3 4 5 一共6种算法 一般用3或5就行 其他效率不高,不精准，一般默认5就行，特别的情况根据实际情况而定

是否灰度图:是否灰度图 一般开启就行

是否全部:找出全部结果（在原图中找出所有子图） 仅仅支持type(第四个参数) :3 4 5的情况下 内部会自动过滤去重矩形

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":AAA,"size":BBB,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}

解析字段含义:
error:错误值 0表示没有错误
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量),这个值和index值作为最终是否找到的依据
BBB:表示去重矩形数据前的大小,作为一个参考值,如果参数(是否全部==假),AAA和BBB值一样,否则不一样
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


HCFI_FindRangeImageTemFromMem*

Help > 智能识图模块(FI) >
HCFI_FindRangeImageTemFromMem*

函数简介 :

范围识图 (子图从内存)

函数原型 ：

__int64 __stdcall HCFI_FindRangeImageTemFromMem(__int32 窗口序号, __int32 x, __int32 y, __int32 w, __int32 h,char*子图内存地址集合字符串, double sim = 0.9, __int32 type = 5, BOOL 是否灰度图 = FALSE,BOOL 是否全部 = FALSE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

x,y,w,h:左上角+高度+宽度

子图内存地址集合字符串: "地址1,长度1|地址2,长度2|地址3,长度3" 地址和长度用十进制表示

sim:相似度0-1

type:0 1 2 3 4 5 一共6种算法 一般用3或5就行 其他效率不高,不精准，一般默认5就行，特别的情况根据实际情况而定

是否灰度图:是否灰度图 一般开启就行

是否全部:找出全部结果（在原图中找出所有子图） 仅仅支持type(第四个参数) :3 4 5的情况下 内部会自动过滤去重矩形

是否打开查看器:是否打开

返回值 :

查看返回值表 HD返回值表

备注:
图片越多耗时多长

json:

{"error":0,"ret":AAA,"size":BBB,"data":[{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f},{"i":index,"x1":XX,"y1":YY,"x2":XX,"y2":YY "max":0.0f}]}

解析字段含义:
error:错误值 0表示没有错误
每张图对应会有图片索引+2个坐标点(左上角+右下角)+置信度(max)
index:图片集合指定的索引(0开始) 如:"洛阳.bmp|洱海.bmp|" (洛阳.bmp)索引就是0
AAA:表示找到几个(真正的找到数量),这个值和index值作为最终是否找到的依据
BBB:表示去重矩形数据前的大小,作为一个参考值,如果参数(是否全部==假),AAA和BBB值一样,否则不一样
XX:X坐标
YY:Y坐标
XX或YY: -1图片打不开 -2未找到匹配点 -3匹配点小于0
max:置信度
time:毫秒耗时
data:是一个json数组,每一个元素是一个XY坐标分别对应图片路径参数的位置


智能识字模块(RC)

Help >
智能识字模块(RC)

智能识别-丢弃

视频演示链接:https://www.bilibili.com/video/BV1LH4y1f7Bx/?spm_id_from=333.999.0.0

PS:最好复制到浏览器打开

自助标注

自助训练

自助测试


HCRC_InitRCServer

Help > 智能识字模块(RC) >
HCRC_InitRCServer

函数简介 :

初始化识别服务器

函数原型 ：

__int64 __stdcall HCRC_InitRCServer(__int32 窗口序号, char *语言库名字);

参数定义:

窗口序号:窗口序号 (从1开始)

语言库名字:在全局语言路径中找指定的语言库名字

返回值:

查看返回值表 HD返回值表

备注:

无


HCRC_OpenRCServer

Help > 智能识字模块(RC) >
HCRC_OpenRCServer

函数简介 :

打开识别服务器

函数原型 ：

__int64 __stdcall HCRC_OpenRCServer(__int32 窗口序号);

参数定义:

窗口序号:窗口序号 (从1开始)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCRC_StopRCServer

Help > 智能识字模块(RC) >
HCRC_StopRCServer

函数简介:

停止识别服务器

函数原型：

__int64 __stdcall HCRC_StopRCServer(__int32 窗口序号);

参数定义:

窗口序号:窗口序号 (从1开始)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCRC_SwitchRCServer

Help > 智能识字模块(RC) >
HCRC_SwitchRCServer

函数简介 :

切换识字服务:主要针对语言字体文件的切换

函数原型 ：

__int64 __stdcall HCRC_SwitchRCServer(__int32 窗口序号, char *语言库名字);

参数定义:

窗口序号:窗口序号 (从1开始)

语言库名字:在全局语言路径中找指定的语言库名字

返回值:

查看返回值表 HD返回值表

备注:

内部实现原理:先停止之前的服务(HCRC_StopRCServer)重新初始化(HCRC_InitRCServer)然后重新开启(HCRC_OpenRCServer)


HCRC_RecognitionChar

Help > 智能识字模块(RC) >
HCRC_RecognitionChar

函数简介:

智能识字

函数原型：

__int64 __stdcall HCRC_RecognitionCharA(__int32 窗口序号, char*图片名字, int 二值化阈值 = 127, int 置信度 = 80, BOOL 开启灰度图 = TRUE, BOOL 是否打开查看器 = FALSE);
__int64 __stdcall HCRC_RecognitionCharW(__int32 窗口序号, wchar_t*图片名字, int 二值化阈值 = 127, int 置信度 = 80, BOOL 开启灰度图 = TRUE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

图片名字:图片名字(支持绝对路径和相对路径)

二值化阈值:0-255范围内指定,一般中间就合适,默认127,工具的裁剪功能上可以实时编辑查看,确定阈值后填写

置信度:0-100值越高越精准

开启灰度图:再原有二值化上先灰度图再二值化,如果为假表示不灰度图直接再原图的基础上二值化

是否打开查看器 :是否打开查看器

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":AAA,"data":[{"image":XXX},{"image":YYY}],"time":ZZZ}
XXX->图片识别后的结果(字符串)
每一个{"image":XXX}是一个识别的字符串,对应<参数:图片名字集合>索引

XXX:格式

"%s,%0.2f,%d,%d,%d,%d|"

字符串1,置信度1,x1,y1,x2,y2|字符串2,置信度2,x1,y1,x2,y2|...|


HCRC_RecognitionCharEx

Help > 智能识字模块(RC) >
HCRC_RecognitionCharEx

函数简介:

指定范围内智能识字

函数原型：

__int64 __stdcall HCRC_RecognitionCharExA(__int32 窗口序号, char*图片名字, __int32 x1 = -1, __int32 y1 = -1, __int32 x2 = -1, __int32 y2 = -1, int 二值化阈值 = 127, int 置信度 = 80, BOOL 开启灰度图 = TRUE, BOOL 是否打开查看器 = FALSE);
__int64 __stdcall HCRC_RecognitionCharExW(__int32 窗口序号, wchar_t*图片名字, __int32 x1 = -1, __int32 y1 = -1, __int32 x2 = -1, __int32 y2 = -1, int 二值化阈值 = 127, int 置信度 = 80, BOOL 开启灰度图 = TRUE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

图片名字:图片名字(支持绝对路径和相对路径)

x1,y1,x2,y2:左上角-右下角组成一个矩形范围

二值化阈值:0-255范围内指定,一般中间就合适,默认127,工具的裁剪功能上可以实时编辑查看,确定阈值后填写

置信度:0-100值越高越精准

开启灰度图:再原有二值化上先灰度图再二值化,如果为假表示不灰度图直接再原图的基础上二值化

是否打开查看器 : 是否打开查看器

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":AAA,"data":[{"image":XXX},{"image":YYY}],"time":ZZZ}
XXX->图片识别后的结果(字符串)
每一个{"image":XXX}是一个识别的字符串,对应<参数:图片名字集合>索引

XXX:格式

"%s,%0.2f,%d,%d,%d,%d|"

字符串1,置信度1,x1,y1,x2,y2|字符串2,置信度2,x1,y1,x2,y2|...|


HCRC_RecognitionCharByMemory

Help > 智能识字模块(RC) >
HCRC_RecognitionCharByMemory

函数简介 :

从内存图片数据中范围内智能识字

函数原型 ：

__int64 __stdcall HCRC_RecognitionCharByMemoryA(__int32 窗口序号, __int64 pData, __int32 宽度, __int32 高度, __int32 x1 = -1, __int32 y1 = -1, __int32 x2 = -1, __int32 y2 = -1, int 二值化阈值 = 127, int 置信度 = 80, BOOL 开启灰度图 = TRUE, BOOL 是否打开查看器 = FALSE);
__int64 __stdcall HCRC_RecognitionCharByMemoryW(__int32 窗口序号, __int64 pData, __int32 宽度, __int32 高度, __int32 x1 = -1, __int32 y1 = -1, __int32 x2 = -1, __int32 y2 = -1, int 二值化阈值 = 127, int 置信度 = 80, BOOL 开启灰度图 = TRUE, BOOL 是否打开查看器 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

pData:图片内存数据(格式:MYA8R8G8B8)

宽度:图片内存数据宽度

高度:图片内存数据高度

x1,y1,x2,y2:左上角-右下角组成一个矩形范围 默认-1表示全部

二值化阈值:0-255范围内指定,一般中间就合适,默认127,工具的裁剪功能上可以实时编辑查看,确定阈值后填写

置信度:0-100值越高越精准

开启灰度图:再原有二值化上先灰度图再二值化,如果为假表示不灰度图直接再原图的基础上二值化

是否打开查看器 :是否打开查看器

格式:

#pragma  pack(1)
typedef
struct MYA8R8G8B8
{
BYTE m_a;
BYTE m_r;
BYTE m_g;
BYTE m_b;
MYA8R8G8B8()
{
m_a =
0; m_r = 0; m_g = 0; m_b = 0;
}
}MYA8R8G8B8;

#pragma pack()

返回值:

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":AAA,"data":[{"image":XXX},{"image":YYY}],"time":ZZZ}
XXX->图片识别后的结果(字符串)
每一个{"image":XXX}是一个识别的字符串,对应<参数:图片名字集合>索引.

XXX:格式

"%s,%0.2f,%d,%d,%d,%d|"

字符串1,置信度1,x1,y1,x2,y2|字符串2,置信度2,x1,y1,x2,y2|...|


后台键鼠(MKB)

Help >
后台键鼠(MKB)

前台(*标记)+后台


HCMKB_Bind

Help > 后台键鼠(MKB) >
HCMKB_Bind

函数简介:

绑定窗口

函数原型 ：

__int64 __stdcall HCMKB_Bind(__int32 窗口序号, __int64 hwnd, char *绑定属性 = NULL);

参数定义:

窗口序号：窗口序号

hwnd:窗口句柄

绑定属性:0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|" 20个值 1是选中 0未选中 为NULL表示全部选中

例如:

"1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|0|0|0|0|" 取消raw输入

如下:属性表

返回值:

查看返回值表 HD返回值表

备注:

如果绑定属性 "normal"或者"Normal" 表示窗口前台模式！！！！ 直接用的是sendmessage发消息 对于一些普通窗口有效 大概率会被拦截 这个时候请直接使用全局前台模式,具体看下面解析说明

如果之前后台了,当切换到窗口前台会自动解绑后台

绑定属性表: 注意顺序！！

属性值 索引

//dx.mouse.position.lock.api|dx.mouse.position.lock.message 1
//dx.mouse.focus.input.api|dx.mouse.focus.input.message 2
//dx.mouse.clip.lock.api 3
//dx.mouse.input.lock.api 4
//dx.mouse.state.api 5
//dx.mouse.api 6
//dx.mouse.cursor 7
//dx.mouse.raw.input 8
//dx.mouse.input.lock.api2 9
//dx.mouse.input.lock.api3 10
//dx.keypad.input.lock.api 11
//dx.keypad.state.api 12
//dx.keypad.api 13
//dx.keypad.raw.input 14
//dx.public.active.api 15
//dx.public.active.api2 16
//dx.public.input.ime 17
//dx.public.disable.window.show 18
//dx.public.down.cpu 19
//dx.public.focus.api 20

解析说明: 绑定模式 窗口序号 拦截概率 是否调用绑定接口

1.窗口后台模式 如："1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|0|0|0|0|" 窗口序号1-61 极低 需要

1.1.模拟后台键鼠和输入(高级模拟) 坐标是窗口客户区坐标

2.窗口前台模式 如："normal"或者"Normal" 窗口序号1-61 对于一些保护窗口很大概率 需要

2.1.通过发window消息模拟(普通模拟) 坐标是窗口客户区坐标

3.全局前台模式 如 : 无 窗口序号为-1 极低 不需要

3.1会影响鼠标位置 坐标是屏幕坐标


HCMKB_BindEx

Help > 后台键鼠(MKB) >
HCMKB_BindEx

函数简介 :

绑定窗口

函数原型 ：

__int64 __stdcall HCMKB_BindEx(__int32 窗口序号, __int64 hwnd, char *绑定属性 = NULL, __int32 bRetMove = 1);

参数定义:

窗口序号：窗口序号

hwnd:窗口句柄

绑定属性:0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|" 20个值 1是选中 0未选中 为NULL表示全部选中

例如:"1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|"

bRetMove：是否刷新窗口 有些窗口需要刷新后台键鼠才正常

如下:属性表

返回值:

查看返回值表 HD返回值表

备注:

如果绑定属性 "normal"或者"Normal" 表示窗口前台模式！！！！ 直接用的是sendmessage发消息 对于一些普通窗口有效 大概率会被拦截 这个时候请直接使用全局前台模式,具体看下面解析说明

如果之前后台了,当切换到窗口前台会自动解绑后台

绑定属性表: 注意顺序！！

属性值 索引

//dx.mouse.position.lock.api|dx.mouse.position.lock.message 1
//dx.mouse.focus.input.api|dx.mouse.focus.input.message 2
//dx.mouse.clip.lock.api 3
//dx.mouse.input.lock.api 4
//dx.mouse.state.api 5
//dx.mouse.api 6
//dx.mouse.cursor 7
//dx.mouse.raw.input 8
//dx.mouse.input.lock.api2 9
//dx.mouse.input.lock.api3 10
//dx.keypad.input.lock.api 11
//dx.keypad.state.api 12
//dx.keypad.api 13
//dx.keypad.raw.input 14
//dx.public.active.api 15
//dx.public.active.api2 16
//dx.public.input.ime 17
//dx.public.disable.window.show 18
//dx.public.down.cpu 19
//dx.public.focus.api 20

解析说明: 绑定模式 窗口序号 拦截概率 是否调用绑定接口

1.窗口后台模式 如："1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|0|0|0|0|" 窗口序号1-61 极低 需要

1.1.模拟后台键鼠和输入(高级模拟) 坐标是窗口客户区坐标

2.窗口前台模式 如："normal"或者"Normal" 窗口序号1-61 对于一些保护窗口很大概率 需要

2.1.通过发window消息模拟(普通模拟) 坐标是窗口客户区坐标

3.全局前台模式 如 : 无 窗口序号为-1 极低 不需要

3.1会影响鼠标位置 坐标是屏幕坐标


HCMKB_BindModeEx

Help > 后台键鼠(MKB) >
HCMKB_BindModeEx

函数简介 :

绑定窗口(扩展接口)

函数原型 ：

__int64 __stdcall HCMKB_BindModeEx(__int32 窗口序号, __int64 hwnd, char *绑定属性 = NULL, __int32 mode = 0, __int32 bRetMove = 1);

参数定义:

窗口序号：窗口序号

hwnd:窗口句柄

绑定属性:0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|" 20个值 1是选中 0未选中 为NULL表示全部选中

例如:"1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|"

mode: 0通用模式效果最好 1(0模式不行可以试一试这个1) 2 3 后续会进一步测试更多的模式

bRetMove：是否刷新窗口 有些窗口需要刷新后台键鼠才正常

=============================================================================================

解决方案:

1.遇到键鼠有时候挂着挂着就失效 请换成------------------------- 绑定属性:"1|0|0|1|1|1|1|0|0|0|1|1|1|0|0|0|0|0|0|0|" + mode:3 比如一些UE引擎的游戏或者其他

=============================================================================================

如下:属性表

返回值:

查看返回值表 HD返回值表

备注:

如果绑定属性 "normal"或者"Normal" 表示窗口前台模式！！！！ 直接用的是sendmessage发消息 对于一些普通窗口有效 大概率会被拦截 这个时候请直接使用全局前台模式,具体看下面解析说明

如果之前后台了,当切换到窗口前台会自动解绑后台

绑定属性表: 注意顺序！！

属性值 索引

//dx.mouse.position.lock.api|dx.mouse.position.lock.message 1
//dx.mouse.focus.input.api|dx.mouse.focus.input.message 2
//dx.mouse.clip.lock.api 3
//dx.mouse.input.lock.api 4
//dx.mouse.state.api 5
//dx.mouse.api 6
//dx.mouse.cursor 7
//dx.mouse.raw.input 8
//dx.mouse.input.lock.api2 9
//dx.mouse.input.lock.api3 10
//dx.keypad.input.lock.api 11
//dx.keypad.state.api 12
//dx.keypad.api 13
//dx.keypad.raw.input 14
//dx.public.active.api 15
//dx.public.active.api2 16
//dx.public.input.ime 17
//dx.public.disable.window.show 18
//dx.public.down.cpu 19
//dx.public.focus.api 20

解析说明: 绑定模式 窗口序号 拦截概率 是否调用绑定接口

1.窗口后台模式 如："1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|0|0|0|0|" 窗口序号1-61 极低 需要

1.1.模拟后台键鼠和输入(高级模拟) 坐标是窗口客户区坐标

2.窗口前台模式 如："normal"或者"Normal" 窗口序号1-61 对于一些保护窗口很大概率 需要

2.1.通过发window消息模拟(普通模拟) 坐标是窗口客户区坐标

3.全局前台模式 如 : 无 窗口序号为-1 极低 不需要

3.1会影响鼠标位置 坐标是屏幕坐标


HCMKB_SwitchBind

Help > 后台键鼠(MKB) >
HCMKB_SwitchBind

函数简介:

切换绑定到所属子窗口的句柄上

函数原型 ：

__int64 __stdcall HCMKB_SwitchBind(__int32 窗口序号, __int64 hwnd, char *绑定属性 = NULL);

参数定义:

窗口序号：窗口序号

hwnd:窗口句柄

绑定属性:0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|" 20个值 1是选中 0未选中 为NULL表示全部选中

例如:"1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|"

如下:属性表

返回值:

查看返回值表 HD返回值表

备注:

如果绑定属性 "normal"或者"Normal" 表示窗口前台模式！！！！ 直接用的是sendmessage发消息 对于一些普通窗口有效 大概率会被拦截 这个时候请直接使用全局前台模式,具体看下面解析说明

如果之前后台了,当切换到窗口前台会自动解绑后台

绑定属性表: 注意顺序！！

属性值 索引

//dx.mouse.position.lock.api|dx.mouse.position.lock.message 1
//dx.mouse.focus.input.api|dx.mouse.focus.input.message 2
//dx.mouse.clip.lock.api 3
//dx.mouse.input.lock.api 4
//dx.mouse.state.api 5
//dx.mouse.api 6
//dx.mouse.cursor 7
//dx.mouse.raw.input 8
//dx.mouse.input.lock.api2 9
//dx.mouse.input.lock.api3 10
//dx.keypad.input.lock.api 11
//dx.keypad.state.api 12
//dx.keypad.api 13
//dx.keypad.raw.input 14
//dx.public.active.api 15
//dx.public.active.api2 16
//dx.public.input.ime 17
//dx.public.disable.window.show 18
//dx.public.down.cpu 19
//dx.public.focus.api 20

解析说明: 绑定模式 窗口序号 拦截概率 是否调用绑定接口

1.窗口后台模式 如："1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|0|0|0|0|" 窗口序号1-61 极低 需要

1.1.模拟后台键鼠和输入(高级模拟) 坐标是窗口客户区坐标

2.窗口前台模式 如："normal"或者"Normal" 窗口序号1-61 对于一些保护窗口很大概率 需要

2.1.通过发window消息模拟(普通模拟) 坐标是窗口客户区坐标

3.全局前台模式 如 : 无 窗口序号为-1 极低 不需要

3.1会影响鼠标位置 坐标是屏幕坐标


HCMKB_SwitchBindEx

Help > 后台键鼠(MKB) >
HCMKB_SwitchBindEx

函数简介:

切换绑定到所属子窗口的句柄上

函数原型 ：

__int64 __stdcall HCMKB_SwitchBindEx(__int32 窗口序号, __int64 hwnd, char *绑定属性 = NULL, __int32 bRetMove = 1);

参数定义:

窗口序号：窗口序号

hwnd:窗口句柄

绑定属性:0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|" 20个值 1是选中 0未选中 为NULL表示全部选中

例如:"1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|"

bRetMove：是否刷新窗口 有些窗口需要刷新后台键鼠才正常

如下:属性表

返回值:

查看返回值表 HD返回值表

备注:

如果绑定属性 "normal"或者"Normal" 表示窗口前台模式！！！！ 直接用的是sendmessage发消息 对于一些普通窗口有效 大概率会被拦截 这个时候请直接使用全局前台模式,具体看下面解析说明

如果之前后台了,当切换到窗口前台会自动解绑后台

绑定属性表: 注意顺序！！

属性值 索引

//dx.mouse.position.lock.api|dx.mouse.position.lock.message 1
//dx.mouse.focus.input.api|dx.mouse.focus.input.message 2
//dx.mouse.clip.lock.api 3
//dx.mouse.input.lock.api 4
//dx.mouse.state.api 5
//dx.mouse.api 6
//dx.mouse.cursor 7
//dx.mouse.raw.input 8
//dx.mouse.input.lock.api2 9
//dx.mouse.input.lock.api3 10
//dx.keypad.input.lock.api 11
//dx.keypad.state.api 12
//dx.keypad.api 13
//dx.keypad.raw.input 14
//dx.public.active.api 15
//dx.public.active.api2 16
//dx.public.input.ime 17
//dx.public.disable.window.show 18
//dx.public.down.cpu 19
//dx.public.focus.api 20

解析说明: 绑定模式 窗口序号 拦截概率 是否调用绑定接口

1.窗口后台模式 如："1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|0|0|0|0|" 窗口序号1-61 极低 需要

1.1.模拟后台键鼠和输入(高级模拟) 坐标是窗口客户区坐标

2.窗口前台模式 如："normal"或者"Normal" 窗口序号1-61 对于一些保护窗口很大概率 需要

2.1.通过发window消息模拟(普通模拟) 坐标是窗口客户区坐标

3.全局前台模式 如 : 无 窗口序号为-1 极低 不需要

3.1会影响鼠标位置 坐标是屏幕坐标


HCMKB_SwitchBindModeEx

Help > 后台键鼠(MKB) >
HCMKB_SwitchBindModeEx

函数简介 :

切换绑定窗口(扩展接口)

函数原型 ：

__int64 __stdcall HCMKB_SwitchBindModeEx(__int32 窗口序号, __int64 hwnd, char *绑定属性 = NULL, __int32 mode = 0, __int32 bRetMove = 1);

参数定义:

窗口序号：窗口序号

hwnd:窗口句柄

绑定属性:0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|" 20个值 1是选中 0未选中 为NULL表示全部选中

例如:"1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|0|1|"

mode: 0通用模式效果最好 1(0模式不行可以试一试这个1) 2 3 后续会进一步测试更多的模式

bRetMove：是否刷新窗口 有些窗口需要刷新后台键鼠才正常

=============================================================================================

解决方案:

1.遇到键鼠有时候挂着挂着就失效 请换成------------------------- 绑定属性: "1|0|0|1|1|1|1|0|0|0|1|1|1|0|0|0|0|0|0|0|" + mode: 3 比如一些UE引擎的游戏或者其他

=============================================================================================

如下:属性表

返回值:

查看返回值表 HD返回值表

备注:

如果绑定属性 "normal"或者"Normal" 表示窗口前台模式！！！！ 直接用的是sendmessage发消息 对于一些普通窗口有效 大概率会被拦截 这个时候请直接使用全局前台模式,具体看下面解析说明

如果之前后台了,当切换到窗口前台会自动解绑后台

绑定属性表: 注意顺序！！

属性值 索引

//dx.mouse.position.lock.api|dx.mouse.position.lock.message 1
//dx.mouse.focus.input.api|dx.mouse.focus.input.message 2
//dx.mouse.clip.lock.api 3
//dx.mouse.input.lock.api 4
//dx.mouse.state.api 5
//dx.mouse.api 6
//dx.mouse.cursor 7
//dx.mouse.raw.input 8
//dx.mouse.input.lock.api2 9
//dx.mouse.input.lock.api3 10
//dx.keypad.input.lock.api 11
//dx.keypad.state.api 12
//dx.keypad.api 13
//dx.keypad.raw.input 14
//dx.public.active.api 15
//dx.public.active.api2 16
//dx.public.input.ime 17
//dx.public.disable.window.show 18
//dx.public.down.cpu 19
//dx.public.focus.api 20

解析说明: 绑定模式 窗口序号 拦截概率 是否调用绑定接口

1.窗口后台模式 如："1|1|1|1|1|1|1|0|1|1|1|1|1|0|1|0|0|0|0|0|" 窗口序号1-61 极低 需要

1.1.模拟后台键鼠和输入(高级模拟) 坐标是窗口客户区坐标

2.窗口前台模式 如："normal"或者"Normal" 窗口序号1-61 对于一些保护窗口很大概率 需要

2.1.通过发window消息模拟(普通模拟) 坐标是窗口客户区坐标

3.全局前台模式 如 : 无 窗口序号为-1 极低 不需要

3.1会影响鼠标位置 坐标是屏幕坐标


HCMKB_PauseBind

Help > 后台键鼠(MKB) >
HCMKB_PauseBind

函数简介 :

暂停/恢复后台绑定

函数原型 ：

__int64 __stdcall HCMKB_PauseBind(__int32 窗口序号, __int32 bPause = TRUE, __int32 bRetMove = 1);

参数定义:

窗口序号：窗口序号

bPasue:是否暂停

bRetMove：是否刷新窗口 有些窗口需要刷新后台键鼠才正常

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_UnBind

Help > 后台键鼠(MKB) >
HCMKB_UnBind

函数简介 :

解绑窗口

函数原型 ：

__int64 __stdcall HCMKB_UnBind(__int32 窗口序号);

参数定义:

窗口序号：窗口序号

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_MoveTo*

Help > 后台键鼠(MKB) >
HCMKB_MoveTo*

函数简介 :

鼠标移动

函数原型 ：

__int64 __stdcall HCMKB_MoveTo(__int32 窗口序号, __int32 x, __int32 y, BOOL 是否模拟鼠标轨迹 = TRUE, __int32 轨迹类型 = -1, __int32 窗口状态 = -1);

参数定义:

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

x:窗口客户区坐标(左上角为0,0)

y:窗口客户区坐标(左上角为0,0)

是否模拟鼠标轨迹:是否模拟鼠标轨迹

轨迹类型:默认-1 或者1 表示随机轨迹 2表示直线轨迹 3表示直线波动轨迹(过检测强) 可以使用HCMKB_SetRealMouse 设置相关轨迹参数

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_KeyUp*

Help > 后台键鼠(MKB) >
HCMKB_KeyUp*

函数简介 :

弹起某个键

函数原型 ：

__int64 __stdcall HCMKB_KeyUp(__int32 窗口序号, __int32 虚拟键码, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2. 如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看 HCMKB_Bind 下面说明

虚拟键码：虚拟键码

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_KeyDwon*

Help > 后台键鼠(MKB) >
HCMKB_KeyDwon*

函数简介 :

按下某个键

函数原型 ：

__int64 __stdcall HCMKB_KeyDwon(__int32 窗口序号,__int32 虚拟键码, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2. 如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看 HCMKB_Bind 下面说明

虚拟键码：虚拟键码

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_LeftUp*

Help > 后台键鼠(MKB) >
HCMKB_LeftUp*

函数简介 :

鼠标左键弹起

函数原型 ：

__int64 __stdcall HCMKB_LeftUp(__int32 窗口序号, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2. 如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看 HCMKB_Bind 下面说明

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_LeftDown*

Help > 后台键鼠(MKB) >
HCMKB_LeftDown*

函数简介 :

鼠标左键按下

函数原型 ：

__int64 __stdcall HCMKB_LeftDown(__int32 窗口序号, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2. 如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看 HCMKB_Bind 下面说明

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_LeftClick*

Help > 后台键鼠(MKB) >
HCMKB_LeftClick*

函数简介 :

鼠标左键点击

函数原型 ：

__int64 __stdcall HCMKB_LeftClick(__int32 窗口序号, __int32 延时毫秒 = 50, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

延时毫秒：延时毫秒（默认50毫秒）

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_LeftDoubleClick*

Help > 后台键鼠(MKB) >
HCMKB_LeftDoubleClick*

函数简介 :

鼠标左键双击

函数原型 ：

__int64 __stdcall HCMKB_LeftDoubleClick(__int32 窗口序号, __int32 延时毫秒 = 50, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

延时毫秒：延时毫秒（默认50毫秒）

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_MiddleUp*

Help > 后台键鼠(MKB) >
HCMKB_MiddleUp*

函数简介 :

鼠标中键弹起

函数原型 ：

__int64 __stdcall HCMKB_MiddleUp(__int32 窗口序号, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_MiddleDown*

Help > 后台键鼠(MKB) >
HCMKB_MiddleDown*

函数简介 :

鼠标中键按下

函数原型 ：

__int64 __stdcall HCMKB_MiddleDown(__int32 窗口序号, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_MiddleClick*

Help > 后台键鼠(MKB) >
HCMKB_MiddleClick*

函数简介 :

鼠标中键点击

函数原型 ：

__int64 __stdcall HCMKB_MiddleClick(__int32 窗口序号, __int32 延时毫秒 = 50, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

延时毫秒：延时毫秒（默认50毫秒）

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_MiddleDoubleClick*

Help > 后台键鼠(MKB) >
HCMKB_MiddleDoubleClick*

函数简介 :

鼠标中键双击

函数原型 ：

__int64 __stdcall HCMKB_MiddleDoubleClick(__int32 窗口序号, __int32 延时毫秒 = 50, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

延时毫秒：延时毫秒（默认50毫秒）

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_RightUp*

Help > 后台键鼠(MKB) >
HCMKB_RightUp*

函数简介 :

鼠标右键弹起

函数原型 ：

__int64 __stdcall HCMKB_RightUp(__int32 窗口序号, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_RightDown*

Help > 后台键鼠(MKB) >
HCMKB_RightDown*

函数简介 :

鼠标右键按下

函数原型 ：

__int64 __stdcall HCMKB_RightDown(__int32 窗口序号, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_RightClick*

Help > 后台键鼠(MKB) >
HCMKB_RightClick*

函数简介 :

鼠标右键点击

函数原型 ：

__int64 __stdcall HCMKB_RightClick(__int32 窗口序号, __int32 延时毫秒 = 50, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

延时毫秒：延时毫秒（默认50毫秒）

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_RightDoubleClick

Help > 后台键鼠(MKB) >
HCMKB_RightDoubleClick

函数简介 :

鼠标右键双击

函数原型 ：

__int64 __stdcall HCMKB_RightDoubleClick(__int32 窗口序号, __int32 延时毫秒 = 50, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

延时毫秒：延时毫秒（默认50毫秒）

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_WheelUp*

Help > 后台键鼠(MKB) >
HCMKB_WheelUp*

函数简介 :

鼠标滚轮向上滚动

函数原型 ：

__int64 __stdcall HCMKB_WheelUp(__int32 窗口序号, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

调用一次滚轮向上滚动一个单位120


HCMKB_WheelDown*

Help > 后台键鼠(MKB) >
HCMKB_WheelDown*

函数简介 :

鼠标滚轮向下滚动

函数原型 ：

__int64 __stdcall HCMKB_WheelDown(__int32 窗口序号, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

调用一次滚轮向下滚动一个单位120


HCMKB_KeyPress*

Help > 后台键鼠(MKB) >
HCMKB_KeyPress*

函数简介 :

按某个键

函数原型 ：

__int64 __stdcall HCMKB_KeyPress(__int32 窗口序号, __int32 虚拟键码, __int32 延时毫秒 = 20, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

虚拟键码：虚拟键码

延时毫秒：延时毫秒

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_KeyPress(A/W)

Help > 后台键鼠(MKB) >
HCMKB_KeyPress(A/W)

函数简介 :

连续按键输入字符串(连续单个按键)

函数原型 ：

__int64 __stdcall HCMKB_KeyPressA(__int32 窗口序号, char * 文本, __int32 延时毫秒 = 20, __int32 窗口状态 = -1);
__int64 __stdcall HCMKB_KeyPressW(__int32 窗口序号, wchar_t * 文本, __int32 延时毫秒 = 20, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号

文本：文本(Ascii/Unicode)

延时毫秒：延时毫秒

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_SendString(A/W)*

Help > 后台键鼠(MKB) >
HCMKB_SendString(A/W)*

/函数简介 :

发送Ascii/unicode字符串 (不同于连续单个按键)

函数原型 ：

__int64 __stdcall HCMKB_SendStringA(__int32 窗口序号, char * 文本A, __int32 延时毫秒 = 20, __int32 窗口状态 = -1);
__int64 __stdcall HCMKB_SendStringW(__int32 窗口序号, wchar * 文本A, __int32 延时毫秒 = 20, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

文本A：文本(Ascii)/文本(Unicode)

延时毫秒：延时毫秒

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_SendString(2)

Help > 后台键鼠(MKB) >
HCMKB_SendString(2)

函数简介 :

发送Ascii字符串

函数原型 ：

__int64 __stdcall HCMKB_SendString(__int32 窗口序号, char * 文本A, __int32 延时毫秒 = 20, __int32 窗口状态 = -1);
__int64 __stdcall HCMKB_SendString2(__int32 窗口序号, char * 文本A, __int32 延时毫秒 = 20, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号

文本A：文本(Ascii)

延时毫秒：延时毫秒

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_SendPaste*

Help > 后台键鼠(MKB) >
HCMKB_SendPaste*

函数简介 :

发送剪切板字符串内容到窗口

函数原型 ：

__int64 __stdcall HCMKB_SendPaste(__int32 窗口序号, void* 发送字节缓冲区, __int32 发送字节大小, __int32 文本类型, __int32 mis = 20, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2. 如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看HCMKB_Bind 下面说明

发送字节缓冲区：发送字节缓冲区(字节数据/字符串数据)

发送字节大小：发送字节缓冲区的字节大小

文本类型：Ascii(1) Unicode(2)

mis ：延时毫秒

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_SendPasteEx

Help > 后台键鼠(MKB) >
HCMKB_SendPasteEx

函数简介 :

发送剪切板字符串内容到窗口

函数原型 ：

__int64 __stdcall HCMKB_SendPasteEx(__int32 窗口序号, void* 发送字节缓冲区, __int32 发送字节大小, __int32 文本类型, __int32 bSend = 0, __int32 mis = 20, __int32 窗口状态 = -1);

参数定义 :

窗口序号：窗口序号

发送字节缓冲区：发送字节缓冲区(字节数据/字符串数据)

发送字节大小：发送字节缓冲区的字节大小

文本类型：Ascii(1) Unicode(2)

bSend :是否消息发送的方式传递文本,如果为假表示粘贴到文本框

mis ：延时毫秒

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_SendRoundNamePaste

Help > 后台键鼠(MKB) >
HCMKB_SendRoundNamePaste

函数简介 :

发送随机名字,从2个文本(hf.txt 和 he.txt )中各获取一个字

函数原型 ：

__int64 __stdcall HCMKB_SendRoundNamePaste(__int32 窗口序号,__int32 bSend = 0, __int32 mis = 20, __int32 窗口状态 = -1);

参数定义 :

窗口序号:窗口序号

bSend :是否消息发送的方式传递文本,如果为假表示粘贴到文本框

mis:延时毫秒

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

hf.txt 和 he.txt 放在程序(.exe)同目录下,文件编码为utf-8
随机获取一个姓和一个名组成一个词


HCMKB_SetClipboard

Help > 后台键鼠(MKB) >
HCMKB_SetClipboard

函数简介 :

设置剪切板字符串

函数原型 ：

__int64 __stdcall HCMKB_SetClipboard(void* 发送字节缓冲区, __int32 发送字节大小, __int32 文本类型);

参数定义 :

发送字节缓冲区：发送字节缓冲区(字节数据/字符串数据)

发送字节大小：发送字节缓冲区的字节大小

文本类型：Ascii(1) Unicode(2)

返回值:

查看返回值表 HD返回值表

备注:

该接口无序窗口序号


HCMKB_GetClipboard

Help > 后台键鼠(MKB) >
HCMKB_GetClipboard

函数简介 :

获取剪切板字符串

函数原型 ：

__int64 __stdcall HCMKB_GetClipboard (__int32 文本类型);

参数定义 :

文本类型：Ascii(1) Unicode(2)

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_SendStringF

Help > 后台键鼠(MKB) >
HCMKB_SendStringF

函数简介 :

发送Ascii字符串,部分游戏需要激活窗口！（可以不用通讯调用）

函数原型 ：

__int64 __stdcall HCMKB_SendStringF(__int64 hwnd, char * 文本A, __int32 延时毫秒 = 20, __int32 窗口状态 = -1);

参数定义 :

hwnd：hwnd窗口句柄

文本A：文本(Ascii)

延时毫秒：延时毫秒

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考:HCWIN_SetWindowState的参数值

返回值:

查看返回值表 HD返回值表

备注:

注意这个属于类似前台但不是存前台,有些游戏需要激活游戏才能输入成功！！！！


HCMKB_SendKeyDownF

Help > 后台键鼠(MKB) >
HCMKB_SendKeyDownF

函数简介 :

按下发送键码到指定窗口（可以不用通讯调用）

函数原型 ：

__int64 __stdcall HCMKB_SendKeyDownF(__int32 窗口序号, __int64 hwnd, __int32 虚拟键码, __int32 窗口状态= 0);

参数定义 :

窗口序号:窗口序号 (不需要通讯也可以调用,指定一个大于0的序号就行或者任意一个)

hwnd：hwnd窗口句柄(指定子窗口的窗口句柄,可以指定非绑定窗口的子窗口)

虚拟键码:虚拟键码

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考: HCWIN_SetWindowState 的参数值

返回值:

查看返回值表 HD返回值表

备注:

注意这个属于类似前台但不是存前台,有些游戏需要激活游戏才能输入成功！！！！


HCMKB_SendKeyUpF

Help > 后台键鼠(MKB) >
HCMKB_SendKeyUpF

函数简介 :

弹起发送键码到指定窗口（可以不用通讯调用）

函数原型 ：

__int64 __stdcall HCMKB_SendKeyUpF(__int32 窗口序号, __int64 hwnd, __int32 虚拟键码, __int32 窗口状态= 0);

参数定义 :

窗口序号:窗口序号 (不需要通讯也可以调用,指定一个大于0的序号就行或者任意一个)

hwnd：hwnd窗口句柄(指定子窗口的窗口句柄,可以指定非绑定窗口的子窗口)

虚拟键码:虚拟键码

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考: HCWIN_SetWindowState 的参数值

返回值:

查看返回值表 HD返回值表

备注:

注意这个属于类似前台但不是存前台,有些游戏需要激活游戏才能输入成功！！！！


HCMKB_SendKeyPressF

Help > 后台键鼠(MKB) >
HCMKB_SendKeyPressF

函数简介 :

按下并弹起发送键码到指定窗口（可以不用通讯调用）

函数原型 ：

__int64 __stdcall HCMKB_SendKeyPressF(__int32 窗口序号, __int64 hwnd, __int32 虚拟键码, __int32 延时毫秒 = 20, __int32 窗口状态 = 0);

参数定义 :

窗口序号:窗口序号 (不需要通讯也可以调用,指定一个大于0的序号就行或者任意一个)

hwnd：hwnd窗口句柄(指定子窗口的窗口句柄,可以指定非绑定窗口的子窗口)

虚拟键码:虚拟键码

延时毫秒:按下和弹起之间的间隔时间

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考: HCWIN_SetWindowState 的参数值

返回值:

查看返回值表 HD返回值表

备注:

注意这个属于类似前台但不是存前台,有些游戏需要激活游戏才能输入成功！！！！


HCMKB_SendDeleteTextF

Help > 后台键鼠(MKB) >
HCMKB_SendDeleteTextF

函数简介 :

可以清空子窗口的内容（可以不用通讯调用）

函数原型 ：

__int64 __stdcall HCMKB_SendDeleteTextF(__int32 窗口序号__int64 hwnd, __int32 窗口状态= 0);

参数定义 :

窗口序号:窗口序号 (不需要通讯也可以调用,指定一个大于0的序号就行或者任意一个)

hwnd：hwnd窗口句柄(指定子窗口的窗口句柄,可以指定非绑定窗口的子窗口) 比如:edit richedit

窗口状态:-1/0不设置 其他值为操作前窗口设置(值)参考: HCWIN_SetWindowState 的参数值

返回值:

查看返回值表 HD返回值表

备注:

注意这个属于类似前台但不是存前台,有些游戏需要激活游戏才能输入成功！！！！


HCMKB_SetRealMouse

Help > 后台键鼠(MKB) >
HCMKB_SetRealMouse

函数简介 :

设置鼠标轨迹参数(当移动鼠标开启轨迹生效)

函数原型 ：

__int64 __stdcall HCMKB_SetRealMouse(__int32 步长 = 30, __int32 步数 = 100, __int32 每步延迟 = 20, BOOL 开启调试 = FALSE);

参数定义 :

步长:针对直线轨迹/直线波动轨迹有效

步数:针对曲线随机轨迹有效

每步延迟:中间点每个点发送的频率(毫秒)

开启调试:真为开启,只有在调试版本才会触发,会弹窗实时显示轨迹坐标点

返回值:

查看返回值表 HD返回值表

备注:

无


HCMKB_GetMousePos

Help > 后台键鼠(MKB) >
HCMKB_GetMousePos

函数简介 :

获取后台/前台鼠标位置

函数原型 ：

__int64 __stdcall HCMKB_GetMousePos (__int32 窗口序号);

参数定义 :

窗口序号：窗口序号 特别说明:1.序号为-1表示全局前台 2.如果后台绑定normal,序号不为-1表示窗口前台 3.什么是全局和窗口前台？？请看 HCMKB_Bind 下面说明

返回值:

查看返回值表 HD返回值表

返回值大于等于0:表示XY组成的8字节 低4字节为X 高4字节为Y

备注:

无


后台截图模块(CS)

Help >
后台截图模块(CS)

以国际服剑灵2M为例

视频演示链接:https://www.bilibili.com/video/BV1BF411r7UW/?spm_id_from=333.999.0.0

PS:最好复制到浏览器打开

效果展示


HCCS_OpenCS

Help > 后台截图模块(CS) >
HCCS_OpenCS

函数简介 :

打开截图

函数原型：

__int64 __stdcall HCCS_OpenCS(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCCS_OpenCSEx

Help > 后台截图模块(CS) >
HCCS_OpenCSEx

函数简介 :

打开截图(和HCCS_CloseCSEx是一组接口)

函数原型：

__int64 __stdcall HCCS_OpenCSEx(__int32 窗口序号, BOOL bNormal, __int32 capType = 0, __int64 hwnd = 0);

参数定义 :

窗口序号:窗口序号 (从1开始) 窗口序号为0表示全屏前台截图(此时后面3个参数无效) 后续识别相关接口如果要用到全屏截图数据需要指定窗口序号0

bNormal:是否是通常模式 一般为真(TRUE)就行

capType：截图模式

hwnd：窗口句柄

返回值 :

查看返回值表 HD返回值表

备注:

1.前台和后台模式,可以随意切换 不用调用关闭HCCS_CloseCSEx 再开启！！！！！内置处理了

截图模式:

typedef enum CAPTURETYPE
{
//无
CAPTURETYPE_NONE = 0,//这个不操作
//GDI
CAPTURETYPE_GDI = 1,//这个直接客户端操作 对于浏览器(谷歌等)记得把图像加速关掉
//32
CAPTURETYPE_D3D9_1_x86 = 2,//UE
CAPTURETYPE_D3D9_2_x86 = 3,//U3D
CAPTURETYPE_D3D9_3_x86 = 4,//RGBX
//D3D11
CAPTURETYPE_D3D11_1_x86 = 5,//UE
CAPTURETYPE_D3D11_2_x86 = 6,//U3D
CAPTURETYPE_D3D11_3_x86 = 7,//RGBX D3D11游戏通用
//D3D12
CAPTURETYPE_D3D12_1_x86 = 70,//UE
CAPTURETYPE_D3D12_2_x86 = 71,//U3D
CAPTURETYPE_D3D12_3_x86 = 72,//RGBX D3D12游戏通用
//64
//D3D9
CAPTURETYPE_D3D9_1_x64 = 8,//UE
CAPTURETYPE_D3D9_2_x64 = 9,//U3D
CAPTURETYPE_D3D9_3_x64 = 10,//RGBX D3D9游戏通用
//D3D11
CAPTURETYPE_D3D11_1_x64 = 11,//UE
CAPTURETYPE_D3D11_2_x64 = 12,//U3D
CAPTURETYPE_D3D11_3_x64 = 13,//RGBX D3D11游戏通用
//D3D12
CAPTURETYPE_D3D12_1_x64 = 14,//UE D3D12
CAPTURETYPE_D3D12_2_x64 = 15,//U3D D3D12
CAPTURETYPE_D3D12_3_x64 = 16,//RGBX D3D12 D3D12游戏通用
//32
CAPTURETYPE_OPENGL_1_x86 = 20,//占位
CAPTURETYPE_OPENGL_2_x86 = 21,// GL_BGRA 模拟器
CAPTURETYPE_OPENGL_3_x86 = 22,// GL_BGRA 模拟器
//64
CAPTURETYPE_OPENGL_1_x64 = 30,//占位
CAPTURETYPE_OPENGL_2_x64 = 31,// GL_BGRA 模拟器
CAPTURETYPE_OPENGL_3_x64 = 32,// GL_BGRA 模拟器
//定制
CAPTURETYPE_D3D9_Steam_x86 = 40,//steam游戏专用 steam游戏专用后台截图x64模式 D3D9 也可以是其他游戏不一定只有steam才能用
CAPTURETYPE_D3D11_Steam_x86 = 41,//steam游戏专用 steam游戏专用后台截图x64模式 D3D9 也可以是其他游戏不一定只有steam才能用
CAPTURETYPE_D3D9_Steam_x64 = 42,//steam游戏专用 steam游戏专用后台截图x64模式 D3D9 也可以是其他游戏不一定只有steam才能用
CAPTURETYPE_D3D11_Steam_x64 = 43,//steam游戏专用 steam游戏专用后台截图x64模式 D3D9 也可以是其他游戏不一定只有steam才能用
//NC模式
CAPTURETYPE_D3D9_NC_x86 = 44,//NC游戏
CAPTURETYPE_D3D11_NC_x86 = 45,//NC游戏
CAPTURETYPE_D3D9_NC_x64 = 46,//NC游戏
CAPTURETYPE_D3D11_NC_x64 = 47,//NC游戏
//
CAPTURETYPE_NORMAL = 50, //这个前台模式
//
CAPTURETYPE_D3D12_Steam_x86 = 60,//steam游戏专用 steam游戏专用后台截图x64模式 D3D9 也可以是其他游戏 不一定只有steam才能用
CAPTURETYPE_D3D12_Steam_x64 = 61,//steam游戏专用 steam游戏专用后台截图x64模式 D3D9 也可以是其他游戏 不一定只有steam才能用
//
CAPTURETYPE_D3D12_NC_x86 = 62,//NC游戏 D3D12
CAPTURETYPE_D3D12_NC_x64 = 63,//NC游戏 D3D12

}CAPTURETYPE;
 额外说明:


HCCS_CloseCS

Help > 后台截图模块(CS) >
HCCS_CloseCS

函数简介 :

关闭截图

函数原型 ：

__int64 __stdcall HCCS_CloseCS(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

返回值 :

查看返回值表 HD返回值表

备注:

无


HCCS_CloseCSEx

Help > 后台截图模块(CS) >
HCCS_CloseCSEx

函数简介 :

关闭截图(和HCCS_OpenCSEx是一组接口)

函数原型 ：

__int64 __stdcall HCCS_CloseCSEx(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始) 窗口序号为0表示全屏截图 后续识别相关接口如果要用到全屏截图数据需要指定窗口序号0

返回值 :

查看返回值表 HD返回值表

备注:

无


HCCS_GetCSData

Help > 后台截图模块(CS) >
HCCS_GetCSData

函数简介 :

获取截图数据

函数原型：

__int64 __stdcall HCCS_GetCSData(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

像素格式:

  //1字节对齐
//单个数据
#pragma  pack(1)
typedef struct
MYA8R8G8B8
{
BYTE m_a;//透明值
BYTE m_r;//红色
BYTE
m_g;//绿色
BYTE
m_b;//蓝色
MYA8R8G8B8()
{
m_a = 0; m_r =    0; m_g =
0; m_b = 0;
}
}MYA8R8G8B8;
#pragma
pack()

返回值 :

查看返回值表 HD返回值表

备注:

json:{"error":0,"ret":[{"bRet":AAA,"addr":XXX,"eleSize":YYY,"len":ZZZ,"w":1222,"h":699}]}
AAA:调用接口返回值 XXX:图片二进制数据首地址 YYY:MYA8R8G8B8结构体数量 ZZZ:字节大小(图片数据) w:宽度 h:高度
注意:拿到图片地址数据XXX使用后 记得释放(HCCS_FreeArray)


HCCS_OpenCSFinder

Help > 后台截图模块(CS) >
HCCS_OpenCSFinder

函数简介 :

打开查看器

函数原型 ：

__int64 __stdcall HCCS_OpenCSFinder(__int32 窗口序号, __int32 X, __int32 Y, __int32 宽度, __int32 高度);

参数定义 :

窗口序号:窗口序号 (从1开始)

x,y,宽度,高度: 内部使用命令行参数打开查看器 C:\\Debug\\csfinder.exe" -窗口序号 -x -y -w -h

返回值 :

查看返回值表HD返回值表

备注:

无


HCCS_CloseCSFinder

Help > 后台截图模块(CS) >
HCCS_CloseCSFinder

函数简介 :

关闭查看器

函数原型：

__int64 __stdcall HCCS_CloseCSFinder(__int32 窗口序号, __int32 pid);

参数定义 :

窗口序号:窗口序号 (从1开始)

pid:查看器的进程PID

返回值 :

查看返回值表HD返回值表

备注:

无


HCCS_CaptureBmp

Help > 后台截图模块(CS) >
HCCS_CaptureBmp

函数简介 :

截图数据并保存为BMP图片文件

函数原型：

__int64 __stdcall HCCS_CaptureBmp(__int32 窗口序号, char*BMP文件路径, BOOL 是否打开 = FALSE);

参数定义：

窗口序号:窗口序号 (从1开始)

BMP文件路径:BMP文件路径+文件名

是否打开：是否打开查看图片

返回值 :

查看返回值表HD返回值表

备注:

json:

{"error":0,"ret":[{"bRet":AAA,"w":1222,"h":699}]}


HCCS_GetCaptureBmpData

Help > 后台截图模块(CS) >
HCCS_GetCaptureBmpData

函数简介 :

获取当前截图后的BMP数据

函数原型：

__int64 __stdcall HCCS_GetCaptureBmpData(__int32 窗口序号);

参数定义 :

窗口序号:窗口序号 (从1开始)

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{"bRet":1,"addr":XXX,"eleSize":YYY,"allLen":ZZZ,"w":1222,"h":699}]}

XXX是图片二进制数据首地址

YYY是MYA8R8G8B8结构体数量

ZZZ:BMP图片数据大小 (真实的BMP图片数据:54+像素数据)


HCCS_GetCaptureBmpRangeData

Help > 后台截图模块(CS) >
HCCS_GetCaptureBmpRangeData

函数简介 :

获取当前截图后的BMP数据(指定范围)

函数原型：

__int64 __stdcall HCCS_GetCaptureBmpRangeData(__int32 窗口序号, __int32 X, __int32 Y, __int32 宽度, __int32 高度);

参数定义 :

窗口序号:窗口序号 (从1开始)

X矩形范围左上角x

Y:矩形范围左上角y

宽度:矩形范围宽度

高度:矩形范围高度

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{"bRet":1,"addr":XXX,"eleSize":YYY,"allLen":ZZZ,"w":1222,"h":699}]}

XXX是图片二进制数据首地址

YYY是MYA8R8G8B8结构体数量

ZZZ:BMP图片数据大小 (真实的BMP图片数据:54+像素数据)


HCCS_FreeArray

Help > 后台截图模块(CS) >
HCCS_FreeArray

函数简介:

释放内存

函数原型：

__int64 __stdcall HCCS_FreeArray(void* addr);

参数定义 :

addr:需要释放的地址

返回值 :

查看返回值表 HD返回值表

备注:

释放内存 该内存是使用 new[] 申请的内存


HCCS_FreeMemPool

Help > 后台截图模块(CS) >
HCCS_FreeMemPool

函数简介 :

释放内存,内存池操作释放内存

函数原型：

__int64 __stdcall HCCS_FreeMemPool(__int32 窗口序号,void* addr);

参数定义 :

窗口序号 :index

addr:需要释放的地址

返回值 :

查看返回值表 HD返回值表

备注:

我们获取了截图数据不需要了都需要调用这个接口来释放掉,防止内存泄露

注意:该接口是释放【使用内存池申请的内存地址】的地址,与HCCS_FreeArray不一样

那个窗口序号返回申请的地址 就用那个窗口序号释放


HCCS_IsCaptureValid

Help > 后台截图模块(CS) >
HCCS_IsCaptureValid

函数简介 :

后台截图缓存获取失败判断接口

函数原型：

__int64 __stdcall HCCS_IsCaptureValid(__int64 ret);

参数定义 :

ret:传递的返回值 必须是识别截图相关的接口返回的

返回值 :

查看返回值表 HD返回值表

返回1表示:后台截图数据获取失败,进一步表示不是识别找不到,需要开发者再次调用相关识别接口

返回0表示:识别没有找到

备注:

可以自行加一个容错次数,再这个次数内多次识别,直到找到

从而避免由于后台截图数据获取失败的原因而导致误认为识别接口找不到相关图或者字


截图备注

Help > 后台截图模块(CS) >
截图备注

启动参数打开案例:

进程名:hdfinder.exe

类名:HDFinder382856600

C:\\Debug\\csfinder.exe" -index -x -y -w -h

1字节对齐
#pragma pack(1)
typedef struct MYA8R8G8B8
{
BYTE m_a;//透明值
BYTE m_r;//红色
BYTE m_g;//绿色
BYTE m_b;//蓝色
MYA8R8G8B8()
{
m_a = 0; m_r = 0; m_g = 0; m_b = 0;
}
}MYA8R8G8B8;
#pragma pack()


()黑屏优化模块

Help >
()黑屏优化模块


HC_OpenBS

Help > ()黑屏优化模块 >
HC_OpenBS

函数简介:

打开黑屏

函数原型 ：

__int64 __stdcall HC_OpenBS(__int32 窗口序号, __int32 minIndex = 0, __int32 maxIndex = 0, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

minIndex:最小模型序号

maxIndex:最大模型序号

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

无


HC_SetBs

Help > ()黑屏优化模块 >
HC_SetBs

函数简介 :

设置模型序号的过滤范围

函数原型 ：

__int64 __stdcall HC_SetBs(__int32 窗口序号, __int32 minIndex = 0, __int32 maxIndex = 0);

参数定义:

窗口序号:窗口序号 (从1开始)

minIndex:最小模型序号

maxIndex:最大模型序号

返回值:

查看返回值表 HD返回值表

备注:

可以适当调整最小或者最大的序号来过滤模型,来实现黑屏,同时还支持图色识别


HC_CloseBS

Help > ()黑屏优化模块 >
HC_CloseBS

函数简介:

关闭黑屏

函数原型 ：

__int64 __stdcall HC_CloseBS(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

无


CPU优化模块()

Help >
CPU优化模块()


HC_OpenCPU

Help > CPU优化模块() >
HC_OpenCPU

函数简介 :

打开CPU优化

函数原型 ：

__int64 __stdcall HC_OpenCPU(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

无


HC_SetFPS

Help > CPU优化模块() >
HC_SetFPS

函数简介 :

设置帧数(绑定dx.public.down.cpu 后台属性有效)

函数原型 ：

__int64 __stdcall HC_SetFPS(__int32 窗口序号, __int32 iFPS = 0);

参数定义:

窗口序号:窗口序号 (从1开始)

iFPS:帧数 (大于120表示关闭优化,可以用来在绑定后台的情况下关闭优化)

返回值:

查看返回值表 HD返回值表

备注:

并非实际的帧数,这里只是一个参考值,内置默认为30

动态优化调试帧数的(自动计算帧率)


HC_CloseCPU

Help > CPU优化模块() >
HC_CloseCPU

函数简介 :

关闭CPU优化

函数原型 :

__int64 __stdcall HC_CloseCPU(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_SortWindows

Help > 窗口模块(WIN) >
HCWIN_SortWindows

函数简介 :

排序安装过插件的进程

函数原型 ：

__int64 __stdcall HCWIN_SortWindows(__int32 offsetW, __int32 offsetH, __int32 width, __int32 height);

参数定义:

offsertX:水平偏移距离(2个相邻窗口的左上角的水平距离)

offsertY:垂直偏移距离(2个相邻窗口的左上角的垂直距离)

width:窗口宽度

height:窗口高度

返回值:

查看返回值表 HD返回值表

备注:

安装过插件的经常意思表示:

1.通讯过的窗口序号的对应的进程PID(未被第二次初始化序号HCInject_Init)

2.卸载进程环境不会影响绑定过的进程排序(不能调用始化序号HCInject_Init的前提下,也就是可以重连的情况下)

3.HCInject_Init这个接口一旦调用,就会取消所有关联(意味着不能重连了),从而影响当前绑定的窗口PID,意味着新窗口即将打开


HCWIN_CamouflageProcess

Help > 窗口模块(WIN) >
HCWIN_CamouflageProcess

函数简介 :

伪装进程(防止检查到实际的进程存在)

函数原型 ：

__int64 __stdcall HCWIN_CamouflageProcess(char* runName, char* targetPath, __int32 type);

参数定义:

runName:给伪装进程取的别名(任意前缀/后缀名字) 如:hd.dat

targetPath:需要伪装的进程全路径(包含.exe) 如:c:\\game.exe

type:需要伪装的进程位数 32或64

返回值:

查看返回值表 HD返回值表

备注:

无

案例:

把注入器伪装成了hd.exe


HCWIN_SetWindowState

Help > 窗口模块(WIN) >
HCWIN_SetWindowState

函数简介 :

设置或者操作窗口状态

函数原型 ：

__int64 __stdcall HCWIN_SetWindowState(__int64 hwnd, __int32 type);

参数定义:

hwnd:窗口句柄 如果type== 18 /19表示刷新桌面 这个时候hwnd可以为0
type：窗口状态类型(1-16) -1/0表示不指定
激活指定窗口 (1) 显示最小化窗口,并不激活 (2) 显示最小化窗口,同时激活窗口 (3) 显示最大化窗口,同时激活窗口 (4)
显示窗口,但是不激活 (5) 隐藏窗口 (6) 显示窗口,并激活 (7) 置顶窗口 (8) 取消置顶窗口 (9) 禁止窗口 (10) 取消禁止窗口 (11)
恢复并激活窗口 (12) 强制结束窗口所在的进程 (13) 闪烁窗口 (14) 窗口获取输入焦点 (15)发消息关闭指定窗口,不是强制关闭 (16)强制刷新指定窗口(17) 强制刷新桌面窗口(18) 强制刷新桌面窗口+任务栏(19)

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_SetWindowSize

Help > 窗口模块(WIN) >
HCWIN_SetWindowSize

函数简介 :

设置窗口大小

函数原型 ：

__int64 __stdcall HCWIN_SetWindowSize(__int64 hwnd,__int32 width, __int32 hight, BOOL bCenter = FALSE);

参数定义:

hwnd:窗口句柄

width:宽度

hight:高度

bCenter:窗口是否居中

返回值:

查看返回值表 HD返回值表

备注:

窗口居中会改变窗口位置


HCWIN_MoveWindow

Help > 窗口模块(WIN) >
HCWIN_MoveWindow

函数简介 :

移动窗口

函数原型 ：

__int64 __stdcall HCWIN_MoveWindow(__int64 hwnd , __int32 x, __int32 y);

参数定义:

hwnd:窗口句柄

x:屏幕坐标x

y:屏幕坐标y

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_IsWow64Process

Help > 窗口模块(WIN) >
HCWIN_IsWow64Process

函数简介 :

目标窗口句柄/目标进程是否64位

函数原型 ：

__int64 __stdcall HCWIN_IsWow64Process(__int64 hwnd, __int32 pid = 0);

参数定义:

hwnd:窗口句柄

pid:进程PID

返回值:

查看返回值表 HD返回值表

备注:

窗口句柄或者PID任意指定一个就行

如果2个都指定则PID用于检测


HCWIN_GetWindowTitle

Help > 窗口模块(WIN) >
HCWIN_GetWindowTitle

函数简介 :

获取目标窗口标题

函数原型 ：

__int64 __stdcall HCWIN_GetWindowTitle(__int64 hwnd);

参数定义:

hwnd:窗口句柄

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetWindowThreadProcessId

Help > 窗口模块(WIN) >
HCWIN_GetWindowThreadProcessId

函数简介 :

获取目标窗口句柄的线程ID

函数原型 ：

__int64 __stdcall HCWIN_GetWindowThreadProcessId(__int64 hwnd);

参数定义:

hwnd:窗口句柄

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetWindowProcessId

Help > 窗口模块(WIN) >
HCWIN_GetWindowProcessId

函数简介 :

获取目标窗口句柄的进程ID

函数原型 ：

__int64 __stdcall HCWIN_GetWindowProcessId(__int64 hwnd);

参数定义:

hwnd:窗口句柄

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetWindowProcessPath

Help > 窗口模块(WIN) >
HCWIN_GetWindowProcessPath

函数简介 :

获取目标窗口句柄的路径

函数原型 ：

__int64 __stdcall HCWIN_GetWindowProcessPath(__int64 hwnd);

参数定义:

hwnd:窗口句柄

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetWindowRect

Help > 窗口模块(WIN) >
HCWIN_GetWindowRect

函数简介 :

获取窗口在屏幕上的位置

函数原型 ：

__int64 __stdcall HCWIN_GetWindowRect(__int64 hwnd, void *pRect = NULL);

参数定义:

hwnd:窗口句柄

pRect:指向RECT结构体地址(供C/C++调用)这个参数可以直接获取值,如果是其他语言可以HCEnv_GetRetJson获取字符串

返回值:

查看返回值表 HD返回值表

备注:

返回字符串:

left|top|rifght|bottom|

RECT结构体:

typedef struct
tagRECT
{
LONG
left;
LONG    top;
LONG    right;
LONG
bottom;
} RECT,
*PRECT;


HCWIN_GetWindowClass

Help > 窗口模块(WIN) >
HCWIN_GetWindowClass

函数简介 :

获取目标窗口句柄的窗口类名

函数原型 ：

__int64 __stdcall HCWIN_GetWindowClass(__int64 hwnd);

参数定义:

hwnd:窗口句柄

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetWindowState

Help > 窗口模块(WIN) >
HCWIN_GetWindowState

函数简介 :

获取目标窗口句柄的窗口状态

函数原型 ：

__int64 __stdcall HCWIN_GetWindowState(__int64 hwnd, __int32 flag);

参数定义:

hwnd:窗口句柄

flag:判断窗口是否存在(0),判断窗口是否处于激活(1),判断窗口是否可见(2),判断窗口是否最小化(3),判断窗口是否最大化(4),判断窗口是否置顶(5),判断窗口是否无响应(6),

判断窗口是否可用(7),判断窗口是否无响应,如果6无效可以尝试这个(8),判断窗口所在进程是不是64位(9)

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetSpecialWindow

Help > 窗口模块(WIN) >
HCWIN_GetSpecialWindow

函数简介 :

获取特殊窗口 桌面 Shell_TrayWnd

函数原型 ：

__int64 __stdcall HCWIN_GetSpecialWindow(__int32 flag);

参数定义:

flag:桌面(0), Shell_TrayWnd(1)

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetWindow

Help > 窗口模块(WIN) >
HCWIN_GetWindow

函数简介 :

获取目标窗口句柄的关联窗口句柄

函数原型 ：

__int64 __stdcall HCWIN_GetWindow(__int64 hwnd, __int32 flag)

参数定义:

hwnd:窗口句柄

flag:获取父窗口(0),获取第一个子窗口(1),获取第一个窗口(2),获取最后个窗口(3),获取下一个窗口(4),获取上一个窗口(5),获取拥有者窗口(6),获取顶层窗口(7)

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetMousePointWindow

Help > 窗口模块(WIN) >
HCWIN_GetMousePointWindow

函数简介 :

获取当前鼠标下指向的窗口句柄

函数原型 ：

__int64 __stdcall HCWIN_GetMousePointWindow()

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetPointWindow

Help > 窗口模块(WIN) >
HCWIN_GetPointWindow

函数简介 :

获取指定坐标指向的窗口句柄

函数原型 ：

__int64 __stdcall HCWIN_GetPointWindow(__int32 x, __int32 y);

参数定义 :

x:屏幕坐标x

y:屏幕坐标y

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetForegroundWindow

Help > 窗口模块(WIN) >
HCWIN_GetForegroundWindow

函数简介 :

获取顶层活动窗口,可以获取到按键自带插件无法获取到的句柄

函数原型 ：

__int64 __stdcall HCWIN_GetForegroundWindow();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_GetForegroundFocus

Help > 窗口模块(WIN) >
HCWIN_GetForegroundFocus

函数简介 :

获取顶层活动窗口中具有输入焦点的窗口句柄

函数原型 ：

__int64 __stdcall HCWIN_GetForegroundFocus();

参数定义 :

无

返回值 :

查看返回值表 HD返回值表

备注:

无


HCWIN_SetForegroundFocus

Help > 窗口模块(WIN) >
HCWIN_SetForegroundFocus

函数简介 :

设置输入焦点到窗口

函数原型 ：

__int64 __stdcall HCWIN_SetForegroundFocus(__int64 hwnd);

参数定义 :

hwnd:窗口句柄

返回值 :

查看返回值表 HD返回值表

备注:

无


HCWIN_GetClientSize

Help > 窗口模块(WIN) >
HCWIN_GetClientSize

函数简介 :

获取窗口客户区域的宽度和高度

函数原型 ：

__int64 __stdcall HCWIN_GetClientSize(__int64 hwnd, void *pW = NULL, void *pH = NULL);

参数定义 :

hwnd:窗口句柄

pW:指向4字节宽度整数int地址(供C/C++使用),其他语言调用HCEnv_GetRetJson获取字符串并自行解析

pH:指向4字节高度整数int地址(供C/C++使用),其他语言调用HCEnv_GetRetJson获取字符串并自行解析

返回值 :

查看返回值表 HD返回值表

备注:

返回字符串:

w|h|


HCWIN_GetClientRectInWindow

Help > 窗口模块(WIN) >
HCWIN_GetClientRectInWindow

函数简介 :

获取窗口客户区域在屏幕上的位置

函数原型 ：

__int64 __stdcall HCWIN_GetClientRectInWindow(__int64 hwnd, void *pRect = NULL);

参数定义 :

hwnd:窗口句柄

pRect:指向RECT结构体地址(供C/C++调用)这个参数可以直接获取值,如果是其他语言可以 HCEnv_GetRetJson获取字符串

返回值 :

查看返回值表 HD返回值表

备注:

返回字符串:

left|top|rifght|bottom|

RECT结构体:

 typedef struct
tagRECT
{
LONG    left;
LONG    top;
LONG    right;
LONG    bottom;
} RECT,
*PRECT;


HCWIN_FindWindowEx

Help > 窗口模块(WIN) >
HCWIN_FindWindowEx

函数简介 :

查找符合类名或者标题名的顶层可见窗口,如果指定了parent,则在parent的第一层子窗口中查找

函数原型 ：

__int64 __stdcall HCWIN_FindWindowEx(__int64 parentHwnd, char* className, char* title, BOOL bType);

参数定义 :

parentHwnd:窗口的父窗口句柄(不指定则从桌面窗口开始搜索)

className:窗口类名(不指定为NULL/0)

title:窗口标题(不指定为NULL/0)

bType:真/1 为模糊匹配 假/0 为完全匹配

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_FindTopWindow

Help > 窗口模块(WIN) >
HCWIN_FindTopWindow

函数简介 :

查找顶层窗口句柄,父窗口句柄为NULL

函数原型 ：

__int64 __stdcall HCWIN_FindTopWindow(char* className, char* title, BOOL bType);

参数定义 :

className:窗口类名(不指定为NULL/0/“”)

title:窗口标题(不指定为NULL/0/“”)

bType:真/1 为模糊匹配 假/0 为完全匹配

返回值:

查看返回值表 HD返回值表

备注:

无


HCWIN_EnumWindowByProcess

Help > 窗口模块(WIN) >
HCWIN_EnumWindowByProcess

函数简介 :

根据指定进程以及其它条件,枚举系统中符合条件的窗口

函数原型 ：

__int64 __stdcall HCWIN_EnumWindowByProcess(char* processName, char* className, char* title, __int32 filter, BOOL bType);

参数定义 :

processName:进程名(如果是完全匹配要加.exe,如果是模糊匹配自行判断)

className:窗口类名(不指定为NULL/0)

title:窗口标题(不指定为NULL/0)

filter: 1标题 2类名 4第一个PID 8检测是否无父窗口 16检查窗口句柄是否有效 32检索多PID 多个标识可以用| 累加

bType:真/1 为模糊匹配 假/0 为完全匹配

返回值:

查看返回值表 HD返回值表

0表示未找到

备注:

单PID返回字符串:

hwnd

多PID返回字符串: 根据创建时间排序过的

hwnd1|hwnd2|hwnd3|


HCWIN_EnumWindowByProcessId

Help > 窗口模块(WIN) >
HCWIN_EnumWindowByProcessId

函数简介 :

根据指定进程pid以及其它条件,枚举系统中符合条件的窗口,可以枚举到按键自带的无法枚举到的窗口

函数原型 ：

__int64 __stdcall HCWIN_EnumWindowByProcessId(__int32 pid, char* className, char* title, __int32 filter, BOOL bType);

参数定义 :

pid:进程PID

className:窗口类名(不指定为NULL/0)

title:窗口标题(不指定为NULL/0)

filter: 1标题 2类名 8检测是否无父窗口 16检查窗口句柄是否有效 多个标识可以用| 累加

bType:真/1 为模糊匹配 假/0 为完全匹配

返回值:

查看返回值表 HD返回值表

0表示未找到

1表示找到 结果存在返回json字符串

备注:

单PID返回字符串:

hwnd


HCWIN_EnumProcess

Help > 窗口模块(WIN) >
HCWIN_EnumProcess

函数简介 :

根据指定进程名,枚举系统中符合条件的进程PID

函数原型 ：

__int64 __stdcall HCWIN_EnumProcess(char* processName, BOOL bType);

参数定义 :

processName:进程名(如果是完全匹配要加.exe,如果是模糊匹配自行判断)

bType:真/1 为模糊匹配 假/0 为完全匹配

返回值:

查看返回值表 HD返回值表

0表示未找到

备注:

返回字符串:

pid1|pid2|pid3|


HCWIN_EnumWindow

Help > 窗口模块(WIN) >
HCWIN_EnumWindow

函数简介 :

根据指定条件,枚举系统中符合条件的窗口,可以枚举到按键自带的无法枚举到的窗口

函数原型 ：

__int64 __stdcall HCWIN_EnumWindow(__int64 parentHwnd, char* className, char* title, __int32 filter, BOOL bType);

参数定义 :

parentHwnd:窗口的父窗口句柄(可以不指定为NULL)

className:窗口类名(不指定为NULL/0)

title:窗口标题(不指定为NULL/0)

filter: 1标题 2类名 4检测父窗口是否是指定 8检测是否无父窗口 16检查窗口句柄是否有效 多个标识可以用| 累加

bType:真/1 为模糊匹配 假/0 为完全匹配

返回值:

查看返回值表 HD返回值表

0表示未找到

备注:

多句柄返回字符串:

hwnd1|hwnd2|hwnd3|


HCSYS_CheckFontSmooth

Help > 系统模块(SYS) >
HCSYS_CheckFontSmooth

函数简介 :

检查字体是否开启字体平滑

函数原型 ：

__int64 __stdcall HCSYS_CheckFontSmooth();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_CloseFontSmooth

Help > 系统模块(SYS) >
HCSYS_CloseFontSmooth

函数简介 :

关闭字体平滑

函数原型 ：

__int64 __stdcall HCSYS_CloseFontSmooth();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_OpenFontSmooth

Help > 系统模块(SYS) >
HCSYS_OpenFontSmooth

函数简介 :

打开字体平滑

函数原型 ：

__int64 __stdcall HCSYS_OpenFontSmooth();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_CheckUAC

Help > 系统模块(SYS) >
HCSYS_CheckUAC

函数简介 :

检查当前系统是否开启了UAC(用户控制)

函数原型 ：

__int64 __stdcall HCSYS_CheckUAC();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_SetUAC

Help > 系统模块(SYS) >
HCSYS_SetUAC

函数简介 :

设置当前系统的UAC(用户控制)开关

函数原型 ：

__int64 __stdcall HCSYS_SetUAC(__int32 bEnable);

参数定义:

bEnable：开启1或者关闭0

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_Delay

Help > 系统模块(SYS) >
HCSYS_Delay

函数简介 :

延迟

函数原型 ：

__int64 __stdcall HCSYS_Delay(__int32 毫秒);

参数定义:

毫秒:毫秒

返回值:

查看返回值表 HD返回值表

备注:

不会堵塞主线程


HCSYS_DelayEx

Help > 系统模块(SYS) >
HCSYS_DelayEx

函数简介 :

在随机范围内延迟

函数原型 ：

__int64 __stdcall HCSYS_DelayEx(__int32 最小毫秒, __int32 最大毫秒);

参数定义:

最小毫秒:毫秒

最大毫秒:毫秒

返回值:

查看返回值表 HD返回值表

备注:

不会堵塞主线程


HCSYS_ExitSys

Help > 系统模块(SYS) >
HCSYS_ExitSys

函数简介 :

关闭系统

函数原型 ：

__int64 __stdcall HCSYS_ExitSys (__int32 type);

参数定义:

type：注销(0) 关机(1) 重启(2)

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_CloseScreenProtect

Help > 系统模块(SYS) >
HCSYS_CloseScreenProtect

函数简介 :

关闭屏保

函数原型 ：

__int64 __stdcall HCSYS_CloseScreenProtect();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_ClosePowerManager

Help > 系统模块(SYS) >
HCSYS_ClosePowerManager

函数简介 :

关闭电源管理,不进入睡眠

函数原型 ：

__int64 __stdcall HCSYS_ClosePowerManager();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_ResumeSystemModify

Help > 系统模块(SYS) >
HCSYS_ResumeSystemModify

函数简介 :

恢复系统上次的修改

函数原型 ：

__int64 __stdcall HCSYS_ResumeSystemModify();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

如果中控软件运行的时候修改了系统设置

那么这个最好在中控程序退出的时候调用


HCSYS_DisableCloseDisplayAndSleep

Help > 系统模块(SYS) >
HCSYS_DisableCloseDisplayAndSleep

函数简介 :

设置当前的电源设置(禁止关闭显示器,禁止关闭硬盘,禁止睡眠和待机)

函数原型 ：

__int64 __stdcall HCSYS_DisableCloseDisplayAndSleep();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetDir

Help > 系统模块(SYS) >
HCSYS_GetDir

函数简介 :

获取路径

函数原型 ：

__int64 __stdcall HCSYS_GetDir (__int32 type);

参数定义:

type：当前路径(0) system32路径(1) windows所在路径(2) 临时目录路径(3) 当前进程(exe)所在的路径(4)

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetCpuType

Help > 系统模块(SYS) >
HCSYS_GetCpuType

函数简介 :

获取CPU类型

函数原型 ：

__int64 __stdcall HCSYS_GetCpuType ();

参数定义:

返回值:

查看返回值表 HD返回值表

1:Inter

2:Amd

备注:

无


HCSYS_GetCpuUsage

Help > 系统模块(SYS) >
HCSYS_GetCpuUsage

函数简介 :

获取CPU使用率

函数原型 ：

__int64 __stdcall HCSYS_GetCpuUsage();

参数定义:

无

返回值:

查看返回值表 HD返回值表

大于0表示:使用率百分比

备注:

无


HCSYS_GetCpuUsageByPid

Help > 系统模块(SYS) >
HCSYS_GetCpuUsageByPid

函数简介 :

获取指定进程的CPU使用率

函数原型 ：

__int64 __stdcall HCSYS_GetCpuUsageByPid(__int32 pid);

参数定义 :

pid:进程PID

返回值:

查看返回值表 HD返回值表

大于0表示:使用率百分比

备注:

返回值是整数百分比

返回字符串字符串是(含小数百分比)


HCSYS_GetMemoryUsageByPid

Help > 系统模块(SYS) >
HCSYS_GetMemoryUsageByPid

函数简介 :

获取指定进程的内存使用率

函数原型 ：

__int64 __stdcall HCSYS_GetMemoryUsageByPid(__int32 pid);

参数定义 :

无

返回值:

查看返回值表 HD返回值表

大于0表示:使用率百分比

备注:

无


HCSYS_GetDiskSerial

Help > 系统模块(SYS) >
HCSYS_GetDiskSerial

函数简介 :

获取磁盘序列号

函数原型 ：

__int64 __stdcall HCSYS_GetDiskSerial (__int32 index);

参数定义:

index:磁盘序号

返回值:

查看返回值表 HD返回值表

备注:

进程要有管理员权限才能获取成功


HCSYS_GetDisplayInfo

Help > 系统模块(SYS) >
HCSYS_GetDisplayInfo

函数简介 :

获取显卡信息

函数原型 ：

__int64 __stdcall HCSYS_GetDisplayInfo ();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetDPI

Help > 系统模块(SYS) >
HCSYS_GetDPI

函数简介 :

获取DPI

函数原型 ：

__int64 __stdcall HCSYS_GetDPI();

参数定义:

无

返回值:

查看返回值表 HD返回值表

大于0表示具体的DPI

备注:

无


HCSYS_RunApp

Help > 系统模块(SYS) >
HCSYS_RunApp

函数简介 :

运行指定路径下的exe

函数原型 ：

__int64 __stdcall HCSYS_RunApp(char* path, long type);

参数定义:

path：exe路径

type:返回值类型 进程ID(0) 线程ID(1) 进程句柄(2) 线程句柄(3)

返回值:

查看返回值表 HD返回值表

备注:

这个不支持启动参数


HCSYS_RunAppGetRet

Help > 系统模块(SYS) >
HCSYS_RunAppGetRet

函数简介 :

获取CMD命令形式的打开进程并获取返回输出

函数原型 ：

__int64 __stdcall HCSYS_RunAppGetRet(char* cmdApp, BOOL bShowCrol, BOOL bWait);

参数定义:

cmdApp: 带exe+启动参数 如:"\"J:\\HMADG\\HMad\\x64\\Release\\GoogleAuthy.exe\" DN7BNCWGVYBJHC677AYLLC3EFZEU2VIP"

bShowCrol: 是否显示进程窗口

Bwait:是否等待进程结束返回 1. 真 会堵塞直到进程关闭(为了获取输出字符串) 2.假 不会堵塞同时获取不到输出字符串

返回值:

成功返回:PID 和 返回json

失败返回:查看返回值表 HD返回值表

备注:


HCSYS_RunAppEx

Help > 系统模块(SYS) >
HCSYS_RunAppEx

函数简介 :

运行指定路径下的exe 这个支持启动参数

函数原型 ：

__int64 __stdcall HCSYS_RunAppEx(char* path, char* appName, char* lparam, __int32 flag, long type);

参数定义:

path：exe路径

appName:exe名字

lparam:启动参数

flag:挂起状态打开(4),直接打开运行(0)

type:返回值类型 进程ID(0) 线程ID(1) 进程句柄(2) 线程句柄(3)

返回值:

查看返回值表 HD返回值表

备注:

这个支持启动参数


HCSYS_RunAppExxxx

Help > 系统模块(SYS) >
HCSYS_RunAppExxxx

函数简介 :

运行指定路径下的exe (HCSYS_RunAppEx的扩展版本) 这个支持启动参数同时指定了当前进程的路径

函数原型 ：

__int64 __stdcall HCSYS_RunAppExxxx(char* path, char* appName, char* lparam, __int32 flag, long type);

参数定义:

path：exe路径

appName:exe名字

lparam:启动参数

flag:挂起状态打开(4),直接打开运行(0)

type:返回值类型 进程ID(0) 线程ID(1) 进程句柄(2) 线程句柄(3)

返回值:

查看返回值表 HD返回值表

备注:

这个支持启动参数


HCSYS_GetHDiskCode

Help > 系统模块(SYS) >
HCSYS_GetHDiskCode

函数简介 :

获取磁盘特征码

函数原型 ：

__int64 __stdcall HCSYS_GetHDiskCode();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetCpuCode

Help > 系统模块(SYS) >
HCSYS_GetCpuCode

函数简介 :

获取CPU特征码

函数原型 ：

__int64 __stdcall HCSYS_GetCpuCode ();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetBIOSInfo

Help > 系统模块(SYS) >
HCSYS_GetBIOSInfo

函数简介 :

获取BOIS制造日期

函数原型 ：

__int64 __stdcall HCSYS_GetBIOSInfo();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetMachineCode

Help > 系统模块(SYS) >
HCSYS_GetMachineCode

函数简介 :

获取机器码(包含网卡)

函数原型 ：

__int64 __stdcall HCSYS_GetMachineCode ();

参数定义:

无

返回值:

查看返回值表 HD返回值表

返回成功 信息存json中

备注:

无


HCSYS_GetMachineCodeNoMac

Help > 系统模块(SYS) >
HCSYS_GetMachineCodeNoMac

函数简介 :

获取机器码(不包含网卡)

函数原型 ：

__int64 __stdcall HCSYS_GetMachineCodeNoMac ();

参数定义:

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetNetTime

Help > 系统模块(SYS) >
HCSYS_GetNetTime

函数简介 :

获取网络时间

函数原型 ：

__int64 __stdcall HCSYS_GetNetTime ();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

北京时间

固定内置服务器IP


HCSYS_GetNetTimeByIp

Help > 系统模块(SYS) >
HCSYS_GetNetTimeByIp

函数简介 :

获取网络时间(指定服务器IP获取)

函数原型 ：

__int64 __stdcall HCSYS_GetNetTimeByIp (char* ip);

参数定义 :

ip：ip字符串(如:127.0.0.1)

返回值:

查看返回值表 HD返回值表

备注:

北京时间


HCSYS_GetSystemBuildNumber

Help > 系统模块(SYS) >
HCSYS_GetSystemBuildNumber

函数简介 :

获取系统版本

函数原型 ：

__int64 __stdcall HCSYS_GetSystemBuildNumber();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

大于0表示具体版本号

备注:

无


HCSYS_GetSystemType

Help > 系统模块(SYS) >
HCSYS_GetSystemType

函数简介 :

获取系统类型

函数原型 ：

__int64 __stdcall HCSYS_GetSystemType();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

大于0表示具体版本:

win95/98/me/nt4.0 (1)

xp/2000 (2)

2003/2003 R2/xp-64 (3)

win7/2008 R2 (4)

vista/2008 (5)

win8/2012 (6)

win8.1/2012 R2 (7)

win10/2016 TP/win11 (8)

win11 (9)

备注:

无


HCSYS_GetTime

Help > 系统模块(SYS) >
HCSYS_GetTime

函数简介 :

获取开机到现在过经过的时间(毫秒)

函数原型 ：

__int64 __stdcall HCSYS_GetTime();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_Is64Bit

Help > 系统模块(SYS) >
HCSYS_Is64Bit

函数简介 :

当前进程是否是64位

函数原型 ：

__int64 __stdcall HCSYS_Is64Bit();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_IsSurrpotVt

Help > 系统模块(SYS) >
HCSYS_IsSurrpotVt

函数简介 :

是否支持vt

函数原型 ：

__int64 __stdcall HCSYS_IsSurrpotVt();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

可以在Bios中开启vt,如果不支持就没办法了


HCSYS_GetScreenPixelDepth

Help > 系统模块(SYS) >
HCSYS_GetScreenPixelDepth

函数简介 :

获取屏幕的色深(24/32之类的)

函数原型 ：

__int64 __stdcall HCSYS_GetScreenPixelDepth();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_SetScreenPixelDepth

Help > 系统模块(SYS) >
HCSYS_SetScreenPixelDepth

函数简介 :

设置屏幕的色深

函数原型 ：

__int64 __stdcall HCSYS_SetScreenPixelDepth(__int32 dmBitsPerPel);

参数定义 :

dmBitsPerPel：像素深度值 (24/32之类的)

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetScreenHeight

Help > 系统模块(SYS) >
HCSYS_GetScreenHeight

函数简介 :

获取屏幕高度

函数原型 ：

__int64 __stdcall HCSYS_GetScreenHeight( );

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetScreenWidth

Help > 系统模块(SYS) >
HCSYS_GetScreenWidth

函数简介 :

获取屏幕宽度

函数原型 ：

__int64 __stdcall HCSYS_GetScreenWidth( );

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_SetScreen

Help > 系统模块(SYS) >
HCSYS_SetScreen

函数简介 :

设置屏幕分辨率

函数原型 ：

__int64 __stdcall HCSYS_SetScreen(__int32 width, __int32 height);

参数定义 :

width:宽度

heght:高度

返回值:

查看返回值表 HD返回值表

备注:

无


HCSYS_GetCmdRet

Help > 系统模块(SYS) >
HCSYS_GetCmdRet

函数简介 :

获取CMD命令返回值(字符串)

函数原型 ：

__int64 __stdcall HCSYS_GetCmdRet(char* cmd);

参数定义 :

cmd:cmd命令字符串

返回值:

查看返回值表 HD返回值表

备注:

无


自定义插件模块(Com)

Help > 系统模块(SYS) >
自定义插件模块(Com)


HCModule_AddComponent

Help > 系统模块(SYS) > 自定义插件模块(Com) >
HCModule_AddComponent

函数简介 :

添加自定义组件

函数原型 ：

__int64 __stdcall HCModule_AddComponent(__int32 窗口序号, char*账号, char*密码, char * 组件绝对路径, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 l5, __int64 l6, __int64 addType = -1, BOOL 是否自动初始化 = TRUE, BOOL 是否主线程调用 = FALSE);

__int64 __stdcall HCModule_AddComponent(__int32 窗口序号, char*账号, char*密码, char * 组件绝对路径, __int64 l1, __int64 l2, __int64 l3, __int64 l4, __int64 l5, __int64 l6, __int64 addType = -1, BOOL 是否自动初始化 = TRUE, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号：窗口序号

账号:开发者自己的自定义模块设置的账号

密码:开发者自己的自定义模块设置的密码

组件绝对路径:组件绝对路径 注意不要用中文路径！！

rcx-l1:CALL参数 第一个参数

rdx-l2:CALL参数 第二个参数

r8-l3:CALL参数 第三个参数

r9-l4:CALL参数 第四个参数

l5:CALL参数 第五个参数

l6:CALL参数 第六个参数

addType:添加方式 -1默认或者1无痕(不可卸载) 2普通加载(可卸载)

是否自动初始化:是否自动调用初始化接口(HDDataInit)并传递rcx-l6等6个参数

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程HC_HookMainThread

返回值:

查看返回值表 HD返回值表

备注:

自定义模块需要导入包并来实现接口绑定


HCModule_DeleteComponent

Help > 系统模块(SYS) > 自定义插件模块(Com) >
HCModule_DeleteComponent

函数简介 :

卸载指定插件

函数原型 ：

__int64 __stdcall HCModule_DeleteComponent(__int32 窗口序号, char * 组件名, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号：窗口序号

组件名:dll的文件名(不包含后缀.dll)

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

自定义模块需要导入包并来实现接口绑定


HCModule_CALL

Help > 系统模块(SYS) > 自定义插件模块(Com) >
HCModule_CALL

函数简介 :

调用自定义组件中的接口

函数原型 ：

__int64 __stdcall HCModule_CALL(__int32 窗口序号, char * 组件名, char *函数名字, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 l5, __int64 l6, BOOL 是否主线程调用=FALSE);

__int64 __stdcall HCModule_CALL(__int32 窗口序号, char * 组件名, char *函数名字, __int64 l1, __int64 l2, __int64 l3, __int64 l4, __int64 l5, __int64 l6, BOOL 是否主线程调用=FALSE);

参数定义:

窗口序号：窗口序号

组件名：组件名(就是组件文件的名字)

函数名字：函数名字

组件绝对路径:组件绝对路径

rcx-l1:CALL参数 第一个参数

rdx-l2:CALL参数 第二个参数

r8-l3:CALL参数 第三个参数

r9-l4:CALL参数 第四个参数

l5:CALL参数 第五个参数

l6:CALL参数 第六个参数

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

自定义模块需要导入包并来实现接口绑定

参考:X86X64自定义插件接口说明


HCModule_CALLEx

Help > 系统模块(SYS) > 自定义插件模块(Com) >
HCModule_CALLEx

函数简介 :

调用自定义组件中的接口(可传递任意参数类型)

函数原型 ：

__int64 __stdcall HCModule_CALLEx (__int32 窗口序号, char * 组件名, char *函数名字, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 l5, __int64 l6, char* buffer, int bufferSize, BOOL 是否主线程调用= FALSE);

__int64 __stdcall HCModule_CALLEx(__int32 窗口序号, char * 组件名, char *函数名字, __int64 l1 , __int64 l2, __int64 l3, __int64 l4, __int64 l5, __int64 l6, char* buffer, int bufferSize, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号：窗口序号

组件名：组件名(就是组件文件的名字)

函数名字：函数名字

rcx-l1:CALL参数 第一个参数

rdx-l2:CALL参数 第二个参数

r8-l3:CALL参数 第三个参数

r9-l4:CALL参数 第四个参数

l5:CALL参数 第五个参数

l6:CALL参数 第六个参数

buffer:缓冲区地址

bufferSize:指定的缓冲区中有效字节大小(最大不可超过1024*100),如果是字符串不能超过(1024*100-1),统一规定不能超过(1024*100-1)

是否主线程调用:是否主线程调用这个CALL,需要挂接主线程

返回值:

查看返回值表 HD返回值表

备注:

自定义模块需要导入包并来实现接口绑定

注意:传递的buffer字符串在自定义插件接口

typedef HDComRet(__stdcall *HDComFunType)(__int64 retStrAddr, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 l5, __int64 l6);

第一个参数retStrAddr作为字符串首地址(char*)能拿到

如:

C++代码演示:

char* info = (char*)retStrAddr;

参考:X86X64自定义插件接口说明


X86X64自定义插件接口说明

Help > 系统模块(SYS) > 自定义插件模块(Com) >
X86X64自定义插件接口说明

#pragma pack(8)//设置默认对齐数为8

//HD返回值类型
typedef enum HDComRetType
{
HDComRetType_整数 = 0,
HDComRetType_长整数 = 0,
HDComRetType_双浮点数,
HDComRetType_Json
}HDComRetType;

//HD组件接口返回值
typedef struct HDComRet
{
HDComRetType m_type;
HDValue m_iValue;
char *ToJson();
HDComRet(HDComRetType type, HDValue value);
HDComRet(HDComRetType type, __int32 value);
HDComRet(HDComRetType type, __int64 value);
HDComRet(HDComRetType type, double value);
HDComRet(HDComRetType type, char* value);
}HDComRet;

#ifdef _WIN64
//接口类型 X64
typedef HDComRet(__stdcall *HDComFunType)(__int64 retStrAddr, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 l5, __int64 l6);//接口函数
typedef HDComRet(__stdcall *HDDataInitType)(const char* pAccount, const char* pPassword, __int64 rcx, __int64 rdx, __int64 r8, __int64 r9, __int64 l5, __int64 l6);
#else
//接口类型 X86
typedef HDComRetType(__stdcall *HDComFunType)(__int32 retStrAddr, __int32 lparam1, __int32 lparam2, __int32 lparam3, __int32 lparam4, __int32 lparam5, __int32 lparam6);//接口函数
typedef HDComRetType(__stdcall *HDDataInitType)(const char* pAccount, const char* pPassword, __int32 retStrAddr, __int32 lparam1, __int32 lparam2, __int32 lparam3, __int32 lparam4, __int32 lparam5, __int32 lparam6);
#endif // __int64

#pragma pack()


插件包装器

Help > 系统模块(SYS) > 自定义插件模块(Com) >
插件包装器

头文件:

HDLoader.h

静态库:

HDPacker.lib release版本

HDPackerd.lib debug版本


HCCOM_Load

Help > 系统模块(SYS) > 自定义插件模块(Com) > 插件包装器 >
HCCOM_Load

函数简介 :

加载组件

函数原型 ：

__int64 __stdcall HCCOM_Load(char * 组件名, __int32 组件索引, __int32 timeOutMs = 300000);

参数定义:

组件名：组件名(这里的组件名就是HCModule_CALL的参数) 不包含后缀

组件索引：1开始 最多添加2个组件

timeOutMs：当通知接口为堵塞模式下 有效 默认5分钟超时

返回值:

查看返回值表 HD返回值表

备注:
组件名为当前组件文件的名字(不包含后缀!,如果组件文件无后缀可忽视)

如: hdmad.dll 所对应的 组件名必须是 hdmad

头文件:

HDLoader.h

静态库:

HDPacker.lib release版本

HDPackerd.lib debug版本


HCCOM_Register

Help > 系统模块(SYS) > 自定义插件模块(Com) > 插件包装器 >
HCCOM_Register

函数简介 :

注册自定义组件中的接口

函数原型 ：

__int64 __stdcall HCCOM_Register(char * 函数名, __int64 函数地址);

参数定义:

函数名：函数名

函数地址：函数地址

返回值:

查看返回值表 HD返回值表

备注:
内置数据初始化函数接口名字:HDDataInit(接口类型是HDComFunType)
HDDataInit初始化函数会在加载组件的时候首次调用以便于完成对相关组件数据的初始化(比如:基地址相关表达式的获取)
如果需要初始化就自己写一个名字叫做HDDataInit的函数,类型为HDComFunType,并调用HCCOM_Register

头文件:

HDLoader.h

静态库:

HDPacker.lib release版本

HDPackerd.lib debug版本

参考:X86X64自定义插件接口说明


HCCOM_NotifyToTarget

Help > 系统模块(SYS) > 自定义插件模块(Com) > 插件包装器 >
HCCOM_NotifyToTarget

函数简介 :

自定义模块通知目标进程接口

函数原型 ：

__int64 __stdcall HCCOM_NotifyToTarget(__int32 插件序号,__int32 callType, BOOL 堵塞 = FALSE, __int32 超时毫秒 = 10000, char* 字符串信息1 = NULL, char* 字符串信息2 = NULL, __int64 CALL地址 = 0, __int64 rcx = 0, __int64 rdx = 0, __int64 r8 = 0, __int64 r9 = 0, __int64 lparam5 = 0, __int64 lparam6 = 0, __int64 lparam7 = 0, __int64 lparam8 = 0, BOOL 是否主线程调用 = FALSE);

__int64 __stdcall HCCOM_NotifyToTarget(__int32 插件序号,__int32 callType, BOOL 堵塞 = FALSE, __int32 超时毫秒 = 10000, char* 字符串信息1 = NULL, char* 字符串信息2 = NULL, __int32 CALL地址 = 0, __int32 lparam1 = 0, __int32 lparam2 = 0, __int32 lparam3 = 0, __int32 lparam4 = 0, __int32 lparam5 = 0, __int32 lparam6 = 0, __int32 lparam7 = 0, __int32 lparam8 = 0, BOOL 是否主线程调用 = FALSE);

参数定义:

插件序号:自定义插件支持2个 这里分别是1或者2

callType:接口编号 (内置了 找管理员索要)

堵塞:调用接口是否堵塞,等待返回 注意:(这里堵塞如果为真 表示的也不是无限时间,这个时间基于 HCCOM_Load 的第三个参数{timeOutMs }，反之基于本接口的第三个参数{超时毫秒}）

超时毫秒:如果堵塞参数为假 这个参数有效

字符串信息1-字符串信息2-CALL地址- rcx-rdx-r8-r9- lparam5- lparam6- lparam7- lparam8 : 用户自定义传递参数 注意参数类型

字符串信息1-字符串信息2-CALL地址- lparam1-lparam2-lparam3-lparam4- lparam5- lparam6- lparam7- lparam8 : 用户自定义传递参数 注意参数类型

是否主线程调用: 真为主线程调用,前期在绑定了主程序,请先使用 HC_HookMainThread

返回值:

查看返回值表 HD返回值表

备注:
内置数据初始化函数接口名字:HDDataInit(接口类型是HDComFunType)
HDDataInit初始化函数会在加载组件的时候首次调用以便于完成对相关组件数据的初始化(比如:基地址相关表达式的获取)
如果需要初始化就自己写一个名字叫做HDDataInit的函数,类型为HDComFunType,并调用HCCOM_Register

头文件:

HDLoader.h

静态库:

HDPacker.lib release版本

HDPackerd.lib debug版本


HCCOM_NotifyToController

Help > 系统模块(SYS) > 自定义插件模块(Com) > 插件包装器 >
HCCOM_NotifyToController

函数简介 :

自定义模块通知中控进程接口

函数原型 ：

__int64 __stdcall HCCOM_NotifyToController(__int32 插件序号,__int32 callType, BOOL 堵塞 = FALSE, __int32 超时毫秒 = 10000, char* 字符串信息1 = NULL, char* 字符串信息2 = NULL, __int64 CALL地址 = 0, __int64 rcx = 0, __int64 rdx = 0, __int64 r8 = 0, __int64 r9 = 0, __int64 lparam5 = 0, __int64 lparam6 = 0, __int64 lparam7 = 0, __int64 lparam8 = 0, BOOL 是否主线程调用 = FALSE);

__int64 __stdcall HCCOM_NotifyToController(__int32 插件序号,__int32 callType, BOOL 堵塞 = FALSE, __int32 超时毫秒 = 10000, char* 字符串信息1 = NULL, char* 字符串信息2 = NULL, __int32 CALL地址 = 0, __int32 lparam1 = 0, __int32 lparam2 = 0, __int32 lparam3 = 0, __int32 lparam4 = 0, __int32 lparam5 = 0, __int32 lparam6 = 0, __int32 lparam7 = 0, __int32 lparam8 = 0, BOOL 是否主线程调用 = FALSE);

参数定义:

插件序号: 自定义插件支持2个 这里分别是1或者2

callType:接口编号 (自定义) 中控自己再处理事件回调函数中可以判断 调用HCEnv_SetHandleEventCallBack 接口设置【 注意！ 自定义编号值在0到1000之间 不包含1000！！！！！】

堵塞:调用接口是否堵塞,等待返回 注意:(这里堵塞如果为真 表示的也不是无限时间,这个时间基于 HCCOM_Load 的第三个参数{timeOutMs }，反之基于本接口的第三个参数{超时毫秒}）

超时毫秒:如果堵塞参数为假 这个参数有效

字符串信息1-字符串信息2-CALL地址- rcx-rdx-r8-r9- lparam5- lparam6- lparam7- lparam8 : 用户自定义传递参数 注意参数类型

字符串信息1-字符串信息2-CALL地址- lparam1-lparam2-lparam3-lparam4- lparam5- lparam6- lparam7- lparam8 : 用户自定义传递参数 注意参数类型

是否主线程调用: 真为主线程调用,前期在绑定了主程序,请先使用 HC_HookMainThread

返回值:

查看返回值表 HD返回值表

中控事件处理回调函数接口类型:

typedef __int32(__stdcall *HandleEventFunType)(__int32 窗口序号, __int32 插件序号, HDHandleEventInfo Info);

HDHandleEventInfo结构体:

typedef struct HDHandleEventInfo //处理事件
{
__int32 m_callType;//自定义
HDValue m_call;
HDValue m_rcx;
HDValue m_rdx;
HDValue m_r8;
HDValue m_r9;
HDValue m_lparam5;
HDValue m_lparam6;
HDValue m_lparam7;
HDValue m_lparam8;
HDValue m_value;
HDValue m_size;
char m_buffer[MAX_PATH];
char m_buffer2[MAX_PATH];
HDValue* m_pRetValue;//值 单独
char* m_pRetJson;//字符串 返回
}HDHandleEventInfo;

备注:
内置数据初始化函数接口名字:HDDataInit(接口类型是HDComFunType)
HDDataInit初始化函数会在加载组件的时候首次调用以便于完成对相关组件数据的初始化(比如:基地址相关表达式的获取)
如果需要初始化就自己写一个名字叫做HDDataInit的函数,类型为HDComFunType,并调用HCCOM_Register

头文件:

HDLoader.h

静态库:

HDPacker.lib release版本

HDPackerd.lib debug版本


HCCOM_GetRetJson

Help > 系统模块(SYS) > 自定义插件模块(Com) > 插件包装器 >
HCCOM_GetRetJson

函数简介 :

获取自定义模块通知中控进程返回的字符串结果

函数原型 ：

char* __stdcall HCCOM_GetRetJson(__int32 插件序号);

参数定义:

插件序号:自定义插件支持2个 这里分别是1或者2

返回值:

查看返回值表 HD返回值表

备注:
返回的字符串是自定义的

在中控中自己设置的事件处理回调函数中设置返回

头文件:

HDLoader.h

静态库:

HDPacker.lib release版本

HDPackerd.lib debug版本


HCCOM_FindCode

Help > 系统模块(SYS) > 自定义插件模块(Com) > 插件包装器 >
HCCOM_FindCode

函数简介 :

特征码查找

函数原型 ：

__int64 __stdcall HCCOM_FindCode(char *特征码字符串地址, __int32 偏移, __int32 次数, __int32 type = 1, char *模块名字 = NULL);

参数定义 :

特征码字符串地址:特征码字符串地址(支持??)

偏移：正负偏移

次数：找到的第几次 从1开始

type：获取的是(基地址/CALL地址/直接地址/地址中的值) 1为地址 2为基地址 3为CALL 4为地址中的值

模块名字:在指定的模块中搜索,默认为主模块 NULL为默认

返回值 :

查看返回值表 HD返回值表

备注:

无


状态机模块

Help >
状态机模块

状态机模块包含3个子文件:

状态模块 HDStatus.h

状态任务模块 HDStatusTask.h

状态机控制器模块 HDStatusControler.h

https://www.bilibili.com/video/BV1mK411e7Ze/?spm_id_from=333.999.0.0


HCHD_GetHDStatusControler

Help > 状态机模块 >
HCHD_GetHDStatusControler
唯一一个导出接口 :

函数简介 :

获取控制器有且只有一个

函数原型 :

HDStatusControler* _stdcall HCHD_GetHDStatusControler();

参数定义 :

无参数

返回值 :

返回控制器单例对象地址

备注:

拿到控制器对象可以获取或者操作其他组件对象


HDStatusTask

Help > 状态机模块 >
HDStatusTask

HDStatusTask.h

#pragma once
#include"windows.h"
#include"winDNS.h"
class HDStatusTask
{
public:
//提供接口
virtual BOOL PauseListener() = 0;//暂停就循环等待
virtual BOOL IsStop() = 0;//状态不一致就停止
};


HDStatus

Help > 状态机模块 >
HDStatus

HDStatus.h

#pragma once
#include"windows.h"
#include"winDNS.h"
//接口
class HDStatusTask;
class HDStatus
{
public:
//回调接口类型
using HDSTATUSTASK_FUN_TYPE = void(*)(HDStatus *pHCStatus, HDStatusTask *pHCStatusTask);
using HDSTATUS_FUN_TYPE = void(*)(HDStatus *pHCStatus);
public:
//提供
virtual __int64 Start() = 0;//开启
virtual __int64 End() = 0;//会堵塞等待结束
virtual __int64 SwitchStatus(__int32 type) = 0;//切换状态
virtual __int32 IsStart() = 0;//是否开启状态机
virtual __int32 IsEnd() = 0;//是否结束状态机
virtual __int32 IsRunning() = 0;//是否运行 状态轮询+状态机
virtual __int32 IsPause() = 0;//是否暂停状态机
virtual __int32 GetCurType() = 0;//获取当前状态
virtual __int32 GetIndex() = 0;//获取当前窗口序号
public:
//提供
virtual __int64 AddStatusTask(__int32 type, HDSTATUSTASK_FUN_TYPE call, LPVOID lparam) = 0;//添加状态任务
virtual __int64 AddStatus(__int32 type, HDSTATUS_FUN_TYPE call) = 0;//添加状态任务 覆盖
};


HDStatusControler

Help > 状态机模块 >
HDStatusControler

HDStatusControler.h

#pragma once
#include"windows.h"
#include"winDNS.h"
#define HEARTDLL_EXPORT_HDSTATUS
#ifdef HEARTDLL_EXPORT_HDSTATUS
#define HEARTDLL_API_HDSTATUS __declspec(dllexport) //导出
#else
#define HEARTDLL_API_HDSTATUS __declspec(dllimport) //导入
#endif
//接口
class HDStatus;
class HDStatusControler
{
public:
//提供
virtual LPVOID BuilderLparam(__int32 bSize) = 0;//申请内存 构建参数
public:
//提供
virtual HDStatus* AddStatus(__int32 index) = 0;//添加状态机
virtual HDStatus* GetStatus(__int32 index) = 0;//获取状态机
virtual __int64 StartStatus(__int32 index) = 0;//知道窗口序号 开启会检查后不会再开启
virtual __int64 StartStatus(__int32 beginIndex, __int32 endIndex) = 0;//多少开 开启会检查后不会再开启
virtual __int64 AttachStatusCopy(__int32 index, HDStatus*pHCStatus) = 0;//附加状态机到某个窗口 会拷贝一份 参数不会拷贝 如果是同窗口序号直接返回
virtual __int64 AttachStatusCopyAll(HDStatus*pHCStatus) = 0;//附加状态机到所有窗口 会拷贝一份 参数不会拷贝
virtual __int64 PauseStatus(__int32 index) = 0;//暂停
virtual __int64 RecoverStatus(__int32 index) = 0;//恢复
virtual __int64 EndStatus(__int32 index) = 0;//会堵塞
};
//获取状态机控制器有且只有一个
extern "C" HEARTDLL_API_HDSTATUS HDStatusControler* _stdcall HCHD_GetHDStatusControler();


控制器模块

Help >
控制器模块

多任务控制器框架

1.多任务同步执行,可以实现在用户代码层上的任意代码处暂停和恢复,不涉及汇编层面上,更稳定,更安全,控制性强

2.相互独立,请求权限,脱离权限,注销权限,请求暂停,请求恢复

3.控制器组件,突发器组件,执行器组件,任务组件 4大组件

4.需要包含5个头文件 ,在文件夹中

HDTask.h

HDActuator.h

HDBurster.h

HDController.h

HMDefineFun.h

Copyright ? 2023. All rights reserved.(迪大学院.)


HCHD_GetHDController

Help > 控制器模块 >
HCHD_GetHDController
唯一一个导出接口 :

函数简介 :

获取控制器有且只有一个

函数原型 :

HDController* _stdcall HCHD_GetHDController();

参数定义 :

无参数

返回值 :

返回控制器单例对象地址

备注:

拿到控制器对象可以获取或者操作其他组件对象


任务组件

Help > 控制器模块 >
任务组件
New Topic (Press Shift-Enter to insert a line break. Press Enter to add a paragraph return.)


HDTask.h

Help > 控制器模块 > 任务组件 >
HDTask.h

==========================================

头文件

==========================================

#pragma once
#include"windows.h"
#include"winDNS.h"
#include
"string"
using namespace std;
class HDActuator;
//导出类
class
HDTask
{
public:
//回调接口类型
using ACTION_FUN_TYPE =
BOOL(*)(HDActuator * pAttachActuator, HDTask
*pAttachTask);
public:
//检查判断
virtual BOOL IsRunning()=
0;
public:
//参数构建
virtual LPARAM GetLparam() =
0;
virtual LPARAM LparamBuilder(DWORD sizeByte) =
0;
public:
//设置或获取
virtual TCHAR *GetName() =
0;
};


执行器组件

Help > 控制器模块 >
执行器组件
New Topic (Press Shift-Enter to insert a line break. Press Enter to add a paragraph return.)


HDActuator.h

Help > 控制器模块 > 执行器组件 >
HDActuator.h

==========================================

头文件

==========================================

#pragma
once
#include"windows.h"
#include"winDNS.h"
#include "string"
using
namespace std;
//导出类
class HDTask;
class HLoopController;
class
HDActuator
{
public:
//回调接口类型
using
ACTUATOR_END_FUN_TYPE = void(*)(HDActuator *pHActuator);
using
ACTUATOR_BEGIN_FUN_TYPE = void(*)(HDActuator *pHActuator);
using ACTION_FUN_TYPE =
  BOOL(*)(HDActuator * pAttachActuator, HDTask
*pAttachTask);
public:
//添加任务
virtual HDTask* AddTask(TCHAR
*taskName, ACTION_FUN_TYPE fun, LPARAM lparam) =
0;
public:
//开关
virtual BOOL  Start() =
0;
virtual DWORD Quit() = 0;
public:
//权限
virtual
BOOL  NotifyManualQuit() = 0;
virtual INT
InsertPauseListener() = 0;
virtual BOOL  RequestPermission() =
0;
virtual BOOL  RequestPermissionTime(DWORD milliSecond) =
0;
virtual BOOL  OutPermission() =
0;
public:
//设置或获取
virtual TCHAR *GetName() =
0;
virtual void SetPriorityLevel(DWORD priorityLevel) =
0;
virtual DWORD GetPriorityLevel() = 0;
virtual HDTask*
GetCurrentTask() = 0;
public:
//检查
virtual BOOL IsRunning()
= 0;
virtual BOOL IsPause() = 0;
virtual INT
InsertPauseActuatorsSystemListener() =
0;
public:
//休眠
virtual int LoopSleep(int milSeconed,
HDActuator * pActuator = NULL) = 0;
};


突发器组件

Help > 控制器模块 >
突发器组件
New Topic (Press Shift-Enter to insert a line break. Press Enter to add a paragraph return.)


HDBurster.h

Help > 控制器模块 > 突发器组件 >
HDBurster.h

==========================================

头文件

==========================================

#pragma once
#include"windows.h"
#include"winDNS.h"
#include "string"
using namespace std;
//导出类
class HDController;
class HDBurster
{
public:
//接口类型
using BURSTER_END_FUN_TYPE = void(*)(HDBurster *pHBurster);
using BURSTER_BEGIN_FUN_TYPE = void(*)(HDBurster *pHBurster);
using BURSTER_FUN_TYPE = BOOL(*)(HDBurster *pHBurster);
public:
//休眠
virtual int LoopSleep(int milSeconed, HDBurster * pHBurster = NULL) = 0;
public:
//开关
virtual BOOL Attach(HDController *pHController, BURSTER_FUN_TYPE fun, BURSTER_BEGIN_FUN_TYPE beginFun = NULL, BURSTER_END_FUN_TYPE endFun = NULL) = 0;//附加突发器
virtual BOOL Detach() = 0;//卸载 关闭 突发器 堵塞
public:
//暂停或恢复
virtual void Pause() = 0;
virtual void Revert() = 0;
public:
//判断
virtual BOOL IsPause() = 0;//是否暂停
virtual BOOL IsRunning() = 0 ;//是否在运行
virtual BOOL IsRunningSystem() = 0 ;//是否在运行 整个系统
virtual INT InsertPauseListener()=0;////监控的是突发器自己是否暂停 0正常 1被暂停过 2被暂停的时候发现自己循环器结束
virtual INT InsertPauseSystemListener() = 0 ;//监控的是整个系统是否暂停 0正常 1被暂停过 2被暂停的时候发现自己控制器结束 3被暂停的时候发现系统控制器结束
};


控制器组件

Help > 控制器模块 >
控制器组件
New Topic (Press Shift-Enter to insert a line break. Press Enter to add a paragraph return.)


HDController.h

Help > 控制器模块 > 控制器组件 >
HDController.h

==========================================

头文件

==========================================

#pragma once
#include"windows.h"
#include"winDNS.h"
#include "string"
using namespace std;
#define HEARTDLL_EXPORT_HDCN
#ifdef HEARTDLL_EXPORT_HDCN
#define HEARTDLL_API_HDCN __declspec(dllexport) //导出
#else
#define HEARTDLL_API_HDCN __declspec(dllimport) //导入
#endif
//导出类
class HDBurster;
class HDActuator;
class HDController
{
public:
//回调接口类型
using ACTUATOR_END_FUN_TYPE = void(*)(HDActuator *pHActuator);
using ACTUATOR_BEGIN_FUN_TYPE = void(*)(HDActuator *pHActuator);
public:
//添加执行器
virtual HDActuator *AddActuator(TCHAR *actuatorName, DWORD priorityLevel, ACTUATOR_BEGIN_FUN_TYPE beginCallBack, ACTUATOR_END_FUN_TYPE endCallBack) = 0;//创建普通执行器
public:
//获取突发器 有且只有一个
virtual HDBurster * GetBurster() = 0;
virtual HDActuator* GetCurrentActuator() = 0;//获取当前执行器
public:
//检查判断
virtual BOOL IsStart() = 0;//整个系统
virtual BOOL IsPause() = 0;//整个系统
virtual BOOL IsRunning() = 0;//整个系统
virtual BOOL IsActuatorsSystemPause() = 0;//整个执行器
virtual INT InsertPauseActuatorsSystemListener() = 0;//循环堵塞 整个执行器 0未被暂停 1所有执行器暂停过 2所有执行器暂停的时候发现控制器系统结束了
public:
//开关
virtual BOOL Start() = 0;//1.开始创建线程
virtual void Pause() = 0;//暂停整个 包含了突发器
virtual void PauseActuators() = 0;//暂停所有执行器 不会修改整个系统的暂停
virtual void Revert() = 0;//恢复整个 包含了突发器
virtual void RevertActuators() = 0;//恢复所有执行器 不会修改整个系统的暂停
virtual BOOL End() = 0; //1.所有执行器关闭 2.关闭自己 线程退出 堵塞
};


预制宏函数

Help > 控制器模块 >
预制宏函数
New Topic (Press Shift-Enter to insert a line break. Press Enter to add a paragraph return.)


HMDefineFun.h

Help > 控制器模块 > 预制宏函数 >
HMDefineFun.h


HCSC_SetPath

Help > 主板机模块[SC] >
HCSC_SetPath

函数简介 :

设置HDScrcpy投屏软件根目录,并重启adb相当于重置一下adb环境

函数原型 :

__int64 __stdcall HCSC_SetPath(char* rootPath);

参数定义:

rootPath:根目录( hdscrcpy.exe adb.exe所在目录)

返回值:

查看返回值表 HD返回值表

备注:

设置HDScrcpy投屏软件根目录
如:J:\\hdscrcpy2.7\\
默认C:\\hdscrcpy2.7\\

软件在群文件或者找管理索取


HCSC_ResetAdb

Help > 主板机模块[SC] >
HCSC_ResetAdb

函数简介 :

重置adb服务

函数原型 :

__int64 __stdcall HCSC_ResetAdb(char* ipInfo);

参数定义:

ipInfo:IP端口信息 多个IP信息用"|"隔开 IP和端口用":"隔开 如: 127.0.0.1:123|127.0.0.2:789|127.0.0.3:456| 可以为NULL

返回值:

查看返回值表 HD返回值表

1.当传递NULL空 表示重启ABD 此时接口返回的是是否重启成功 具体看json返回
2.当传递有效IP字符串信息 表示重启ADB的同时会连接对应的IP端口 此时接口返回的是成功连接数量 如果是0表示连接数为0或者重启失败 具体看json返回

备注:
无


HCSC_QueryDevices

Help > 主板机模块[SC] >
HCSC_QueryDevices

函数简介 :

查询当前所有可用的设备

函数原型 :

__int64 __stdcall HCSC_QueryDevices();

参数定义:

无

返回值:

查看返回值表 HD返回值表

成功json字符串信息:设备1名字|设备2名字|设备3名字| 以"|"分割

如:01aa8320032fe731|127.0.0.1:16384|emulator-5556|emulator-5558|

失败json字符串信息:连接失败信息

备注:

无

设备号类型:
1.emulator-5554/127.0.0.1:5009 模拟器Device(-s)

2.01aa8320032fe731 手机Device(-d)

3.127.0.0.1:5009 tcpipDevice(-e)


HCSC_ConnectDevices

Help > 主板机模块[SC] >
HCSC_ConnectDevices

函数简介 :

连接设备并通讯窗口序号（需要先初始化中控和登录！！HCHD_Login HCEnv_Init/HCEnv_InitEx）

函数原型 :

__int64 __stdcall HCSC_ConnectDevices(__int32 winIndex, char* devicesName, char* cmdLparam, __int32 type, __int32 w, __int32 h,__int32 timeOut);

参数定义:
winIndex:窗口序号
devicesName:设备号
cmdLparam:命令额外参数 注意:一般如果需要另外改变窗口属性,可以参考投屏器命令行指令hdscrcpy命令行解析 ,选择添加 如:"--max-fps 15" 设置帧率为15
type：设备号类型 1 -s 模拟器描述 2 -d USB设备号 3 -e Ip:port
w h :宽度 高度
timeOut:超时连接毫秒(一般10秒也就是10000毫秒)

返回值:

成功返回打开的窗口PID

失败返回:查看返回值表 HD返回值表

备注:

1.该接口会自动连接指定的设备号

2.同时会进行通讯和重连判断(需要加载HD驱动)

3.无需再通讯

设备号类型:
1.emulator-5554/127.0.0.1:5009 模拟器Device(-s)

2.01aa8320032fe731 手机Device(-d)

3.127.0.0.1:5009 tcpipDevice(-e)


hdscrcpy命令行

Help > 主板机模块[SC] >
hdscrcpy命令行

使用案例:

E:\e_wokerspace1\scrcpy2.9\hdscrcpy.exe -H -s emulator-5554 --window-width=500 --window-title="hd(1)"

E:\e_wokerspace1\scrcpy2.9\scrcpy.exe -H -s emulator-5554 --auto-bit-rate 2M --max-fps 15

常用命令:

-H
must use hd plugin!

-w, --stay-awake
Keep the device on while scrcpy is running, when the device is plugged in.

--window-borderless
Disable window decorations (display borderless window).

--window-title=text
Set a custom window title.

--window-x=value
Set the initial window horizontal position.
Default is "auto".

--window-y=value
Set the initial window vertical position.
Default is "auto".

--window-width=value
Set the initial window width.
Default is 0 (automatic).

--window-height=value
Set the initial window height.
Default is 0 (automatic).

-n, --no-control
 Disable device control (mirror the device in read-only).

-N, --no-playback
Disable video and audio playback on the computer (equivalent to --no-video-playback --no-audio-playback).

--no-audio
Disable audio forwarding.

--no-audio-playback
 Disable audio playback on the computer.

--no-cleanup
By default, scrcpy removes the server binary from the device and restores the device state (show touches, stay
awake and power mode) on exit.
This option disables this cleanup.

--no-clipboard-autosync
By default, scrcpy automatically synchronizes the computer clipboard to the device clipboard before injecting
Ctrl+v, and the device clipboard to the computer clipboard whenever it changes.
This option disables this automatic synchronization.

--no-downsize-on-error
By default, on MediaCodec error, scrcpy automatically tries again with a lower definition.
This option disables this behavior.

--no-key-repeat
Do not forward repeated key events when a key is held down.

--no-mipmaps
If the renderer is OpenGL 3.0+ or OpenGL ES 2.0+, then mipmaps are automatically generated to improve
downscaling quality. This option disables the generation of mipmaps.

--no-mouse-hover
Do not forward mouse hover (mouse motion without any clicks) events.

--no-power-on
Do not power on the device on start.

--no-video
Disable video forwarding.

--no-video-playback
Disable video playback on the computer.

--no-window
Disable scrcpy window. Implies --no-video-playback and --no-control.

--orientation=value
Same as --display-orientation=value --record-orientation=value.


hdscrcpy命令行解析

Help > 主板机模块[SC] >
hdscrcpy命令行解析

scrcpy命令
版本信息

scrcpy -v
**裁剪投屏屏幕(长:宽:偏移x:偏移y)**将某一区域放大

scrcpy -c 800:800:0:0
设置端口

scrcpy -p 27184
帮助

scrcpy --help
缩小尺寸
有时，以较低的清晰度镜像 Android 设备以提高性能很有用。
将宽度和高度限制为某个值（例如 1024）：

scrcpy --max-size 1024
scrcpy -m 1024 # short version
更改比特率
默认比特率为 8 Mbps。 要更改视频比特率（例如，更改为 2 Mbps）：

scrcpy --bit-rate 2M
scrcpy -b 2M # short version
限制帧率
可以限制捕获帧速率

scrcpy --max-fps 15
自 Android 10 起正式支持此功能，但可能适用于较早版本。

Crop
设备屏幕可能会被裁剪以仅镜像屏幕的一部分。
例如，这对于仅镜像 Oculus Go 的一只眼睛很有用：

scrcpy --crop 1224:1440:0:0 # 1224x1440 at offset (0,0)
如果还指定了 --max-size，则在裁剪后应用调整大小

锁定视频方向
要锁定镜像的方向：

scrcpy --lock-video-orientation # initial (current) orientation
scrcpy --lock-video-orientation=0 # natural orientation
scrcpy --lock-video-orientation=1 # 90° counterclockwise
scrcpy --lock-video-orientation=2 # 180°
scrcpy --lock-video-orientation=3 # 90° clockwise
这会影响录屏方向。窗口也可以独立旋转

编码器
有些设备有多个编码器，其中一些可能会导致问题或崩溃。 可以选择不同的编码器：

scrcpy --encoder OMX.qcom.video.encoder.avc
要列出可用的编码器，您可以传递一个无效的编码器名称，错误将给出可用的编码器：

scrcpy --encoder _
录屏
可以在镜像时录制屏幕：

scrcpy --record file.mp4
scrcpy -r file.mkv
在录音时禁用镜像

scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
# interrupt recording with Ctrl+C

“跳过的帧”会被记录下来，即使它们不是实时显示的（出于性能原因）。 帧在设备上带有时间戳，因此数据包延迟变化不会影响录制的文件。

v4l2loopback
在 Linux 上，可以将视频流发送到 v4l2 环回设备，以便任何支持 v4l2 的工具都可以像网络摄像头一样打开 Android 设备。
必须安装模块 v4l2loopback：

sudo apt install v4l2loopback-dkms
创建v4l2设备:

sudo modprobe v4l2loopback
这将在/dev/videoN中创建一个新的视频设备，其中N是一个整数(创建多个设备或具有特定id的设备有更多选项)。
列出已启用的设备。

# requires v4l-utils package
v4l2-ctl --list-devices

# simple but might be sufficient
ls /dev/video*
要使用 v4l2 接收器启动 scrcpy：

scrcpy --v4l2-sink=/dev/videoN
scrcpy --v4l2-sink=/dev/videoN --no-display # disable mirroring window
scrcpy --v4l2-sink=/dev/videoN -N # short version
（用设备 ID 替换 N，检查 ls /dev/video*）

启用后，您可以使用支持 v4l2 的工具打开视频流：

ffplay -i /dev/videoN
vlc v4l2:///dev/videoN # VLC might add some buffering delay
例如，您可以在 OBS 中捕获视频。

缓冲
可以添加缓冲。 这会增加延迟但会减少抖动（请参阅 #2464）。
该选项可用于显示缓冲：

scrcpy --display-buffer=50 # add 50 ms buffering for display
和 V4L2 接收器：

scrcpy --v4l2-buffer=500 # add 500 ms buffering for v4l2 sink
无线连接
sccpy通过adb与设备通信，adb可以通过TCP/IP与设备连接:

将设备连接到与电脑相同的Wi-Fi。
在“设置”→“关于话机”→“状态”或执行以下命令获取设备IP地址:
adb shell ip route | awk '{print $9}'
在您的设备上通过 TCP/IP 启用 adb：adb tcpip 5555。
拔下您的设备。
连接到您的设备：adb connect DEVICE_IP:5555（替换 DEVICE_IP）。
像往常一样运行 scrcpy。
降低比特率和定义可能很有用：

scrcpy --bit-rate 2M --max-size 800
scrcpy -b2M -m800 # short version
多设备
如果 adb devices 中列出了多个设备，则必须指定串行：

scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef # short version
如果设备通过 TCP/IP 连接：

scrcpy --serial 192.168.0.1:5555
scrcpy -s 192.168.0.1:5555 # short version
您可以为多个设备启动多个sccpy实例。

设备连接时自动启动
您可以使用 AutoAdb：

autoadb scrcpy -s '{}'
SSH隧道
要连接到远程设备，可以将本地 adb 客户端连接到远程 adb 服务器（前提是它们使用相同版本的 adb 协议）：

adb kill-server # kill the local adb server on 5037
ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer
# keep this open
从另一个终端：

scrcpy
为了避免启用远程端口转发，可以强制使用正向连接(请注意-L而不是-R):

adb kill-server # kill the local adb server on 5037
ssh -CN -L5037:localhost:5037 -L27183:localhost:27183 your_remote_computer
# keep this open
从另一个终端：

scrcpy --force-adb-forward
就像无线连接一样，它可能有助于降低质量:

scrcpy -b2M -m800 --max-fps 15
窗口配置标题
默认情况下，窗口标题是设备型号。 它可以改变：

scrcpy --window-title 192.168.10.202:5555
窗口位置和大小
初始窗口的位置和大小可以指定:

scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600
窗口无边界
要禁用窗口装饰：

scrcpy --window-borderless
窗口总在最前面
要使 scrcpy 窗口始终在最上面：

scrcpy --always-on-top
窗口全屏
该应用程序可以直接全屏启动：

scrcpy --fullscreen
scrcpy -f # short version
然后可以使用 MOD+f 动态切换全屏。

窗口回转
窗口可以旋转：

scrcpy --rotation 1
#可能的值是:
# 0：不旋转
# 1：逆时针90度
# 2：180度
# 3：顺时针90度
旋转也可以通过 MOD+←（左）和 MOD+→（右）动态改变。
请注意， scrcpy 管理 3 种不同的旋转：
MOD+r 请求设备在纵向和横向之间切换（当前运行的应用程序可能会拒绝，如果它不支持请求的方向）。
–lock-video-orientation 更改镜像方向（从设备发送到计算机的视频的方向）。 这会影响录制。
–rotation（或 MOD+←/MOD+→）仅旋转窗口内容。 这仅影响显示，不影响录音。

其他镜像选项
只读
要禁用控件（可以与设备交互的所有内容：输入键、鼠标事件、拖放文件）：

scrcpy --no-control
scrcpy -n
显示
如果有几种显示，可以选择镜像的显示:

scrcpy --display 1

可以通过以下方式检索显示 ID 列表：

adb shell dumpsys display # search "mDisplayId=" in the output

只有在设备至少运行 Android 10 时才能控制辅助显示器（否则它会以只读方式镜像）。

保持清醒
为了防止设备在插入设备时延迟一段时间后进入睡眠状态：

scrcpy --stay-awake
scrcpy -w
当sccpy关闭时，恢复初始状态。

屏幕关闭

可以使用命令行选项在启动镜像时关闭设备屏幕：

scrcpy --turn-screen-off
scrcpy -S
或者随时按 MOD+o。
要重新打开它，请按 MOD+Shift+o。
在 Android 上，电源按钮始终打开屏幕。 为方便起见，如果通过 scrcpy（通过右键单击或 MOD+p）发送 POWER，它将在一小段延迟后强制关闭屏幕（尽最大努力）。 物理电源按钮仍会导致屏幕打开。

防止设备休眠也很有用：

scrcpy --turn-screen-off --stay-awake
scrcpy -Sw
显示触摸
对于演示，显示物理接触（在物理设备上）可能很有用。
Android 在开发人员选项中提供了此功能。
Scrcpy 提供了一个选项，可以在启动时启用此功能并在退出时恢复初始值：

scrcpy --show-touches
scrcpy -t
请注意，它仅显示物理触摸（手指在设备上）。

关闭屏幕保护程序

默认情况下，sccpy不会阻止屏幕保护程序在计算机上运行。
禁用:

scrcpy --disable-screensaver
输入控件
旋转设备的屏幕
按MOD+r切换纵向和横向模式。
注意，只有当前台的应用程序支持请求的方向时，它才会旋转。

复制粘贴
每当 Android 剪贴板发生变化时，它都会自动同步到计算机剪贴板。
任何 Ctrl 快捷键都会转发到设备。 特别是：

Ctrl+c 通常复制
Ctrl+x 通常是剪切
Ctrl+v 通常粘贴（在计算机到设备剪贴板同步之后）
这通常按您的预期工作。

但实际行为取决于活动应用程序。 例如，Termux 在 Ctrl+c 上发送 SIGINT，而 K-9 Mail 会撰写新消息。

在这种情况下复制、剪切和粘贴（但仅在 Android >= 7 上支持）：

MOD+c 注入 COPY
MOD+x 注入 CUT
MOD+v 注入 PASTE（在计算机到设备剪贴板同步之后）

此外，MOD+Shift+v 允许将计算机剪贴板文本作为关键事件序列注入。 当组件不接受文本粘贴（例如在 Termux 中）时，这很有用，但它可以破坏非 ASCII 内容。
警告：将计算机剪贴板粘贴到设备（通过 Ctrl+v 或 MOD+v）会将内容复制到设备剪贴板中。 因此，任何 Android 应用程序都可以读取其内容。 您应该避免以这种方式粘贴敏感内容（如密码）。
以编程方式设置设备剪贴板时，某些设备的行为不符合预期。 提供了一个选项 --legacy-paste 来更改 Ctrl+v 和 MOD+v 的行为，以便它们也将计算机剪贴板文本作为关键事件序列注入（与 MOD+Shift+v 的方式相同）。

双指缩放
模拟“双指缩放”：Ctrl+单击并移动。

更准确地说，按住 Ctrl 的同时按下左键单击按钮。 在释放左键单击按钮之前，所有鼠标移动都会相对于屏幕中心缩放和旋转内容（如果应用程序支持）。

具体来说，scrcpy 在屏幕中心反转的位置从“虚拟手指”生成额外的触摸事件。

文本注入首选项
键入文本时会生成两种事件：

按键事件，表示按键被按下或释放；
文本事件，表示已输入文本。

默认情况下，使用按键事件注入字母，以便键盘在游戏中按预期运行（通常用于 WASD 键）。

但这可能会导致问题。 如果遇到此类问题，可以通过以下方式避免：

scrcpy --prefer-text

（但这会破坏游戏中的键盘行为）

键重复

默认情况下，按住某个键会生成重复的键事件。 这可能会在某些游戏中导致性能问题，而这些事件无论如何都是无用的。

为避免转发重复的关键事件：

scrcpy --no-key-repeat

文件拖放
安装 APK
要安装 APK，请将 APK 文件（以 .apk 结尾）拖放到 scrcpy 窗口。
没有视觉反馈，日志打印到控制台。

推送文件到设备

要将文件推送到设备上的 /sdcard/Download/，请将（非 APK）文件拖放到 scrcpy 窗口。

没有视觉反馈，日志打印到控制台。

目标目录可以在启动时更改：

scrcpy --push-target=/sdcard/Movies/

音频转发
scrcpy 不转发音频。 使用 sdcpy。

快捷方式
在下面的列表中，MOD 是快捷方式修饰符。 默认情况下，它是（左）Alt 或（左）Super。
可以使用 --shortcut-mod 更改它。 可能的键有 lctrl、rctrl、lalt、ralt、lsuper 和 rsuper。 例如：

# use RCtrl for shortcuts
scrcpy --shortcut-mod=rctrl

# use either LCtrl+LAlt or LSuper for shortcuts
scrcpy --shortcut-mod=lctrl+lalt,lsuper
Super 通常是 Windows 或 Cmd 键。

操作 快捷键
切换全屏模式 MOD+f
向左旋转显示 MOD+←（向左）
向右旋转显示 MOD+→（右）
将窗口大小调整为 1:1（像素完美） MOD+g
调整窗口大小以去除黑边 MOD+w | 双击左键1
点击 HOME MOD+h | 中键单击
点击返回 MOD+b | 右键单击2
点击APP_SWITCH MOD+s | 第四次点击3
点击MENU（解锁屏幕） MOD+m
点击VOLUME_UP MOD+↑（向上）
点击VOLUME_DOWN MOD+↓（向下）
点击 POWER MOD+p
开机 右击2
关闭设备屏幕（保持镜像） MOD+o
打开设备屏幕 MOD+Shift+o
旋转设备屏幕 MOD+r
展开通知面板 MOD+n | 第 5 次点击3
展开设置面板 MOD+n+n | 双击 5 次点击3
折叠面板 MOD+Shift+n
复制到剪贴板? MOD+c
剪切到剪贴板? MOD+x
同步剪贴板和粘贴? MOD+v
注入电脑剪贴板文本 MOD+Shift+v
启用/禁用 FPS 计数器（在标准输出上） MOD+i
双指缩放 Ctrl+单击并移动
1双击黑色边框将其删除。
2如果屏幕已关闭，则右键单击可打开屏幕，否则按 BACK。
3第 4 和第 5 个鼠标按钮（如果您的鼠标有这些按钮）。
?仅适用于 Android >= 7。
重复按键的快捷键是通过释放并再次按下按键来执行的。例如，要执行“展开设置面板”

1.按住 MOD。
2.然后双击 n。
3.最后，释放MOD。

所有 Ctrl+key 快捷键都转发到设备，因此它们由活动应用程序处理

自定义路径

要使用特定的 adb 二进制文件，请在环境变量 ADB 中配置其路径：

ADB=/path/to/adb scrcpy

要覆盖 scrcpy-server 文件的路径，请在 SCCCPY_SERVER_PATH 中配置其路径。


模拟器

Help > 主板机模块[SC] >
模拟器

案例:

adb.exe kill-server 关闭adb 服务

adb.exe start-server 开启adb 服务

adb.exe devices 命令可以查看已经连接的设备号

设备类型:1 模拟器设备号 -s

雷电模拟器:

emulator-5556

emulator-5558

emulator 本机器雷电模拟器

5556 端口

MUMU模拟器:

127.0.0.1:16384

127.0.0.1 本机模拟器

16384 端口

其他模拟器同理


手机/主板机USB

Help > 主板机模块[SC] >
手机/主板机USB

案例:

adb.exe kill-server 关闭adb 服务

adb.exe start-server 开启adb 服务

adb.exe devices 命令可以查看已经连接的设备号

设备类型:2 USB设备号 -d

真机/主板机

01aa8320032fe731 设备号


手机/主板机网络

Help > 主板机模块[SC] >
手机/主板机网络

案例:

adb.exe kill-server 关闭adb 服务

adb.exe start-server 开启adb 服务

adb.exe devices 命令可以查看已经连接的设备号

设备类型:3 网络设备号 -e

真机/主板机

192.168.1.1:3828 设备号

192.168.1.1 局域网IP

3828 端口


虚拟机DMA模块[VMDMA]

Help >
虚拟机DMA模块[VMDMA]

执行环境句柄解析:


HCVMDMA_GetVersion

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_GetVersion

函数简介 :

获取DMA服务器版本号

函数原型 ：

__int64 __stdcall HCVMDMA_GetVersion(__int32 windowsIndex);

参数定义 :

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

备注:
返回长整数: 如: 240401 格式:24年-04版本号-01小版本号


HCVMDMA_IsVersion

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_IsVersion

函数简介 :

判断HD插件的DMA接口和DMA服务器接口版本是否一致

函数原型 ：

__int64 __stdcall HCVMDMA_IsVersion(__int32 windowsIndex);

参数定义 :

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

真假版本是否一致

备注:


HCVMDMA_StartServer

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_StartServer

函数简介 :

开启DMA服务器

函数原型 ：

__int64 __stdcall HCVMDMA_StartServer(char* ip = "0.0.0.0", int port = 6532, char* serverRootPath = "");

参数定义 :

ip:IP 默认:127.0.0.1

port:端口 默认:6532 要注意端口占用的情况

serverRootPath:服务器exe根目录 默认:中控exe目录下 默认 进程名: HDVMDma.exe

如果指定了全路径+进程名 就使用自定义的进程名 如果只指定了路径或者不指定路径 则使用默认值

返回值:

查看返回值表 HD返回值表

备注:
服务器在群下载或者官网下载

兼容指定自定义进程名(全路径\\XXXX.exe) XXXX.exe为自定义进程名
不指定进程名表示使用内置进程名(全路径\\HDVMDma.exe )
不指定路径(当前中控exe根目录\\HDVMDma.exe )


HCVMDMA_CloseServer

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_CloseServer

函数简介 :

关闭服务器,同时结束进程

函数原型 ：

__int64 __stdcall HCVMDMA_CloseServer();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:
无


HCVMDMA_ServerIsStart

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_ServerIsStart

函数简介 :

服务器是否已经开启

函数原型 ：

__int64 __stdcall HCVMDMA_ServerIsStart();

参数定义 :

无

返回值:

查看返回值表 HD返回值表

备注:
循环检查直到服务器开启成功


HCVMDMA_Init

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_Init

函数简介 :

初始化并关联虚拟机

函数原型 ：

__int64 __stdcall HCVMDMA_Init(__int32 windowsIndex, __int32 vmPid, __int32 timeOut = 10000);

参数定义 :

windowsIndex:窗口序号

vmPid:虚拟机PID 进程名是: vmware-vmx.exe

timeOut:超时等待时间

返回值:

查看返回值表 HD返回值表

备注:
需要先开启服务器HCVMDMA_StartServer

内部会自动调用HCEnv_Load接口,使窗口序号和虚拟机进程关联绑定然后初始化虚拟机相关资源

后续就可以使用该窗口虚拟机去操作对应的虚拟机中的进程


HCVMDMA_GetPid

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_GetPid

函数简介 :

通过进程名获取PID

函数原型 ：

__int64 __stdcall HCVMDMA_GetPid(__int32 windowsIndex, char* processName);

windowsIndex:窗口序号

processName:进程名 指的是虚拟机中的进程

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_Read

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_Read

函数简介 :

读地址,仅支持 1 2 4 8 地址大小

函数原型 ：

__int64 __stdcall HCVMDMA_Read(__int32 windowsIndex, __int32 targetPid, __int64 addr, __int32 addrSzie);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

addr:读的地址

addrSize:读的大小,仅支持 1 2 4 8 地址大小

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_ReadFloat

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_ReadFloat

函数简介 :

读单浮点数

函数原型 ：

__int64 __stdcall HCVMDMA_ReadFloat(__int32 windowsIndex, __int32 targetPid, __int64 addr);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

addr:读的地址

返回值:

查看返回值表 HD返回值表

成功返回:浮点数从json返回获取

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_ReadDouble

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_ReadDouble

函数简介 :

读双浮点数

函数原型 ：

__int64 __stdcall HCVMDMA_ReadDouble(__int32 windowsIndex, __int32 targetPid, __int64 addr);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

addr:读的地址

返回值:

查看返回值表 HD返回值表

成功返回:浮点数从json返回获取

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_ReadBytes

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_ReadBytes

函数简介 :

读字节集

函数原型 ：

__int64 __stdcall HCVMDMA_ReadBytes(__int32 windowsIndex, __int32 targetPid, __int64 addr, BYTE* buffAddr, __int32 readSzie);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

addr:读的地址

buffAddr:传递一个用于存字节集的缓冲区,一定要大于等于readSzie

readSize:读的大小,内部限制最大1024字节,不能超过1024

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_Write

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_Write

函数简介 :

写地址,仅支持 1 2 4 8 地址大小

函数原型 ：

__int64 __stdcall HCVMDMA_Write(__int32 windowsIndex, __int32 targetPid, __int64 value, __int64 addr, __int32 addrSzie);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

value:待写入的值

addr:写的地址

addrSize:写的大小,仅支持 1 2 4 8 地址大小

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_WriteFloat

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_WriteFloat

函数简介 :

写单浮点数

函数原型 ：

__int64 __stdcall HCVMDMA_WriteFloat(__int32 windowsIndex, __int32 targetPid, float value, __int64 addr);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

value:写入的单浮点数值

addr:写的地址

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_WriteDouble

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_WriteDouble

函数简介 :

写双浮点数

函数原型 ：

__int64 __stdcall HCVMDMA_WriteDouble(__int32 windowsIndex, __int32 targetPid, double value, __int64 addr);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

value:写入的双浮点数值

addr:写的地址

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_WriteBytes

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_WriteBytes

函数简介 :

写字节集

函数原型 ：

__int64 __stdcall HCVMDMA_WriteBytes(__int32 windowsIndex, __int32 targetPid, __int64 addr, BYTE* buffAddr, __int32 writeSzie);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

addr:写的地址

buffAddr:传递一个用于存字节集的缓冲区,一定要大于等于writeSzie

writeSzie:写的大小,内部限制最大1024字节,不能超过1024

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_GetProcAddr

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_GetProcAddr

函数简介 :

获取函数地址

函数原型 ：

__int64 __stdcall HCVMDMA_GetProcAddr(__int32 windowsIndex, __int32 targetPid, char* moduleName, char* procName);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

moduleName:模块名字

procName:函数名字

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_GetBaseModule

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_GetBaseModule

函数简介 :

获取主模块地址

函数原型 ：

__int64 __stdcall HCVMDMA_GetBaseModule(__int32 windowsIndex, __int32 targetPid);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_GetModule

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_GetModule

函数简介 :

获取模块地址

函数原型 ：

__int64 __stdcall HCVMDMA_GetModule(__int32 windowsIndex, __int32 targetPid, char* moduleName);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

moduleName:模块名字 如:ntdll.dll

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_ShellCodeInitX64

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_ShellCodeInitX64

函数简介 :

初始化获取一个某个进程(x64)的执行环境句柄

函数原型 ：

__int64 __stdcall HCVMDMA_ShellCodeInitX64(__int32 windowsIndex, __int32 targetPid,__int64 hookAddr, __int32 hookAddrSzie);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

hookAddr:HOOK地址 如:一些进程频繁用到的函数 sleep closehandle deletedc 等等

hookAddrSize:破坏的汇编字节数,必须是完整的汇编,不能被打断,因为还需要还原并跳转比如:x64进程 NtDelayExecution 是8字节

返回值:

查看返回值表 HD返回值表

成功返回:执行环境句柄,是一个8字节

备注:
需要先初始化关联虚拟机HCVMDMA_Init

执行环境句柄解析:

1.可以理解成一个空间可以与物理机进行交互,实现参数传递和调用CALL

2.每次调用都会获取一个全新的执行环境句柄(实现物理机中控多线程调用)

3.物理机中控在一个执行环境句柄只能同时一个线程执行,如果要多线程执行请获取多个执行环境句柄

4.此接口不适合多线程获取,请在初始化最开始把所需要的执行环境句柄的数量初始化好,方便物理机中控多线程中单独分别使用


HCVMDMA_RunShellCodeX64

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_RunShellCodeX64

函数简介 :

通过指定一个初进程(x64)的执行环境句柄来执行CALL

函数原型 ：

__int64 __stdcall HCVMDMA_RunShellCodeX64(__int32 windowsIndex, __int32 targetPid, __int64 excuteEnvAddr, char*shellCodeStr);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

excuteEnvAddr:执行环境句柄 通过HCVMDMA_ShellCodeInitX64 获取

shellCodeStr:自己写的汇编shellcode机器码,最大限制不超过1024字节

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init

执行环境句柄解析:

1.可以理解成一个空间可以与物理机进行交互,实现参数传递和调用CALL

2.如果需要参数传递,请自行往excuteEnvAddr+ 0x8 写参数(参数最大缓冲区为0x200字节),同时自己的汇编机器码要引入自己参数的地址


HCVMDMA_ShellCodeInitX86

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_ShellCodeInitX86

函数简介 :

初始化获取一个某个进程(x86)的执行环境句柄

函数原型 ：

__int64 __stdcall HCVMDMA_ShellCodeInitX86(__int32 windowsIndex, __int32 targetPid, __int32 hookAddr, __int32 hookAddrSzie);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

hookAddr:HOOK地址 如:一些进程频繁用到的函数 sleep closehandle deletedc 等等

hookAddrSize:破坏的汇编字节数,必须是完整的汇编,不能被打断,因为还需要还原并跳转 比如: x86进程 NtDelayExecution 是10字节

返回值:

查看返回值表 HD返回值表

成功返回:执行环境句柄,是一个8字节

备注:
需要先初始化关联虚拟机HCVMDMA_Init

执行环境句柄解析:

1.可以理解成一个空间可以与物理机进行交互,实现参数传递和调用CALL

2.每次调用都会获取一个全新的执行环境句柄(实现物理机中控多线程调用)

3.物理机中控在一个执行环境句柄只能同时一个线程执行,如果要多线程执行请获取多个执行环境句柄

4.此接口不适合多线程获取,请在初始化最开始把所需要的执行环境句柄的数量初始化好,方便物理机中控多线程中单独分别使用


HCVMDMA_RunShellCodeX86

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_RunShellCodeX86

函数简介 :

通过指定一个初进程(x86)的执行环境句柄来执行CALL

函数原型 ：

__int64 __stdcall HCVMDMA_RunShellCodeX86(__int32 windowsIndex, __int32 targetPid, __int32 excuteEnvAddr, char*shellCodeStr);

windowsIndex:窗口序号

targetPid:虚拟机中的目标进程PID

excuteEnvAddr:执行环境句柄 通过HCVMDMA_ShellCodeInitX86 获取

shellCodeStr:自己写的汇编shellcode机器码,最大限制不超过1024字节

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init

执行环境句柄解析:

1.可以理解成一个空间可以与物理机进行交互,实现参数传递和调用CALL

2.如果需要参数传递,请自行往 excuteEnvAddr+ 0x8 写参数(参数最大缓冲区为0x200字节),同时自己的汇编机器码要引入自己参数的地址


HCVMDMA_FindCodeX86

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_FindCodeX86

函数简介 :

特征码搜索(X86)(指定模块名)

函数原型 ：

__int64 __stdcall HCVMDMA_FindCodeX86(__int32 windowsIndex, __int32 targetPid,CHAR*code, __int32 offset, __int32 num, __int32 type = 1, CHAR*moduleName = NULL);

窗口序号:窗口序号 (从1开始)

targetPid:虚拟机中的目标进程PID

特征码字符串地址:特征码字符串地址(支持??)

偏移：正负偏移

次数：找到的第几次 从1开始

type：获取的是(基地址/CALL地址/直接地址/地址中的值) 1为地址 2为基地址 3为CALL 4为地址中的值

模块名字:在指定的模块中搜索,默认为主模块 NULL为默认

返回值:

查看返回值表 HD返回值表

备注:

需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_FindCodeX86Ex

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_FindCodeX86Ex

函数简介 :

特征码搜索(X86)(指定开始地址和搜索大小)

函数原型 ：

__int64 __stdcall HCVMDMA_FindCodeX86Ex(__int32 windowsIndex, __int32 targetPid, __int64 beginAddr, __int32 addrSize, CHAR*code, __int32 offset, __int32 num, __int32 type = 1);

窗口序号:窗口序号 (从1开始)

targetPid:虚拟机中的目标进程PID

beginAddr:开始地址

addrSize:搜索范围大小(单位:字节)

特征码字符串地址:特征码字符串地址(支持??)

偏移：正负偏移

次数：找到的第几次 从1开始

type：获取的是(基地址/CALL地址/直接地址/地址中的值) 1为地址 2为基地址 3为CALL 4为地址中的值

返回值:

查看返回值表 HD返回值表

备注:

需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_FindCodeX64

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_FindCodeX64

函数简介 :

特征码搜索(X64)(指定模块名)

函数原型 ：

__int64 __stdcall HCVMDMA_FindCodeX64(__int32 windowsIndex, __int32 targetPid,CHAR*code, __int32 offset, __int32 num, __int32 type = 1, CHAR*moduleName = NULL);

窗口序号:窗口序号 (从1开始)

targetPid:虚拟机中的目标进程PID

特征码字符串地址:特征码字符串地址(支持??)

偏移：正负偏移

次数：找到的第几次 从1开始

type：获取的是(基地址/CALL地址/直接地址/地址中的值) 1为地址 2为基地址 3为CALL 4为地址中的值

模块名字:在指定的模块中搜索,默认为主模块 NULL为默认

返回值:

查看返回值表 HD返回值表

备注:

需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_FindCodeX64Ex

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_FindCodeX64Ex

函数简介 :

特征码搜索(X64)(指定开始地址和搜索大小)

函数原型 ：

__int64 __stdcall HCVMDMA_FindCodeX64Ex(__int32 windowsIndex, __int32 targetPid, __int64 beginAddr, __int32 addrSize, CHAR*code, __int32 offset, __int32 num, __int32 type = 1);

窗口序号:窗口序号 (从1开始)

targetPid:虚拟机中的目标进程PID

beginAddr:开始地址

addrSize:搜索范围大小(单位:字节)

特征码字符串地址:特征码字符串地址(支持??)

偏移：正负偏移

次数：找到的第几次 从1开始

type：获取的是(基地址/CALL地址/直接地址/地址中的值) 1为地址 2为基地址 3为CALL 4为地址中的值

返回值:

查看返回值表 HD返回值表

备注:

需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_Close

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_Close

函数简介 :

卸载并关闭连接虚拟机

函数原型 ：

__int64 __stdcall HCVMDMA_Close(__int32 windowsIndex);

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

备注:
与HCVMDMA_Init是一对接口

内部会自动调用HCEnv_UnLoad接口,使窗口序号和虚拟机进程断开绑定然后释放虚拟机相关资源


HCVMDMA_InitCapture

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_InitCapture

函数简介 :

初始化截图环境

函数原型 ：

__int64 __stdcall HCVMDMA_InitCapture(__int32 windowsIndex);

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

成功:截图句柄,一个虚拟机只能一个,不要多获取,自行保存维护,方便后续调用其他接口传参

备注:
需要先初始化关联虚拟机HCVMDMA_Init

小技巧:

1.初始化接口有根据不同虚拟机,失败概率不同,为了提高初始化成功率,可以尝试自启动任务管理器,让系统激活起来,初始化完成就可以把任务管理器关掉了

2.步骤:打开虚拟机-关联虚拟机-检查是否有管理器PID-开始初始化键鼠/截图环境-如果失败3次直接重启虚拟机

3.如图操作自启任务管理器就行


HCVMDMA_Capture

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_Capture

函数简介 :

截图一次(获取一次虚拟机全屏数据到物理机)

函数原型 ：

__int64 __stdcall HCVMDMA_Capture(__int32 windowsIndex,__int64 captureEnvAddr);

windowsIndex:窗口序号

captureEnvAddr:截图环境句柄 由 HCVMDMA_InitCapture 获取返回

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_OpenCapture

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_OpenCapture

函数简介 :

开启截图(内部会开启一条线程循环调用HCVMDMA_Capture)

函数原型 ：

__int64 __stdcall HCVMDMA_OpenCapture(__int32 windowsIndex, __int64 captureEnvAddr);

windowsIndex:窗口序号

captureEnvAddr:截图环境句柄 由 HCVMDMA_InitCapture 获取返回

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_CloseCapture

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_CloseCapture

函数简介 :

关闭截图(内部会关闭之前开启的线程) 和HCVMDMA_OpenCapture是一对接口

函数原型 ：

__int64 __stdcall HCVMDMA_CloseCapture(__int32 windowsIndex);

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_InitMouseKey

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_InitMouseKey

函数简介 :

初始化键鼠环境

函数原型 ：

__int64 __stdcall HCVMDMA_InitMouseKey(__int32 windowsIndex);

windowsIndex:窗口序号

返回值:

查看返回值表 HD返回值表

成功:返回键鼠句柄 一个虚拟机只能一个,不要多获取,自行保存维护,方便后续调用其他接口传参

备注:
需要先初始化关联虚拟机HCVMDMA_Init

小技巧:

1.初始化接口有根据不同虚拟机,失败概率不同,为了提高初始化成功率,可以尝试自启动任务管理器,让系统激活起来,初始化完成就可以把任务管理器关掉了

2.步骤:打开虚拟机-关联虚拟机-检查是否有管理器PID-开始初始化键鼠/截图环境-如果失败3次直接重启虚拟机

3.如图操作自启任务管理器就行


HCVMDMA_MoveTo

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_MoveTo

函数简介 :

鼠标移动 (不包含轨迹)

函数原型 ：

__int64 __stdcall HCVMDMA_MoveTo(__int32 windowsIndex, __int32x, __int32y, __int64 mkbEnvAddr);

windowsIndex:窗口序号

x:虚拟机屏幕坐标X

y:虚拟机屏幕坐标Y

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_LeftDown

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_LeftDown

函数简介 :

鼠标左键按下

函数原型 ：

__int64 __stdcall HCVMDMA_LeftDown(__int32 windowsIndex, __int64 mkbEnvAddr);

windowsIndex:窗口序号

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_LeftUp

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_LeftUp

函数简介 :

鼠标左键弹起

函数原型 ：

__int64 __stdcall HCVMDMA_LeftUp(__int32 windowsIndex, __int64 mkbEnvAddr);

windowsIndex:窗口序号

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_LeftClick

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_LeftClick

函数简介 :

鼠标左键点击

函数原型 ：

__int64 __stdcall HCVMDMA_LeftClick(__int32 windowsIndex, int mis ,__int64 mkbEnvAddr);

windowsIndex:窗口序号

mis:按下和弹起之前的间隔时间(毫秒)

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_LeftDoubleClick

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_LeftDoubleClick

函数简介 :

鼠标左键双击

函数原型 ：

__int64 __stdcall HCVMDMA_LeftDoubleClick (__int32 windowsIndex, int mis ,__int64 mkbEnvAddr);

windowsIndex:窗口序号

mis:按下和弹起之前的间隔时间(毫秒)

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_MiddleDown

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_MiddleDown

函数简介 :

鼠标中键按下

函数原型 ：

__int64 __stdcall HCVMDMA_MiddleDown(__int32 windowsIndex, __int64 mkbEnvAddr);

windowsIndex:窗口序号

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_MiddleUp

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_MiddleUp

函数简介 :

鼠标中键弹起

函数原型 ：

__int64 __stdcall HCVMDMA_MiddleUp(__int32 windowsIndex, __int64 mkbEnvAddr);

windowsIndex:窗口序号

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_MiddleClick

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_MiddleClick

函数简介 :

鼠标中键点击

函数原型 ：

__int64 __stdcall HCVMDMA_MiddleClick(__int32 windowsIndex, int mis ,__int64 mkbEnvAddr);

windowsIndex:窗口序号

mis:按下和弹起之前的间隔时间(毫秒)

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_MiddleDoubleClick

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_MiddleDoubleClick

函数简介 :

鼠标中键双击

函数原型 ：

__int64 __stdcall HCVMDMA_MiddleDoubleClick(__int32 windowsIndex, int mis ,__int64 mkbEnvAddr);

windowsIndex:窗口序号

mis:按下和弹起之前的间隔时间(毫秒)

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_RightDown

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_RightDown

函数简介 :

鼠标右键按下

函数原型 ：

__int64 __stdcall HCVMDMA_RightDown(__int32 windowsIndex, __int64 mkbEnvAddr);

windowsIndex:窗口序号

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_RightUp

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_RightUp

函数简介 :

鼠标右键弹起

函数原型 ：

__int64 __stdcall HCVMDMA_RightUp(__int32 windowsIndex, __int64 mkbEnvAddr);

windowsIndex:窗口序号

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_RightClick

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_RightClick

函数简介 :

鼠标右键点击

函数原型 ：

__int64 __stdcall HCVMDMA_RightClick(__int32 windowsIndex, int mis ,__int64 mkbEnvAddr);

windowsIndex:窗口序号

mis:按下和弹起之前的间隔时间(毫秒)

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_RightDoubleClick

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_RightDoubleClick

函数简介 :

鼠标右键双击

函数原型 ：

__int64 __stdcall HCVMDMA_RightDoubleClick(__int32 windowsIndex, int mis ,__int64 mkbEnvAddr);

windowsIndex:窗口序号

mis:按下和弹起之前的间隔时间(毫秒)

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_WheelUp

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_WheelUp

函数简介 :

鼠标滚轮滚上

函数原型 ：

__int64 __stdcall HCVMDMA_WheelUp(__int32 windowsIndex,__int64 mkbEnvAddr);

windowsIndex:窗口序号

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_WheelDown

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_WheelDown

函数简介 :

鼠标滚轮滚下

函数原型 ：

__int64 __stdcall HCVMDMA_WheelDown(__int32 windowsIndex,__int64 mkbEnvAddr);

windowsIndex:窗口序号

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_KeyDown

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_KeyDown

函数简介 :

键盘按下

函数原型 ：

__int64 __stdcall HCVMDMA_KeyDown(__int32 windowsIndex, int keyCode, __int64 mkbEnvAddr);

windowsIndex:窗口序号

keyCode:虚拟键码值

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_KeyUp

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_KeyUp

函数简介 :

键盘弹起

函数原型 ：

__int64 __stdcall HCVMDMA_KeyUp(__int32 windowsIndex, int keyCode, __int64 mkbEnvAddr);

windowsIndex:窗口序号

keyCode:虚拟键码值

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_KeyClick

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_KeyClick

函数简介 :

键盘敲击

函数原型 ：

__int64 __stdcall HCVMDMA_KeyClick(__int32 windowsIndex, int keyCode, int mis, __int64 mkbEnvAddr);

windowsIndex:窗口序号

keyCode:虚拟键码值

mis:按下和弹起之前的间隔时间(毫秒)

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_SendUnicode

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_SendUnicode

函数简介 :

发送unicode字符串

函数原型 ：

__int64 __stdcall HCVMDMA_SendUnicode(__int32 windowsIndex, wchar_t* strUnicode, __int64 mkbEnvAddr);

windowsIndex:窗口序号

strUnicode:unicode编码字符串(长度限制:最大100长度,一个字2个字节,共200字节) 例如:中文 韩文 日文 等多国语言

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCVMDMA_SendAscii

Help > 虚拟机DMA模块[VMDMA] >
HCVMDMA_SendAscii

函数简介 :

发送ascii字符串

函数原型 ：

__int64 __stdcall HCVMDMA_SendAscii(__int32 windowsIndex, char* strAscii, __int64 mkbEnvAddr);

windowsIndex:窗口序号

strAscii:ascii编码字符串(长度限制:最大200长度,一个字符一个字节,共200字节) 例如:数字 英文 符号等

mkbEnvAddr:键鼠句柄,由HCVMDMA_InitMouseKey获取

返回值:

查看返回值表 HD返回值表

备注:
需要先初始化关联虚拟机HCVMDMA_Init


HCGB_Attach1

Help > 谷歌内置浏览器模块[GB] >
HCGB_Attach1

函数简介 :

附加内置浏览器，附加监听模式1

函数原型 :

__int64 __stdcall HCGB_Attach1(__int32 窗口序号);

参数定义:

窗口序号:窗口序号 (从1开始)

返回值:

查看返回值表 HD返回值表

备注:

必须游戏进程自带内置谷歌浏览器,才会附加模块成功

由于每个游戏不同,需要定制浏览器接口

当前默认的内置谷歌浏览器接口仅适合夜鸦


HCGB_Attach2

Help > 谷歌内置浏览器模块[GB] >
HCGB_Attach2

函数简介 :

附加内置浏览器，附加监听模式2

函数原型 :

__int64 __stdcall HCGB_Attach2(__int32 窗口序号);

参数定义:

窗口序号:窗口序号 (从1开始)

返回值:

查看返回值表 HD返回值表

备注:

必须游戏进程自带内置谷歌浏览器,才会附加模块成功

由于每个游戏不同,需要定制浏览器接口

当前默认的内置谷歌浏览器接口仅适合夜鸦


HCGB_Detach

Help > 谷歌内置浏览器模块[GB] >
HCGB_Detach

函数简介 :

脱离之前的内置浏览器

函数原型 :

__int64 __stdcall HCGB_Detach(__int32 窗口序号);

参数定义:

窗口序号:窗口序号 (从1开始)

返回值:

查看返回值表 HD返回值表

备注:

必须游戏进程自带内置谷歌浏览器,才会附加模块成功


HCGB_InjectJSCode

Help > 谷歌内置浏览器模块[GB] >
HCGB_InjectJSCode

函数简介 :

给内置浏览器注入JS代码

函数原型 :

__int64 __stdcall HCGB_InjectJSCode(__int32 窗口序号,char *codeBuffer, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

codeBuffer:JS代码缓冲区 ASCII编码

是否主线程调用:一般默认就行FALSE(0)

返回值:

查看返回值表 HD返回值表

备注:

必须游戏进程自带内置谷歌浏览器,才会附加模块成功


HCGB_ExcuteJSFile

Help > 谷歌内置浏览器模块[GB] >
HCGB_ExcuteJSFile

函数简介 :

给内置浏览器注入指定文件中的JS代码

函数原型 :

__int64 __stdcall HCGB_ExcuteJSFile(__int32 窗口序号,char *fileName, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

fileName:JS文件代码 ASCII编码文件

是否主线程调用:一般默认就行FALSE(0)

返回值:

查看返回值表 HD返回值表

备注:

必须游戏进程自带内置谷歌浏览器,才会附加模块成功


调试绘制模块(DS)

Help >
调试绘制模块(DS)


HCSD_SetColor

Help > 调试绘制模块(DS) >
HCSD_SetColor

函数简介 :

(用于调试)
设置全局可视化标注颜色值

函数原型 :

__int64 __stdcall HCSD_SetColor(__int32 lineColor = 0x0000FF00, int textColor = 0x00FFFF00, int backColor = 0x00000000);

参数定义 :

lineColor :线色

textColor :文本色

backColor :背景色

返回值:

查看返回值表 HD返回值表

备注:
颜色值是4字节分别对应XRGB
如:0x00FF0000 红色
如:0x0000FF00 绿色
如:0x000000FF 蓝色


HCSD_SetFollowClassTitleName

Help > 调试绘制模块(DS) >
HCSD_SetFollowClassTitleName

函数简介 :

(用于调试)
设置当前调试窗口跟随的进程信息

函数原型 :

__int64 __stdcall HCSD_SetFollowClassTitleName(int pid, __int64 hwnd = NULL, char* className = NULL, char* titleName = NULL);

参数定义 :

pid:指定pid 内部会配合className 或titleName 找绑定的窗口句柄

hwnd:指定了窗口句柄,其他3个参数无效

className :类名 可以为NULL

titleName :标题名 可以为NULL

返回值:

查看返回值表 HD返回值表

备注:


HCSD_DrawWinodws

Help > 调试绘制模块(DS) >
HCSD_DrawWinodws

函数简介 :

给指定窗口画边框或者填充矩形

函数原型 :

__int64 __stdcall HCSD_DrawWinodws(__int64 hwnd, __int32 LineRgbColor, __int32 lineSize, __int32 type = 0, __int32 fillRgbColor = 0);

参数定义 :

hwnd:句柄
LineRgbColor:线颜色
lineSize:线大小
type:0边框 1填充
fillRgbColor:填充色RGB type= 1 才有效

返回值:

查看返回值表 HD返回值表

备注:

无


HCHD_CatchException

Help > 调试绘制模块(DS) >
HCHD_CatchException

函数简介 :

开启/关闭捕捉异常

函数原型 :

__int64 __stdcall HCHD_CatchException(BOOL bOpen = TRUE);

参数定义 :

bOpen:是否打开

返回值:

查看返回值表 HD返回值表

备注:

无


HCSD_SetAttachConsole

Help > 调试绘制模块(DS) >
HCSD_SetAttachConsole

函数简介 :

附加控制台

函数原型 :

__int64 __stdcall HCSD_SetAttachConsole(BOOL bOpen);

参数定义 :

bOpen:是否打开

返回值:

查看返回值表 HD返回值表

返回当前控制台是否已经打开

备注:
printf cout 输入 输出到控制台上显示
注意:自行定时清空屏幕 防止满屏卡主进程运行


全局资源设置模块(RES)

Help >
全局资源设置模块(RES)

资源路径


HCRES_SetResPath

Help > 全局资源设置模块(RES) >
HCRES_SetResPath

函数简介 :

设置资源路径

函数原型 ：

void __stdcall HCRES_SetResPathA(char * path);
void __stdcall HCRES_SetResPathW(wchar_t * path);

参数定义 :

path:路径

返回值:

查看返回值表 HD返回值表

备注:

图片 字库文件都在这个里面找


HCRES_SetLanguageResPath

Help > 全局资源设置模块(RES) >
HCRES_SetLanguageResPath

函数简介 :

设置语言或者字体文件资源路径

函数原型：

void __stdcall HCRES_SetLanguageResPathA (char * path);
void __stdcall HCRES_SetLanguageResPathW (wchar_t * path);

参数定义 :

path:路径

返回值:

查看返回值表 HD返回值表

备注:

语言文件都在这个里面找


定制游戏接口(Game)

Help >
定制游戏接口(Game)

定制游戏接口会不定时发放

太多不便一次性写上


HB2_GetPlayerInfo

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetPlayerInfo

函数简介 :

调用获取人物信息CALL

函数原型 ：

__int64 __stdcall HB2_GetPlayerInfo(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{ "name": "Jack","level":26, "curHp": 588, "maxHp": 999, "curMp": 255, "maxMp": 666,"gold": 99999, "diamond": 999999}]}


HB2_GetBagInfo

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetBagInfo

函数简介 :

调用获取背包信息CALL

函数原型 ：

__int64 __stdcall HB2_GetBagInfo (__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

json:

{"error":0,"flag":99,"ret":[{ "id": 1111,"tId":22222,"dId":33333 ,"num": 588},{ "id": 1111,"tId":22222,"dId":33333 , "num": 588},{ "id": 1111,"tId":22222, "dId":33333 ,"num": 588}]}


HB2_GetShortCutInfo1

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetShortCutInfo1

函数简介 :

调用获取快捷栏遍历信息CALL（前10个）

函数原型 ：

__int64 __stdcall HB2_GetShortCutInfo1(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{ "index": 0,"id": 1111,"bAct":0},{ "index": 1,"id": 2222,"bAct":1}]}


HB2_GetShortCutInfo2

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetShortCutInfo2

函数简介 :

调用获取快捷栏遍历信息CALL（后10个）

函数原型 ：

__int64 __stdcall HB2_GetShortCutInfo2(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义:

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注 ：

json:

{"error":0,"ret":[{ "index": 0,"id": 1111,"bAct":0},{ "index": 1,"id": 2222,"bAct":1}]}


HB2_GetPlayerXYZ

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetPlayerXYZ

函数简介 :

调用获取人物坐标CALL

函数原型：

__int64 __stdcall HB2_GetPlayerXYZ(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{"x":125,"y":125,"z":125}]}


HB2_GetPlayerCurMapId

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetPlayerCurMapId

函数简介 :

调用获取人物当前地图ID CALL

函数原型：

__int64 __stdcall HB2_GetPlayerCurMapId(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{"mapId":1993}]}


HB2_GetCurChapterTaskId

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetCurChapterTaskId

函数简介 :

调用遍历已结任务章节ID信息(主线+支线)

函数原型：

__int64 __stdcall HB2_GetCurChapterTaskId(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{"CTaskId":1993,"index":1}]}


HB2_GetAChapterTask

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetAChapterTask

函数简介 :

调用遍历已结任务章节ID信息(主线+支线)

函数原型：

__int64 __stdcall HB2_GetAChapterTask(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{"CTaskId":1993,"index":1,"curNum":2},{"CTaskId":1998,"index":2,"curNum":2}]}


HB2_PlayerIsMove

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_PlayerIsMove

函数简介 :

调用人物是否移动CALL

函数原型：

__int64 __stdcall HB2_PlayerIsMove(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

无


HB2_IsAutoUseMed

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_IsAutoUseMed

函数简介 :

调用人物是否自动使用药品状态

函数原型：

__int64 __stdcall HB2_IsAutoUseMed(__int32 窗口序号, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

无


HB2_Move

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_Move

函数简介 :

调用移动CALL

函数原型 ：

__int64 __stdcall HB2_Move(__int32 窗口序号, __int32 地图ID, __int32 x, __int32 y, __int32 z, BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

地图ID：地图ID

x:x

y:y

z:z

是否主线程调用:是否需要主线程来调用这个CALL

返回值:

查看返回值表 HD返回值表

备注:

无


HB2_PassPoint

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_PassPoint

函数简介 :

调用传送点CALL

函数原型：

__int64 __stdcall HB2_PassPoint(__int32 窗口序号, __int32 传送点ID,BOOL 是否主线程调用 = FALSE);

参数定义 :

窗口序号:窗口序号 (从1开始)

传送点ID：传送点ID 是固定的 通过特征码自行获取-><488B742468488BC8 0x35 1 CALL的rdx就是传送点ID>

是否主线程调用:是否需要主线程来调用这个CALL

返回值 :

查看返回值表 HD返回值表

备注:

无


HB2_GetHuaShen

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetHuaShen

函数简介 :

调用化身遍历CALL

函数原型：

__int64 __stdcall HB2_GetHuaShen(__int32 窗口序号,BOOL 是否主线程调用 = FALSE);

参数定义：

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{ "id": 0,"xLevel": 1111,"type":0},{ "id": 0,"xLevel": 1111,"type":0}]}

id:化身ID xLevel:化身星级 type:化身品质 0 1 2 3 依次递增+1 白 绿 蓝...


HB2_GetChongWu

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_GetChongWu

函数简介 :

调用宠物遍历CALL

函数原型：

__int64 __stdcall HB2_GetChongWu(__int32 窗口序号,BOOL 是否主线程调用 = FALSE);

参数定义：

窗口序号:窗口序号 (从1开始)

是否主线程调用:是否需要主线程来调用这个CALL

返回值 :

查看返回值表 HD返回值表

备注:

json:

{"error":0,"ret":[{ "id": 0,"xLevel": 1111,"type":0},{ "id": 0,"xLevel": 1111,"type":0}]}

id:宠物ID xLevel:宠物星级 type:宠物品质 0 1 2 3 依次递增+1 白 绿 蓝...


HB2_UseGoods

Help > 定制游戏接口(Game) > (B2)剑灵2台服 >
HB2_UseGoods

函数简介 :

调用使用物品CALL

函数原型：

__int64 __stdcall HB2_UseGoods(__int32 窗口序号, __int64 物品ID, __int64 物品数量, __int64 物品临时ID, __int64 物品描述ID, BOOL 是否主线程调用 = FALSE);

参数定义：

窗口序号:窗口序号 (从1开始)

物品ID： 物品ID

物品数量：物品数量

物品临时ID：物品临时ID

物品描述ID： 物品描述ID

是否主线程调用:是否需要主线程来调用这个CALL

返回值 :

查看返回值表 HD返回值表

备注:

无