|

楼主 |
发表于 昨天 15:05
|
显示全部楼层
湖北省黄石市
本帖最后由 斗战胜猴 于 2025-6-26 16:11 编辑
窗口65552的的矩形是1920*1080 宽高再大 点阵颜色也不会超多这个,也是画布的大小,你说的副屏 需要定义一个初始化4000*4000的位图,这样就可以把副屏的图像搞出来了,每次截图 先刷新 再复制出来
就像这样的就能截取副屏了,不过需要你自定义副屏宽高,,偏移可以维持原先的
窗口程序集名 | 保 留 | 保 留 | 备 注 | (未填写程序集名) | | | | 变量名 | 类 型 | 数组 | 备 注 | 变量名 | 类 型 | 数组 | 备 注 | 集_窗口宽度2K | 整数型 | | 集_窗口高度2K | 整数型 | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | Rect | RECT | | | 局_指针 | 整数型 | | |
如果真 (集_窗口设备DC ≠ 0 ) 调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“user32.dll”), “ReleaseDC”), , , 集_窗口句柄, 集_窗口设备DC ) 调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”), “DeleteDC”), , , 集_窗口场景句柄 ) 调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”), “DeleteObject”), , , 集_窗口位图句柄 )集_窗口句柄 = 参_窗口句柄调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“user32.dll”), “GetWindowDC”), , 集_窗口设备DC, 参_窗口句柄 )集_窗口宽度2K = 参_宽度 集_窗口高度2K = 参_高度 集_位图点阵长度 = 位图_取颜色数据长度 (集_窗口宽度2K, 集_窗口高度2K, 24 )集_窗口位图 = { 66, 77, 54, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 14, 0, 0, 196, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + 取空白字节集 (集_位图点阵长度 )局_指针 = PtrBin (集_窗口位图 )集_窗口位图信息指针 = 局_指针 + 14 集_窗口位图颜色指针 = 局_指针 + 54 PtrSetInt (局_指针, 2, 54 + 集_位图点阵长度 )PtrSetInt (局_指针, 18, 集_窗口宽度2K )PtrSetInt (局_指针, 22, 集_窗口高度2K )PtrSetInt (局_指针, 34, 集_位图点阵长度 )调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”), “CreateCompatibleDC”), , 集_窗口场景句柄, 0 )调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”), “CreateDIBSection”), , 集_窗口位图句柄, 集_窗口场景句柄, 集_窗口位图信息指针, 0, PtrInt (集_位图点阵指针 ), 0, 0 )调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”), “SelectObject”), , , 集_窗口场景句柄, 集_窗口位图句柄 )调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“user32.dll”), “PrintWindow”), , , 参_窗口句柄, 集_窗口场景句柄, 0 ) |
截图2K | 字节集 | | |
参_窗口句柄 | 整数型 | | | | 参_起点X | 整数型 | | | | 参_起点Y | 整数型 | | | | 参_宽度 | 整数型 | | | | 参_高度 | 整数型 | | | | 参_宽度2K | 整数型 | | | | 参_高度2K | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_BitX | 整数型 | | | 局_BitY | 整数型 | | | 局_窗口宽度新 | 整数型 | | | 局_窗口高度新 | 整数型 | | | 局_指针 | 整数型 | | | 局_位图点阵长度 | 整数型 | | |
参_窗口句柄 = 选择 (参_窗口句柄 = 0, 65552, 参_窗口句柄 ) 如果 (集_窗口设备DC = 0 或 参_窗口句柄 ≠ 集_窗口句柄 或 集_窗口宽度2K = 0 或 集_窗口高度2K = 0 ) 初始化窗口2K (参_窗口句柄, 选择 (参_宽度2K > 0, 参_宽度2K, 2560 ), 选择 (参_宽度2K > 0, 参_宽度2K, 1440 ))  如果真 (参_宽度2K > 集_窗口宽度2K 或 参_高度2K > 集_窗口高度2K ) 初始化窗口2K (参_窗口句柄, 选择 (参_宽度2K > 0, 参_宽度2K, 2560 ), 选择 (参_宽度2K > 0, 参_宽度2K, 1440 )) 局_窗口宽度新 = 选择 (参_宽度 = 0, 集_窗口宽度2K, 参_宽度)局_窗口高度新 = 选择 (参_高度 = 0, 集_窗口高度2K, 参_高度 )局_BitX = 参_起点X 局_BitY = 参_起点Y 调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”), “BitBlt”), , , 集_窗口场景句柄, 0, 0, 局_窗口宽度新, 局_窗口高度新, 集_窗口设备DC, 局_BitX, 局_BitY, 13369376 ) 如果真 (局_窗口宽度新 = 集_窗口宽度2K 且 局_窗口高度新 = 集_窗口高度2K ) RtlMoveMemory_整数型 (集_窗口位图颜色指针, 集_位图点阵指针, 集_位图点阵长度 ) 返回 (集_窗口位图 ) 如果 (局_窗口宽度新 = 集_窗口宽度新 且 局_窗口高度新 = 集_窗口高度新 )  集_窗口宽度新 = 局_窗口宽度新  集_窗口高度新 = 局_窗口高度新  局_位图点阵长度 = 位图_取颜色数据长度 (局_窗口宽度新, 局_窗口高度新, 24 ) 集_窗口位图新 = { 66, 77, 54, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 14, 0, 0, 196, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + 取空白字节集 (局_位图点阵长度 ) 局_指针 = PtrBin (集_窗口位图新 ) 集_窗口位图信息数据指针新 = 局_指针 + 14  集_窗口位图颜色数据指针新 = 局_指针 + 54 PtrSetInt (局_指针, 2, 54 + 局_位图点阵长度 ) PtrSetInt (局_指针, 18, 局_窗口宽度新 ) PtrSetInt (局_指针, 22, 局_窗口高度新 ) PtrSetInt (局_指针, 34, 局_位图点阵长度 )调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”), “GetDIBits”), , , 集_窗口场景句柄, 集_窗口位图句柄, 0, 集_窗口高度新, 集_窗口位图颜色数据指针新, 集_窗口位图信息数据指针新, 0)返回 (集_窗口位图新 ) |
|