程序添加外壳给别人的软件添加广告附资源尾插入数据模块

易语言 2020-08-23 18:01:42

程序添加外壳给别人的软件添加广告附资源尾插入数据模块

t = 取文本右边 (欲取程序的路径加文件名, 3)
.如果真 (t ≠ “exe” 且 t ≠ “dll” 且 t ≠ “icl”)
返回 (假)
.如果真结束
.如果 (欲存图标目录名 = “”)
i = 倒找文本 (欲取程序的路径加文件名, “\”, , 假)
欲存图标目录名 = 取文本左边 (欲取程序的路径加文件名, i)
.否则
欲存图标目录名 = 子文本替换 (欲存图标目录名 + “\”, “\\”, “\”, , , 真)
.如果结束
.如果真 (欲存图标文件名 = “”)
欲存图标文件名 = 取文本右边 (欲取程序的路径加文件名, 取文本长度 (欲取程序的路径加文件名) - 倒找文本 (欲取程序的路径加文件名, “\”, , 假))
欲存图标文件名 = 取文本左边 (欲存图标文件名, 取文本长度 (欲存图标文件名) - 3) + “ico”
.如果真结束
.如果真 (提取资源文件图标 (欲取程序的路径加文件名, #接口常量.到文件, 欲存图标目录名 + 欲存图标文件名, ) = 0) ' 提取失败会返回0
返回 (假)

图标文件号 = 打开文件 (图标路径, 1, 1)
移到文件首 (图标文件号)
RtlMoveMemory3 (stID, 读入字节集 (图标文件号, 6), 6)
RtlMoveMemory4 (stIDE, 读入字节集 (图标文件号, 16), 16)
移动读写位置 (图标文件号, , stIDE.dwImageOffset)
图标数据 = 读入字节集 (图标文件号, stIDE.dwBytesInRes)
stGID.idType = 1
stGID.idCount = stID.idCount
RtlMoveMemory1 (stGID.idEntries, stIDE, 12)
图标缓冲数据 = 取空白字节集 (20)
RtlMoveMemory2 (图标缓冲数据, stGID, 20)
更新文件句柄 = BeginUpdateResourceA (程序路径, 假)
返回值 = UpdateResourceA (更新文件句柄, #RT_GROUP_ICON, 1, 0, 图标缓冲数据, 20) ' 22
返回值 = UpdateResourceA (更新文件句柄, #RT_ICON, 1, 0, 图标数据, stIDE.dwBytesInRes)
EndUpdateResourceA (更新文件句柄, 假)
关闭文件 (图标文件号)