|
本帖最后由 逆神者一方 于 2024-9-5 12:08 编辑
精易模块函数:图片_屏幕区域截图 模块版本:11.1.5,虽不是最新版本,但看后续并没有修改这个函数,bug应该还存在,这个会造成低概率数组越界导致程序崩溃!说是低概率实际应该是截取小区域导致字节集过少,而模块内部使用了数组方式获取字节集的位置造成的,经测试,报错时字节集的长度出现过32和40,报错代码行:
》
》 如果 (GetDIBits2 (目标场景, 位图句柄, 0, 欲截取的高度, Data [BitmapHead.biSize + 1], Data [1], 0) ≠ 0)
》
其中的Data [BitmapHead.biSize + 1]报错,数组越界,应该加个判断如下:
》
》size = 取字节集长度 (Data)
》if (size ≥ BitmapHead.biSize + 1){
》 如果 (GetDIBits2 (目标场景, 位图句柄, 0, 欲截取的高度, Data [BitmapHead.biSize + 1], Data [1], 0) ≠ 0)
》 ....
》}else if(size > 0){
》 如果 (GetDIBits2 (目标场景, 位图句柄, 0, 欲截取的高度, Data [size], Data [1], 0) ≠ 0)
》 ....
》}else{
》 Data = { }
》}
》
写的这个代码仅用作参考,我并不清楚Data [BitmapHead.biSize + 1]的作用就写了Data [size],不过写之后再没有报错了
|
|