易语言如何实现修改软件版权信息的工具

发布时间:2021-06-11 15:15:29 作者:小新
来源:亿速云 阅读:258

小编给大家分享一下易语言如何实现修改软件版权信息的工具,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

DLL命令表

.版本 2
.DLL命令 BeginUpdateResource, 整数型, , "BeginUpdateResourceA"
  .参数 pFileName, 文本型
  .参数 bDeleteExistingResources, 逻辑型
.DLL命令 EndUpdateResource, 逻辑型, , "EndUpdateResourceA"
  .参数 hUpdate, 整数型
  .参数 fDiscard, 逻辑型
.DLL命令 UpdateResource, 逻辑型, , "UpdateResourceA"
  .参数 hUpdate, 整数型
  .参数 lpType, 整数型
  .参数 lpName, 整数型
  .参数 wLanguage, 整数型
  .参数 lpData, 字节集
  .参数 cbData, 整数型
.DLL命令 CopyMemory_vf, , , "RtlMoveMemory"
  .参数 Destination, 字节集
  .参数 Source, VS_FIXEDFILEINFO
  .参数 cbCopy, 整数型
.DLL命令 MultiByteToWideChar, 整数型, , "MultiByteToWideChar"
  .参数 CodePage, 整数型
  .参数 dwFlags, 整数型
  .参数 lpMultiByteStr, 文本型
  .参数 cchMultiByte, 整数型
  .参数 lpWideCharStr, 字节集
  .参数 cchWideChar, 整数型

常量数据表

.版本 2
.常量 版本信息, "<文本长度: 537>"

自定义数据类型表

.版本 2
.数据类型 VS_FIXEDFILEINFO
  .成员 dwSignature, 整数型
  .成员 dwStrucVersion, 整数型
  .成员 dwFileVersionMS, 整数型
  .成员 dwFileVersionLS, 整数型
  .成员 dwProductVersionMS, 整数型
  .成员 dwProductVersionLS, 整数型
  .成员 dwFileFlagsMask, 整数型
  .成员 dwFileFlags, 整数型
  .成员 dwFileOS, 整数型
  .成员 dwFileType, 整数型
  .成员 dwFileSubtype, 整数型
  .成员 dwFileDateMS, 整数型
  .成员 dwFileDateLS, 整数型
.数据类型 版权信息型, 公开
  .成员 公司, 文本型
  .成员 描述, 文本型
  .成员 文件版本, 文本型
  .成员 内部名称, 文本型
  .成员 版权, 文本型
  .成员 源文件名, 文本型
  .成员 产品名称, 文本型
  .成员 产品版本, 文本型

修改EXE属性版权信息

.版本 2
.支持库 edroptarget
.程序集 窗口程序集1
.子程序 修改版权信息, , 公开, 修改指定EXE文件版权信息
.参数 文件名, 文本型
.参数 版本信息, 版权信息型
.局部变量 更新句柄, 整数型
.局部变量 版本信息数据, 字节集
.局部变量 文件数据, 字节集
.局部变量 检查后文件数据, 字节集
.局部变量 尾部数据, 字节集
.局部变量 版本信息内容, 文本型
文件数据 = 读入文件 (文件名)
' 先更新一下文件,如果是独立编译的易程序,会丢失后面的数据
更新句柄 = BeginUpdateResource (文件名, 假)
EndUpdateResource (更新句柄, 假)
版本信息内容 = #版本信息
版本信息内容 = 子文本替换 (版本信息内容, “公司”, 版本信息.公司, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “描述”, 版本信息.描述, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “版权”, 版本信息.版权, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “文件版本”, 版本信息.文件版本, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “内部名称”, 版本信息.内部名称, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “源文件名”, 版本信息.源文件名, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “产品名称”, 版本信息.产品名称, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “产品版本”, 版本信息.产品版本, , , 真)
版本信息数据 = 从文本转换版本信息 (版本信息内容)
检查后文件数据 = 读入文件 (文件名)
.判断开始 (取字节集长度 (检查后文件数据) = 取字节集长度 (文件数据))
  更新句柄 = BeginUpdateResource (文件名, 假)
  UpdateResource (更新句柄, 16, 1, 2052, 版本信息数据, 取字节集长度 (版本信息数据))
  EndUpdateResource (更新句柄, 假)
.判断 (取字节集长度 (检查后文件数据) < 取字节集长度 (文件数据))
  尾部数据 = 取字节集右边 (文件数据, 取字节集长度 (文件数据) - 取字节集长度 (检查后文件数据))
  更新句柄 = BeginUpdateResource (文件名, 假)
  UpdateResource (更新句柄, 16, 1, 2052, 版本信息数据, 取字节集长度 (版本信息数据))
  EndUpdateResource (更新句柄, 假)
  写到文件 (文件名, 读入文件 (文件名) + 尾部数据)
.默认
.判断结束
.子程序 获取下一行, 逻辑型
.参数 文本, 文本型, 参考
.参数 行文本数组, 文本型, 参考 数组
.参数 索引, 整数型, 参考
.如果真 (取数组成员数 (行文本数组) ≥ 索引)
  文本 = 行文本数组 [索引]
  索引 = 索引 + 1
  返回 (真)
.如果真结束
返回 (假)
.子程序 从文本转换版本信息, 字节集
.参数 文本版本信息, 文本型
.局部变量 行_文本, 文本型
.局部变量 行_类型, 文本型
.局部变量 文本数组, 文本型, , "0"
.局部变量 位置1, 整数型
.局部变量 vf, VS_FIXEDFILEINFO
.局部变量 数据, 字节集
.局部变量 行_数组, 文本型, , "0"
.局部变量 索引, 整数型
.局部变量 字节集, 字节集
行_数组 = 分割文本 (文本版本信息, #换行符, )
索引 = 1
vf.dwSignature = -17890115
vf.dwStrucVersion = 1
vf.dwFileFlagsMask = 63
.判断循环首 (获取下一行 (行_文本, 行_数组, 索引))
  行_类型 = 获取行类型 (行_文本)
  .判断开始 (行_类型 = “FILEVERSION”)
    位置1 = 寻找文本 (行_文本, “ ”, , 假)
    文本数组 = 分割文本 (My删首尾空 (取文本右边 (行_文本, 取文本长度 (行_文本) - 位置1)), “,”, )
    .如果真 (取数组成员数 (文本数组) ≥ 4)
      vf.dwFileVersionMS = 位或 (到整数 (文本数组 [2]), 左移 (到整数 (文本数组 [1]), 16))
      vf.dwFileVersionLS = 位或 (到整数 (文本数组 [4]), 左移 (到整数 (文本数组 [3]), 16))
    .如果真结束
  .判断 (行_类型 = “PRODUCTVERSION”)
    位置1 = 寻找文本 (行_文本, “ ”, , 假)
    文本数组 = 分割文本 (My删首尾空 (取文本右边 (行_文本, 取文本长度 (行_文本) - 位置1)), “,”, )
    .如果真 (取数组成员数 (文本数组) ≥ 4)
      vf.dwProductVersionMS = 位或 (到整数 (文本数组 [2]), 左移 (到整数 (文本数组 [1]), 16))
      vf.dwProductVersionLS = 位或 (到整数 (文本数组 [4]), 左移 (到整数 (文本数组 [3]), 16))
    .如果真结束
  .判断 (行_类型 = “FILEOS”)
    位置1 = 寻找文本 (行_文本, “ ”, , 假)
    vf.dwFileOS = 十六到十 (My删首尾空 (取文本右边 (行_文本, 取文本长度 (行_文本) - 位置1)))
  .判断 (行_类型 = “FILETYPE”)
    位置1 = 寻找文本 (行_文本, “ ”, , 假)
    vf.dwFileType = 十六到十 (My删首尾空 (取文本右边 (行_文本, 取文本长度 (行_文本) - 位置1)))
  .判断 (行_类型 = “{”)
    跳出循环 ()
  .默认
  .判断结束
.判断循环尾 ()
数据 = 取空白字节集 (13 × 4)
CopyMemory_vf (数据, vf, 13 × 4)
字节集 = { 0, 0, 52, 0, 0, 0, 86, 0, 83, 0, 95, 0, 86, 0, 69, 0, 82, 0, 83, 0, 73, 0, 79, 0, 78, 0, 95, 0, 73, 0, 78, 0, 70, 0, 79, 0, 0, 0, 0, 0 } + 数据
分析BLOCK (字节集, 行_数组, 索引)
字节集 = 字节集替换 (字节集, 1, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (字节集))))
返回 (字节集)
.子程序 分析BLOCK
.参数 字节集, 字节集
.参数 行文本数组, 文本型, 参考 数组
.参数 索引, 整数型, 参考
.局部变量 行_文本, 文本型
.局部变量 行_类型, 文本型
.局部变量 sizeaoffset, 整数型
.局部变量 a
.判断循环首 (获取下一行 (行_文本, 行文本数组, 索引))
  行_类型 = 获取行类型 (行_文本)
  .判断开始 (行_类型 = “BLOCK”)
    sizeaoffset = 取字节集长度 (字节集) + 1 ' 记录该BLOCK的起始位置
    字节集 = 字节集 + MAKEBLOCK (行_文本) ' 建立BLOCK字节集,并与之前的字节集合并
    分析BLOCK (字节集, 行文本数组, 索引)
    字节集 = 字节集替换 (字节集, sizeaoffset, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (字节集) - sizeaoffset + 1))) ' 把字节集长度写回该BLOCK的起始位置
    a = 1
  .判断 (行_类型 = “VALUE”)
    字节集 = 字节集 + MAKEVALUE (行_文本) ' 建立VALUE字节集,并与之前的字节集合并
  .判断 (行_类型 = “}”)
    返回 ()
  .默认
  .判断结束
.判断循环尾 ()
.子程序 MAKEVALUE, 字节集
.参数 VALUE, 文本型
.局部变量 位置_左引号, 整数型
.局部变量 位置_右引号, 整数型
.局部变量 位置_逗号, 整数型
.局部变量 文本, 文本型
.局部变量 数据, 字节集
.局部变量 数据2, 字节集
.局部变量 文本数组, 文本型, , "0"
位置_逗号 = 寻找文本 (VALUE, “,”, , 假)
位置_右引号 = 倒找文本 (VALUE, #引号, 位置_逗号, 假)
位置_左引号 = 寻找文本 (VALUE, #引号, , 假)
.如果真 (取文本中间 (VALUE, 位置_左引号 + 1, 位置_右引号 - 位置_左引号 - 1) = “Translation”)
  ' 第1、2字节用于占用,待分析结束后,把数据的长度数值写回第1、2字节
  数据 = { 0, 0, 0, 0, 1, 0 } + 转换Ansi转Unicode (取文本中间 (VALUE, 位置_左引号 + 1, 位置_右引号 - 位置_左引号 - 1))
  .如果真 (取字节集长度 (数据) % 4 ≠ 0)
    数据 = 数据 + 取空白字节集 (4 - 取字节集长度 (数据) % 4)
  .如果真结束
  文本 = My删首尾空 (取文本右边 (VALUE, 取文本长度 (VALUE) - 位置_逗号))
  文本数组 = 分割文本 (文本, “ ”, )
  .如果真 (取数组成员数 (文本数组) ≥ 2)
    数据2 = 到字节集 (到短整数 (十六到十 (文本数组 [1]))) + 到字节集 (到短整数 (十六到十 (文本数组 [2])))
    数据 = 字节集替换 (数据, 3, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (数据2)))) 
    数据 = 数据 + 数据2
    返回 (字节集替换 (数据, 1, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (数据)))))
  .如果真结束
  返回 ({ })
.如果真结束
' 第1、2字节用于占用,待分析结束后,把数据的长度数值写回第1、2字节
数据 = { 0, 0, 0, 0, 1, 0 } + 转换Ansi转Unicode (取文本中间 (VALUE, 位置_左引号 + 1, 位置_右引号 - 位置_左引号 - 1))
.如果真 (取字节集长度 (数据) % 4 ≠ 0)
  数据 = 数据 + 取空白字节集 (4 - 取字节集长度 (数据) % 4)
.如果真结束
位置_左引号 = 寻找文本 (VALUE, #引号, 位置_逗号, 假)
位置_右引号 = 倒找文本 (VALUE, #引号, , 假)
数据2 = 转换Ansi转Unicode (取文本中间 (VALUE, 位置_左引号 + 1, 位置_右引号 - 位置_左引号 - 1))
.如果真 (取字节集长度 (数据2) % 4 ≠ 0)
  数据2 = 数据2 + 取空白字节集 (4 - 取字节集长度 (数据2) % 4)
.如果真结束
数据 = 字节集替换 (数据, 3, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (数据2) ÷ 2)))
数据 = 数据 + 数据2
返回 (字节集替换 (数据, 1, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (数据)))))
.子程序 转换Ansi转Unicode, 字节集, 公开, 将Ansi码转换为Unicode码 (返回转换后的字节集)
.参数 Ansi, 文本型, , 欲转换的Ansi文本
.局部变量 数据2, 字节集
.局部变量 长度
.如果真 (Ansi = “”)
  返回 ({ 0, 0 })
.如果真结束
长度 = MultiByteToWideChar (0, 0, Ansi, 取文本长度 (Ansi) + 1, 数据2, 0)
数据2 = 取空白字节集 (长度 × 2)
MultiByteToWideChar (0, 0, Ansi, 取文本长度 (Ansi) + 1, 数据2, 长度 × 2)
返回 (数据2)
.子程序 MAKEBLOCK, 字节集
.参数 BLOCK, 文本型
.局部变量 位置1, 整数型
.局部变量 位置2, 整数型
.局部变量 数据, 字节集
位置1 = 寻找文本 (BLOCK, #引号, , 假)
位置2 = 倒找文本 (BLOCK, #引号, , 假)
' 第1、2字节用于占用,待分析结束后,把数据的长度数值写回第1、2字节
数据 = { 0, 0, 0, 0, 1, 0 } + 转换Ansi转Unicode (取文本中间 (BLOCK, 位置1 + 1, 位置2 - 位置1 - 1))
.如果真 (取字节集长度 (数据) % 4 ≠ 0)
  数据 = 数据 + 取空白字节集 (4 - 取字节集长度 (数据) % 4)
.如果真结束
返回 (数据)
.子程序 十六到十, 整数型, 公开, 将十六进制转换成十进制(返回十进制文本)
.参数 十六进制文本, 文本型, , 待转换的十六进制文本
.参数 返回结果, 文本型, 参考 可空, 返回文本结果(如十进制数超出整数范围,可通过返回结果获得十进制文本)
.局部变量 中间文本, 文本型
.局部变量 结果, 长整数型
.局部变量 容器1, 整数型
返回结果 = “”
.变量循环首 (1, 取文本长度 (十六进制文本), 1, 容器1)
  中间文本 = 取文本中间 (十六进制文本, 容器1, 1)
  结果 = (寻找文本 (“0123456789ABCDEF”, 中间文本, , 真) - 1) × 求次方 (16, 取文本长度 (十六进制文本) - 容器1) + 结果
.变量循环尾 ()
.如果真 (是否为空 (返回结果) = 假)
  返回结果 = 到文本 (结果)
.如果真结束
返回 (结果)
.子程序 My删首尾空, 文本型
.参数 文本, 文本型
.局部变量 字节集, 字节集
.局部变量 n, 整数型
.局部变量 pos1, 整数型
.局部变量 pos2, 整数型
字节集 = 到字节集 (文本)
.变量循环首 (1, 取字节集长度 (字节集), 1, n)
  .如果真 (字节集 [n] ≠ #空格键 且 字节集 [n] ≠ #Tab键)
    pos1 = n
    跳出循环 ()
  .如果真结束
.变量循环尾 ()
.变量循环首 (取字节集长度 (字节集), 1, -1, n)
  .如果真 (字节集 [n] ≠ #空格键 且 字节集 [n] ≠ #Tab键)
    pos2 = n
    跳出循环 ()
  .如果真结束
.变量循环尾 ()
返回 (取文本中间 (文本, pos1, pos2 - pos1 + 1))
.子程序 获取行类型, 文本型
.参数 行文本, 文本型
行文本 = My删首尾空 (行文本)
.判断开始 (取文本左边 (行文本, 1) = “{”)
  返回 (“{”)
.判断 (取文本左边 (行文本, 1) = “}”)
  返回 (“}”)
.判断 (取文本左边 (行文本, 5) = “BLOCK”)
  返回 (“BLOCK”)
.判断 (取文本左边 (行文本, 5) = “VALUE”)
  返回 (“VALUE”)
.判断 (取文本左边 (行文本, 取文本长度 (“FILEVERSION”)) = “FILEVERSION”)
  返回 (“FILEVERSION”)
.判断 (取文本左边 (行文本, 取文本长度 (“PRODUCTVERSION”)) = “PRODUCTVERSION”)
  返回 (“PRODUCTVERSION”)
.判断 (取文本左边 (行文本, 取文本长度 (“FILEOS”)) = “FILEOS”)
  返回 (“FILEOS”)
.判断 (取文本左边 (行文本, 取文本长度 (“FILETYPE”)) = “FILETYPE”)
  返回 (“FILETYPE”)
.默认
.判断结束
返回 (“”)
.子程序 __启动窗口_创建完毕
拖放对象1.注册拖放控件 (_启动窗口.取窗口句柄 ())
.子程序 _拖放对象1_得到文件
.参数 接收到的文件路径, 文本型
编辑框_路径.内容 = 接收到的文件路径
.子程序 版权
.局部变量 版权, 版权信息型
.局部变量 文件名, 文本型
版权.公司 = 编辑框_公司.内容
版权.描述 = 编辑框_描述.内容
版权.版权 = 编辑框_版权.内容
版权.文件版本 = 编辑框_版本.内容
版权.源文件名 = 编辑框_源文件名.内容
版权.内部名称 = 编辑框_内部名.内容
版权.产品名称 = 编辑框_产品名.内容
版权.产品版本 = 编辑框_产品版本.内容
修改版权信息 (编辑框_路径.内容, 版权)
信息框 (“修改完成..”, 64, “提示”)
.子程序 _设置按钮_被单击
版权 ()

运行结果:

易语言如何实现修改软件版权信息的工具

以上是“易语言如何实现修改软件版权信息的工具”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. 易语言如何输入或修改名称
  2. 易语言修改标签标题方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

易语言

上一篇:Android中怎么实现视屏悬浮窗效果

下一篇:JAVA中怎么导出EXCEL表格

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》