🛰️ 后台截图模块(CS)
📌 函数: HD截图_设置识别模式
描述
打开截图
原型
__int64 __stdcall HCCS_SetType(__int32 type);
参数
__int32 type - 0或者-1:普通识别模式(默认) 1:高频后台截图识别模式(并非高频识别就一定要开启,可以先尝试普通识别模式正常的话就无需开启高频)
返回值
查看返回值表
返回当前是否开启了高频识别模式
注意事项
无
HD截图_设置识别模式 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_设置识别模式 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_打开
描述
打开截图
原型
__int64 __stdcall HCCS_OpenCS(__int32 窗口序号);
参数
__int32 窗口序号 - 窗口序号(从1开始)
返回值
查看返回值表
注意事项
无
HD截图_打开 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_打开 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_打开Ex
描述
打开截图(和HCCS_CloseCSEx是一组接口)
原型
__int64 __stdcall HCCS_OpenCSEx(__int32 窗口序号,BOOL bNormal,__int32 capType=0,__int64 hwnd=0);
参数
__int32 窗口序号 - 窗口序号(从1开始)窗口序号为0表示全屏前台截图(此时后面3个参数无效)后续识别相关接口如果要用到全屏截图数据需要指定窗口序号0前台键鼠窗口序号使用-1就行
bool bNormal - 是否是通常模式一般为真(TRUE)就行
__int32 capType - 截图模式
__int64 hwnd - 窗口句柄
返回值
查看返回值表
注意事项
1.前台和后台模式,可以随意切换不用调用关闭HCCS_CloseCSEx再开启!!!!!内置处理了
截图模式:
typedefenumCAPTURETYPE{\n无CAPTURETYPE_NONE=0,\n这个不操作\nGDICAPTURETYPE_GDI=1,\n这个直接客户端操作对于浏览器(谷歌等)记得把图像加速关掉\n32CAPTURETYPE_D3D9_1_x86=2,\nUECAPTURETYPE_D3D9_2_x86=3,\nU3DCAPTURETYPE_D3D9_3_x86=4,\nRGBX\nD3D11CAPTURETYPE_D3D11_1_x86=5,\nUECAPTURETYPE_D3D11_2_x86=6,\nU3DCAPTURETYPE_D3D11_3_x86=7,\nRGBXD3D11游戏通用\nD3D12CAPTURETYPE_D3D12_1_x86=70,\nUECAPTURETYPE_D3D12_2_x86=71,\nU3DCAPTURETYPE_D3D12_3_x86=72,\nRGBXD3D12游戏通用\n64\nD3D9CAPTURETYPE_D3D9_1_x64=8,\nUECAPTURETYPE_D3D9_2_x64=9,\nU3DCAPTURETYPE_D3D9_3_x64=10,\nRGBXD3D9游戏通用\nD3D11CAPTURETYPE_D3D11_1_x64=11,\nUECAPTURETYPE_D3D11_2_x64=12,\nU3DCAPTURETYPE_D3D11_3_x64=13,\nRGBXD3D11游戏通用\nD3D12CAPTURETYPE_D3D12_1_x64=14,\nUED3D12CAPTURETYPE_D3D12_2_x64=15,\nU3DD3D12CAPTURETYPE_D3D12_3_x64=16,\nRGBXD3D12D3D12游戏通用\n32CAPTURETYPE_OPENGL_1_x86=20,\n占位CAPTURETYPE_OPENGL_2_x86=21,\nGL_BGRA模拟器CAPTURETYPE_OPENGL_3_x86=22,\nGL_BGRA模拟器\n64CAPTURETYPE_OPENGL_1_x64=30,\n占位CAPTURETYPE_OPENGL_2_x64=31,\nGL_BGRA模拟器CAPTURETYPE_OPENGL_3_x64=32,\nGL_BGRA模拟器\n定制CAPTURETYPE_D3D9_Steam_x86=40,\nsteam游戏专用steam游戏专用后台截图x64模式D3D9也可以是其他游戏不一定只有steam才能用CAPTURETYPE_D3D11_Steam_x86=41,\nsteam游戏专用steam游戏专用后台截图x64模式D3D9也可以是其他游戏不一定只有steam才能用CAPTURETYPE_D3D9_Steam_x64=42,\nsteam游戏专用steam游戏专用后台截图x64模式D3D9也可以是其他游戏不一定只有steam才能用CAPTURETYPE_D3D11_Steam_x64=43,\nsteam游戏专用steam游戏专用后台截图x64模式D3D9也可以是其他游戏不一定只有steam才能用\nNC模式CAPTURETYPE_D3D9_NC_x86=44,\nNC游戏CAPTURETYPE_D3D11_NC_x86=45,\nNC游戏CAPTURETYPE_D3D9_NC_x64=46,\nNC游戏CAPTURETYPE_D3D11_NC_x64=47,\nNC游戏\nCAPTURETYPE_NORMAL=50,\n这个前台模式\nCAPTURETYPE_D3D12_Steam_x86=60,\nsteam游戏专用steam游戏专用后台截图x64模式D3D9也可以是其他游戏不一定只有steam才能用CAPTURETYPE_D3D12_Steam_x64=61,\nsteam游戏专用steam游戏专用后台截图x64模式D3D9也可以是其他游戏不一定只有steam才能用\nCAPTURETYPE_D3D12_NC_x86=62,\nNC游戏D3D12CAPTURETYPE_D3D12_NC_x64=63,\nNC游戏D3D12
}CAPTURETYPE;额外说明:
HD截图_打开Ex - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_打开Ex - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_关闭
描述
关闭截图
原型
__int64 __stdcall HCCS_CloseCS(__int32 窗口序号);
参数
__int32 窗口序号 - 窗口序号(从1开始)
返回值
查看返回值表
注意事项
无
HD截图_关闭 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_关闭 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_获取截图数据
描述
关闭截图(和HCCS_OpenCSEx是一组接口)
原型
__int64 __stdcall HCCS_CloseCSEx(__int32 窗口序号);
参数
__int32 窗口序号 - 窗口序号(从1开始)窗口序号为0表示全屏截图后续识别相关接口如果要用到全屏截图数据需要指定窗口序号0
返回值
查看返回值表
注意事项
无
HD截图_获取截图数据 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_获取截图数据 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_打开查看器
描述
获取截图数据
原型
__int64 __stdcall HCCS_GetCSData(__int32 窗口序号);
参数
__int32 窗口序号 - 窗口序号(从1开始)
像素格式 -
返回值
查看返回值表
注意事项
json:{\"error\":0,\"ret\":[{\"bRet\":AAA,\"addr\":XXX,\"eleSize\":YYY,\"len\":ZZZ,\"w\":1222,\"h\":699}]}AAA:调用接口返回值
XXX:图片二进制数据首地址(不是bmp数据是MYA8R8G8B8结构体缓冲区首地址)可以拿到这个缓冲区自行转换各种图片格式数据
YYY:MYA8R8G8B8结构体数量
ZZZ:字节大小(图片数据=MYA8R8G8B8* YYY)
w:宽度
h:高度注意:拿到图片地址数据XXX使用后记得释放(HCCS_FreeArray)
图片数据地址不使用了记得释放掉HCCS_FreeMemPool调用此接口
HD截图_打开查看器 - 基础示例
.版本 2
.子程序 BMP数据获取示例
.局部变量 窗口序号, 整数型
.局部变量 数据结果, 长整数型
.局部变量 BMP数据, 字节集
.局部变量 数据大小, 整数型
.局部变量 左上X, 整数型
.局部变量 左上Y, 整数型
.局部变量 右下X, 整数型
.局部变量 右下Y, 整数型
窗口序号 = 1
左上X = 100
左上Y = 100
右下X = 500
右下Y = 400
' 先进行一次截图以更新缓存
HD截图_截取屏幕 (窗口序号)
延时 (100)
' 获取指定范围的BMP数据
数据结果 = HCCS_GetCaptureBmpRangeData (窗口序号, 左上X, 左上Y, 右下X, 右下Y, BMP数据, 数据大小)
.如果 (数据结果 ≥ 1 且 数据大小 > 0)
调试输出 ("BMP数据获取成功")
调试输出 ("截图范围:(" + 到文本 (左上X) + "," + 到文本 (左上Y) + ") - (" + 到文本 (右下X) + "," + 到文本 (右下Y) + ")")
调试输出 ("BMP数据大小:" + 到文本 (数据大小) + " 字节")
' 保存BMP数据到文件
.如果 (写到文件 ("range_capture.bmp", BMP数据))
调试输出 ("BMP文件保存成功:range_capture.bmp")
' 验证BMP文件头
.如果 (取字节集长度 (BMP数据) ≥ 54) ' BMP最小文件头大小
.如果 (取字节集中间 (BMP数据, 1, 2) = 到字节集 ("BM"))
调试输出 ("BMP文件头验证通过")
' 读取BMP信息
调试输出 ("BMP文件大小:" + 到文本 (字节集到长整数 (取字节集中间 (BMP数据, 3, 4))) + " 字节")
调试输出 ("图像宽度:" + 到文本 (右下X - 左上X) + " 像素")
调试输出 ("图像高度:" + 到文本 (右下Y - 左上Y) + " 像素")
.否则
调试输出 ("BMP文件头格式错误")
.如果结束
.否则
调试输出 ("BMP数据长度不足")
.如果结束
.否则
调试输出 ("BMP文件保存失败")
.如果结束
.否则
调试输出 ("BMP数据获取失败,错误码:" + 到文本 (数据结果))
调试输出 ("请确保已经进行过截图操作")
.如果结束
HD截图_打开查看器 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_打开查看器 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_关闭查看器
描述
打开查看器
原型
__int64 __stdcall HCCS_OpenCSFinder(__int32 窗口序号,__int32 X,__int32 Y,__int32 宽度,__int32 高度);
参数
__int32 窗口序号 - 窗口序号(从1开始)
__int32 x,y,宽度,高度 - 内部使用命令行参数打开查看器C
返回值
查看返回值表
注意事项
无
HD截图_关闭查看器 - 基础示例
.版本 2
.子程序 测试黑屏打开, 逻辑型, 公开
.局部变量 窗口序号, 整数型
.局部变量 最小型号, 整数型
.局部变量 最大型号, 整数型
.局部变量 结果, 逻辑型
窗口序号 = 1
最小型号 = 0 ' 最小显卡型号
最大型号 = 999 ' 最大显卡型号
调试输出 ("准备开启黑屏功能")
调试输出 ("显卡型号范围:", 最小型号, " - ", 最大型号)
' 开启黑屏功能
结果 = HD黑屏_打开 (窗口序号, 最小型号, 最大型号, 假)
.如果 (结果 = 真)
调试输出 ("黑屏功能开启成功")
调试输出 ("目标窗口已进入黑屏模式")
.否则
调试输出 ("黑屏功能开启失败")
调试输出 ("请检查显卡兼容性和驱动环境")
.如果结束
返回 (结果)
HD截图_关闭查看器 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_关闭查看器 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_截图
描述
关闭查看器
原型
__int64 __stdcall HCCS_CloseCSFinder(__int32 窗口序号,__int32 pid);
参数
__int32 窗口序号 - 窗口序号(从1开始)
__int32 pid - 查看器的进程PID
返回值
查看返回值表
注意事项
无
HD截图_截图 - 基础示例
.版本 2
.子程序 测试关闭虚拟机, 逻辑型, 公开
.局部变量 窗口序号, 整数型
.局部变量 结果, 逻辑型
.局部变量 VM路径, 文本型
.局部变量 VMX文件路径, 文本型
窗口序号 = 1
VM路径 = "D:\VMware\"
VMX文件路径 = "D:\VMs\Windows10\Windows10.vmx"
' 正常关闭虚拟机
结果 = HDVM_关闭 (窗口序号, VM路径, VMX文件路径, 假, 0, 0)
.如果 (结果 = 真)
调试输出 ("虚拟机关闭成功(正常关闭)")
.否则
调试输出 ("虚拟机关闭失败,尝试强制关闭")
' 强制关闭
结果 = HDVM_关闭 (窗口序号, VM路径, VMX文件路径, 真, 0, 0)
.如果 (结果 = 真)
调试输出 ("虚拟机强制关闭成功")
.否则
调试输出 ("虚拟机强制关闭失败")
.如果结束
.如果结束
返回 (结果)
HD截图_截图 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_截图 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_获取BMP截图数据
描述
截图数据并保存为BMP图片文件
原型
__int64 __stdcall HCCS_CaptureBmp(__int32 窗口序号,char* BMP文件路径,BOOL 是否打开=FALSE);
参数
__int32 窗口序号 - 窗口序号(从1开始)
char* BMP文件路径 - BMP文件路径+文件名
bool 是否打开 - 是否打开查看图片
返回值
查看返回值表
注意事项
json:
{\"error\":0,\"ret\":[{\"bRet\":AAA,\"w\":1222,\"h\":699}]}
HD截图_获取BMP截图数据 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_获取BMP截图数据 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_释放数据
描述
获取当前截图后的BMP数据
原型
__int64 __stdcall HCCS_GetCaptureBmpData(__int32 窗口序号);
参数
__int32 窗口序号 - 窗口序号(从1开始)
返回值
查看返回值表
像素格式:
\n1字节对齐\n单个数据#pragmapack(1)typedefstructMYA8R8G8B8{BYTEm_a;\n透明值BYTEm_r;\n红色BYTEm_g;\n绿色BYTEm_b;\n蓝色MYA8R8G8B8(){m_a=0;m_r=0;m_g=0;m_b=0;}}MYA8R8G8B8;#pragmapack()
注意事项
json:
{\"error\":0,\"ret\":[{\"bRet\":1,\"addr\":XXX,\"eleSize\":YYY,\"allLen\":ZZZ,\"w\":1222,\"h\":699}]}
XXX是BMP图片二进制数据首地址
YYY是MYA8R8G8B8结构体数量
ZZZ:BMP图片数据大小(真实的BMP图片数据:54+像素数据)
图片数据地址不使用了记得释放掉HCCS_FreeMemPool调用此接口
HD截图_释放数据 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_释放数据 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HCCS_GetCaptureBmpRangeData
描述
获取当前截图后的BMP数据(指定范围)
原型
__int64 __stdcall HCCS_GetCaptureBmpRangeData(__int32 窗口序号,__int32 X,__int32 Y,__int32 宽度,__int32 高度);
参数
__int32 窗口序号 - 窗口序号(从1开始)
__int32 Y - 矩形范围左上角y-1表示0坐标
__int32 宽度 - 矩形范围宽度-1表示最大宽度
__int32 高度 - 矩形范围高度-1表示最大高度
返回值
查看返回值表
像素格式:
\n1字节对齐\n单个数据#pragmapack(1)typedefstructMYA8R8G8B8{BYTEm_a;\n透明值BYTEm_r;\n红色BYTEm_g;\n绿色BYTEm_b;\n蓝色MYA8R8G8B8(){m_a=0;m_r=0;m_g=0;m_b=0;}}MYA8R8G8B8;#pragmapack()
注意事项
如果想获取全图数据:xywh可以分别为-1也可以直接调用HCCS_GetCaptureBmpData
json:
{\"error\":0,\"ret\":[{\"bRet\":1,\"addr\":XXX,\"eleSize\":YYY,\"allLen\":ZZZ,\"w\":1222,\"h\":699}]}
XXX是BMP图片二进制数据首地址
YYY是MYA8R8G8B8结构体数量
ZZZ:BMP图片数据大小(真实的BMP图片数据:54+像素数据)
图片数据地址不使用了记得释放掉HCCS_FreeMemPool调用此接口
HCCS_GetCaptureBmpRangeData - 基础示例
.版本 2
.子程序 _获取扩展像素颜色示例
.局部变量 窗口序号, 整数型
.局部变量 颜色信息, 文本型
.局部变量 X坐标, 整数型
.局部变量 Y坐标, 整数型
.局部变量 颜色模式, 整数型
窗口序号 = 0
X坐标 = 100
Y坐标 = 100
' 确保截图功能已开启
.如果 (HD截图_获取截图状态 (窗口序号) ≠ 1)
.如果 (HD截图_打开 (窗口序号) = 假)
调试输出 ("截图功能开启失败")
返回 (假)
.如果结束
HD系统_延时 (300)
.如果结束
' 测试不同颜色模式
调试输出 ("正在获取坐标(" + 到文本 (X坐标) + ", " + 到文本 (Y坐标) + ")的像素颜色")
' 模式0:基础RGB颜色
颜色模式 = 0
颜色信息 = HD截图_获取像素颜色Ex (窗口序号, X坐标, Y坐标, 颜色模式)
.如果 (颜色信息 ≠ "")
调试输出 ("基础RGB颜色: " + 颜色信息)
.否则
调试输出 ("基础RGB颜色获取失败")
.如果结束
' 模式1:扩展颜色信息
颜色模式 = 1
颜色信息 = HD截图_获取像素颜色Ex (窗口序号, X坐标, Y坐标, 颜色模式)
.如果 (颜色信息 ≠ "")
调试输出 ("扩展颜色信息: " + 颜色信息)
.否则
调试输出 ("扩展颜色信息获取失败")
.如果结束
' 测试多个坐标点
.局部变量 i, 整数型
.计次循环首 (5, i)
X坐标 = 50 + i × 100
Y坐标 = 50 + i × 50
颜色信息 = HD截图_获取像素颜色Ex (窗口序号, X坐标, Y坐标, 1)
.如果 (颜色信息 ≠ "")
调试输出 ("坐标(" + 到文本 (X坐标) + ", " + 到文本 (Y坐标) + ") 颜色: " + 颜色信息)
.如果结束
HD系统_延时 (100)
.计次循环尾 ()
HCCS_GetCaptureBmpRangeData - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HCCS_GetCaptureBmpRangeData - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_释放内存池数据
描述
释放内存
原型
__int64 __stdcall HCCS_FreeArray(void* addr);
参数
void addr - 需要释放的地址
返回值
查看返回值表
注意事项
释放内存该内存是使用new[]申请的内存
HD截图_释放内存池数据 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_释放内存池数据 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD截图_是否后台缓存失败
描述
释放内存,内存池操作释放内存
原型
__int64 __stdcall HCCS_FreeMemPool(__int32 窗口序号,void* addr);
参数
__int32 窗口序号 - index
void addr - 需要释放的地址
返回值
查看返回值表
注意事项
我们获取了截图数据不需要了都需要调用这个接口来释放掉,防止内存泄露
注意:该接口是释放【使用内存池申请的内存地址】的地址,与HCCS_FreeArray不一样
那个窗口序号返回申请的地址就用那个窗口序号释放
HD截图_是否后台缓存失败 - 基础示例
.版本 2
.子程序 _浮点转换示例
.局部变量 浮点值, 小数型
.局部变量 整数表示, 长整数型
.局部变量 还原值, 小数型
浮点值 = 1.5 ' 要转换的浮点数
' 浮点数转整数表示
整数表示 = HD内存_浮点转浮点整数 (浮点值)
调试输出 ("浮点数" + 到文本 (浮点值) + "的整数表示: " + 到文本 (整数表示))
调试输出 ("十六进制表示: 0x" + 到十六进制 (整数表示))
' 整数表示还原为浮点数
还原值 = HD内存_浮点整数转浮点数 (整数表示)
调试输出 ("还原后的浮点数: " + 到文本 (还原值))
' 验证转换准确性
.如果 (绝对值 (还原值 - 浮点值) < 0.000001)
调试输出 ("转换准确")
.否则
调试输出 ("转换有误差")
.如果结束
HD截图_是否后台缓存失败 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD截图_是否后台缓存失败 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HCCS_IsCaptureValid
描述
后台截图缓存获取失败判断接口
原型
__int64 __stdcall HCCS_IsCaptureValid(__int64 ret);
参数
__int64 ret - 传递的返回值 必须是识别截图相关的接口返回的
返回值
查看返回值表
返回1表示:后台截图数据获取失败,进一步表示不是识别找不到,需要开发者再次调用相关识别接口
返回0表示:识别没有找到
注意事项
无
HCCS_IsCaptureValid - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HCCS_IsCaptureValid - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")